Ich habe jetzt den merkwürdigen Fall, daß der Kollege mir einen Satz vorlegt, den es gar nicht gibt

Wie kann das sein??
Code: Alles auswählen
FMMenu.SQLQuery1.SQL.Text:='SELECT * FROM artikel where aktiv=1 ORDER BY nr;';
FMMenu.SQLQuery1.open;
while StrToInt(StrArtNr)<StrToInt(EdtArtNr.Text) do
begin
StrArtNr:=FMMenu.SQLQuery1.FieldByName('Nr').AsString;
StrArtBez:=FMMenu.SQLQuery1.FieldByName('Bez').AsString;
showmessage(StrArtNr+' '+EDTArtNr.Text);
if StrArtNr=EdtArtNr.Text
then Fehlermeldung(3)
else FMMenu.SQLQuery1.Next;
end;
Dazu gibt es von mir schon einige Infos und wenn sowas vorkommt höre ich zu posten auf.SELECT * FROM
SELECT Nr, Bez FROM artikel where aktiv=1 ORDER BY nr;
Code: Alles auswählen
while StrToInt(StrArtNr)<StrToInt(EdtArtNr.Text) do
Code: Alles auswählen
while not SQLQuery1.EOF do
begin
Tuwas;
SQLQuery1.Next;
end;
Code: Alles auswählen
procedure TFMArtikel.BTSpeichernClick(Sender: TObject);
begin
if (EDTArtBez.Text<>'')
then begin
case Modus of
1: begin
//Speichern eines neuen Artikels
if EDTArtNr.Text<>''
then begin
if CBArtzugGrp.ItemIndex<>-1
then begin
StrArtNr:='0';
//Test, ob die Artikelnnummer schon vorhanden ist
//in EdtArtNr.Text kann nur 0-9 enthalten (numerisches Feld)
FMMenu.SQLQuery1.SQL.Text:='SELECT * FROM artikel where aktiv=1 ORDER BY nr;';
FMMenu.SQLQuery1.open;
while StrToInt(StrArtNr)<StrToInt(EdtArtNr.Text) do
begin
[u] StrArtNr:=FMMenu.SQLQuery1.FieldByName('Nr').AsString;[/u]
if StrArtNr=EdtArtNr.Text
then Fehlermeldung(3)
else FMMenu.SQLQuery1.Next;
end;
FMMenu.SQLQuery1.close;
if StrToInt(StrArtNr)>StrToInt(EdtArtNr.Text) then
//Artikelnummer ist noch nicht vorhanden
begin
Komma(EdtArtaktEKP.text);
EDTArtaktEKP.Text:=PreisOut;
Komma(EdtArtaktVKP.text);
EDTArtaktVKP.Text:=PreisOut;
StrArtzugGrp:=IntToStr(CBArtzugGrp.ItemIndex);
StrArtStGrp:=IntToStr(CBArtStGrp.ItemIndex);
FMMenu.SQLQuery1.SQL.Text:='insert into artikel (nr,bez,anlg,zugGrp,stgrp,aktEKP,aktVKP,monums,jahresums,vormonums,vorjahresums, '+
'ekp1,ekp2,ekp3,ekp4,ekp5,vkp1,vkp2,vkp3,vkp4,vkp5, '+
'ekpgueab1,ekpgueab2,ekpgueab3,ekpgueab4,ekpgueab5, '+
'vkpgueab1,vkpgueab2,vkpgueab3,vkpgueab4,vkpgueab5,aktiv) '+
'VALUES ('''+EDTArtNr.Text+''','''+EDTArtBez.Text+''','''+EDTArtAnlg.Text+''','''+StrArtzugGrp+''','''+StrArtStGrp+''','''+EDTArtaktEKP.Text+''','''+EDTArtaktVKP.Text+''', '+
'0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1);';
FMMenu.SQLQuery1.execsql;
FMMenu.SQLTransaction1.Commit;
FMMenu.SQLQuery1.close;
Fehlermeldung(1);
FMMenu.SQLQuery1.SQL.Text:='select * from artikel order by nr;';
FMMenu.SQLQuery1.open;
LVAnzeigen;
Zeile_sichtbar(false);
end;
end
else Fehlermeldung(13);
end
else Fehlermeldung(12);
end;
Und 33 sind ja auch nicht die Welt, so ab 100 aufwärts wird es interessant. (Für normale Leute > wenn man Maschinenparameter speichert können da schon sehr breite Tabellen zwangsweise herauskommen). Man kann die Statements auch berechnen lassen und so den SQL zusammenbauen. Damit wird die Sache dynamischer und man braucht nicht alles schreiben, besonders dann wenn die Feldnamen einer Logik folgen.Joachim Raap hat geschrieben: Di 22. Nov 2022, 15:40 macht ihr das wirklich so, daß im select tatsächlich alle 33 Bezeichner gelistet werden??
Schau dir sein Beispiel ein paar Posts vorher an, dann siehst du das.gladio hat geschrieben: Mi 23. Nov 2022, 06:34 Nimmst du denn die gleiche SQLQuery1 für mehrere Datentabellen?