Einen wunderschönen...!
Habe ein Problem beim Zugriff auf eine AdoTable. Wenn ich in diese direkt über Delphi etwas einfügen will, so tritt die oben genannte Exception auf. Beim Einfügen wird sowohl direkt über Tabellen Zugriff, als auch über Queries Daten in die entsprechende Zeile eingefügt. Das Problem dabei ist, dass sich die die Table auf einem anderen Formular befindet und somit erstmal markiert und in den Editiermodus versetzt werden muss. Ich mache dass über Locate().
Hier der Quellcode:
//Kommission entfernen
SQLText := 'Update Bestellungen set Kommission = ''0'' ';
SQLText := SQLText + 'WHERE NOT EXISTS (SELECT Kommission FROM BestellArtikel ';
SQLText := SQLText + 'WHERE Kommission = ''1'' AND BestellArtikel.BestNr = :@lBestNr1) ';
SQLText := SQLText + 'AND Bestellungen.BestNr = :@lBestNr2';
dmLager.qrBestMenge.SQL.Text := SQLText;
dmLager.qrBestMenge.Parameters.ParamByName('@lBest Nr1').Value := bestellungsNr;
dmLager.qrBestMenge.Parameters.ParamByName('@lBest Nr2').Value := bestellungsNr;
dmLager.qrBestMenge.ExecSQL;
dmLager.qrBestMenge.Close;
//Zeile markieren und in den Editiermodus gehen
myBestNr := Copy('0000000' + IntToStr(bestellungsNR), Length(IntToStr(bestellungsNr)) + 1, 7);
if dmLager.tbBestellungen.Locate('BestNr', myBestNr, [loCaseInsensitive]) then
dmLager.tbBestellungen.Edit;
//Mitarbeiter
dmLager.tbBestellungen.FieldByName('MitarbName').V alue := UserName;
//Mandant
dmLager.tbBestellungen.FieldByName('Mandant').Valu e := Mainform.REGMANDANT_1;
//Filiale
dmLager.tbBestellungen.FieldByName('Filiale').Valu e := MainForm.REGFILIALE;
//LagerNr
dmLager.tbBestellungen.FieldByName('LagerNr').Valu e := dbedLagerNr.Text;
dmLager.tbBestellungen.Post;
//Fenster schließen
close;
Hat jemand vielleicht eine Idee, woran es liegen könnte?
Gruß,
Johannes
Habe ein Problem beim Zugriff auf eine AdoTable. Wenn ich in diese direkt über Delphi etwas einfügen will, so tritt die oben genannte Exception auf. Beim Einfügen wird sowohl direkt über Tabellen Zugriff, als auch über Queries Daten in die entsprechende Zeile eingefügt. Das Problem dabei ist, dass sich die die Table auf einem anderen Formular befindet und somit erstmal markiert und in den Editiermodus versetzt werden muss. Ich mache dass über Locate().
Hier der Quellcode:
//Kommission entfernen
SQLText := 'Update Bestellungen set Kommission = ''0'' ';
SQLText := SQLText + 'WHERE NOT EXISTS (SELECT Kommission FROM BestellArtikel ';
SQLText := SQLText + 'WHERE Kommission = ''1'' AND BestellArtikel.BestNr = :@lBestNr1) ';
SQLText := SQLText + 'AND Bestellungen.BestNr = :@lBestNr2';
dmLager.qrBestMenge.SQL.Text := SQLText;
dmLager.qrBestMenge.Parameters.ParamByName('@lBest Nr1').Value := bestellungsNr;
dmLager.qrBestMenge.Parameters.ParamByName('@lBest Nr2').Value := bestellungsNr;
dmLager.qrBestMenge.ExecSQL;
dmLager.qrBestMenge.Close;
//Zeile markieren und in den Editiermodus gehen
myBestNr := Copy('0000000' + IntToStr(bestellungsNR), Length(IntToStr(bestellungsNr)) + 1, 7);
if dmLager.tbBestellungen.Locate('BestNr', myBestNr, [loCaseInsensitive]) then
dmLager.tbBestellungen.Edit;
//Mitarbeiter
dmLager.tbBestellungen.FieldByName('MitarbName').V alue := UserName;
//Mandant
dmLager.tbBestellungen.FieldByName('Mandant').Valu e := Mainform.REGMANDANT_1;
//Filiale
dmLager.tbBestellungen.FieldByName('Filiale').Valu e := MainForm.REGFILIALE;
//LagerNr
dmLager.tbBestellungen.FieldByName('LagerNr').Valu e := dbedLagerNr.Text;
dmLager.tbBestellungen.Post;
//Fenster schließen
close;
Hat jemand vielleicht eine Idee, woran es liegen könnte?
Gruß,
Johannes
Comment