Hallo,
folgende Procedure:
Delphi-Quellcode:
procedure TForm1.ButtonMaterialSuchenClick(Sender: TObject);
var BestandMaterialNummer, BestandMaterial : real;
begin
Datamodule1.ADOQueryGejoliste.Close;
Datamodule1.ADOQueryGejoliste.SQL.Clear;
Datamodule1.ADOQueryGejoliste.SQL.Add('SELECT [Material-Stamm].[Mat-Nr], [Material-Stamm].Bezeichnung, [Material-Stamm].[Lieferant Bezeichnung], ');
Datamodule1.ADOQueryGejoliste.SQL.Add('[Material-Stamm].aktuell');
Datamodule1.ADOQueryGejoliste.SQL.Add('FROM [Material-Stamm]');
Datamodule1.ADOQueryGejoliste.SQL.Add('WHERE (([Material-Stamm].[Lieferanten-Nr]= ' + Lieferantennr.Text + ') AND ([Material-Stamm].aktuell= -1))');
Datamodule1.ADOQueryGejoliste.Open;
Datamodule1.ADOQueryGejoliste.Last;
Datamodule1.ADOQueryGejoliste.First;
BestandMaterial := 0;
while not Datamodule1.ADOQueryGejoliste.Eof do
begin
Datamodule1.ADOQueryRollenJoinLagerplatz.Active := False;
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Clear;
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('SELECT DISTINCTROW Materialrollen.[Arb-Breite], Materialrollen.lfm, Materialrollen.[Mat-Nr], ');
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('Materialrollen.Rollennummer, Materialrollen.Mutterrolle, Materialrollen.DatumAb, Materialrollen.GrundAb, ');
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('Materialrollen.DatumZu, Materialrollen.GrundZu, ');
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('Materialrollen.DatumWE, Rollenlager.Lagerplatz, RollenPlanung.Kommentar, RollenPlanung.AuftragPlanung, ');
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('RollenPlanung.RestLaenge, RollenPlanung.RestBreite FROM (Materialrollen LEFT JOIN Rollenlager ON ');
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('Materialrollen.Rollennummer = Rollenlager.Rollennummer) LEFT JOIN RollenPlanung ');
Datamodule1.ADOQueryRollenJoinLagerplatz.SQL.Add('ON Materialrollen.Rollennummer = RollenPlanung.Rollennummer where ((Materialrollen.[Mat-Nr] = ' + Datamodule1.ADOQueryGejolisteMatNr.AsString + ') and (Materialrollen.DatumAb is NULL) and (Materialrollen.[Arb-Breite] > 179))');
Datamodule1.ADOQueryRollenJoinLagerplatz.Open;
Datamodule1.ADOQueryRollenJoinLagerplatz.Last;
Datamodule1.ADOQueryRollenJoinLagerplatz.First;
BestandMaterialNummer := 0;
while not Datamodule1.ADOQueryRollenJoinLagerplatz.Eof do
begin
BestandMaterialNummer := BestandMaterialNummer + ((Datamodule1.ADOQueryRollenJoinLagerplatzArbBreite.AsInteger/1000) * Datamodule1.ADOQueryRollenJoinLagerplatzlfm.AsInteger);
Datamodule1.ADOQueryRollenJoinLagerplatz.Next;
end;
// ShowMessage('BestandMaterialNummer = ' + FloatToStr(BestandMaterialNummer));
Datamodule1.ADOQueryGejoliste.Edit;
Datamodule1.ADOQueryGejolisteBESTAND.AsFloat := BestandMaterialNummer;
Datamodule1.ADOQueryGejoliste.Post;
Datamodule1.ADOQueryGejoliste.Next;
end;
GridGejo.Visible := true;
end;
An Datamodule1.ADOQueryGejoliste hängt ein DBGrid an, mit folgenden Felder:
Mat-Nr:
Bezeichnung
Bestand
Das Feld "Bestand" ist ein 'Calculated-Feld' in Datamodule1.ADOQueryGejoliste. Die anderen Felder werden aus dem 1.-tem SELECT eingetragen.
Es funktioniert soweit fast alles, jedoch das 'Datamodule1.ADOQueryGejoliste.Post;' nicht, bzw. in der Tabelle 'GridGejo' kann ich es nicht sehen.
Gruß, Luckner