ich versuche mal mein Problem so gut wie es geht zu erklären. Ich habe schon seit bestimmt jetzt ein halbes Jahr eine DB (SQLite3) in benutzung. Ging immer tadelos. So ich wollte jetzt nun aber diese Tabelle mit Werten erweitern. Um ein Datenbank-Chaos zu vermeiden habe ich die hinten ran gesetzt an den letzten Datensatz ("datum5").
die Spalten sind also menge1 charge1 datum1 .... bla bla bla .... menge5 charge5 datum5 danach jetzt neu -> soll insgesamt einheit1...... einheit5
es sind nur Daten dazwischen geschoben in meiner Tabelle zum Ansehen aber in der DB ist alles Neue hinten dran. Nur habe ich jetzt das Problem das er Datum5 nicht mehr kennt!
als Fehler öffnet sich ein neues Fenster mit 000000010029B533 498b442420 mov 0x20(%r12),%rax
und vorher sagte er mir querymat: Field not found: "datum5"
Jetzt kommt der Witz dabei..... erschreibt es trotzdem an die richtige Stelle in der DB!!!!!

ich fühle mich da leicht verarscht.... ich habe nichts irgend wie geändert sondern alles neue nur hinten dran gesetzt. Da er es trotzdem in die Datenbank schreibt verstehe ich nicht warum er es denn nicht findet.
Wenn ich es editiere und abspeichere übernimmt er es ohne zu meckern aber sobald ich es neu anlege dann meckert er rum.
Seit 3 Tagen versuche ich nun den Fehler zu finden im Quelltext aber es ist nichts zu finden und wieso schreibt er trotzdem in die Datenbank?!
Code: Alles auswählen
//Parameter anlegen
Fstart.querymat.SQL.Clear;
Fstart.querymat.Params.Clear;
Fstart.querymat.Params.CreateParam(ftString,'name',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'lage',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'soll',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'insgesamt',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'menge1',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'einheit1',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'charge1',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftDate,'datum1',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'menge2',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'einheit2',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'charge2',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftDate,'datum2',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'menge3',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'einheit3',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'charge3',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftDate,'datum3',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'menge4',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'einheit4',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'charge4',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftDate,'datum4',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftInteger,'menge5',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'einheit5',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftString,'charge5',ptInputOutput);
Fstart.querymat.Params.CreateParam(ftDate,'datum5',ptInputOutput);
Code: Alles auswählen
//Parameter beschreiben
Fstart.querymat.ParamByName('name').Text:=Fmat.name.Text;
Fstart.querymat.ParamByName('lage').Text:=Fmat.lagerort.Text;
if soll.Text = '' then
Fstart.querymat.ParamByName('soll').Clear
else
Fstart.querymat.ParamByName('soll').AsInteger:=strtoint(Fmat.soll.Text);
Fstart.querymat.ParamByName('insgesamt').AsInteger:=total;
if menge1.Text = '' then
Fstart.querymat.ParamByName('menge1').Clear
else
Fstart.querymat.ParamByName('menge1').AsInteger:=strtoint(Fmat.menge1.Text);
Fstart.querymat.ParamByName('einheit1').Text:=Fmat.einheit1.Text;
Fstart.querymat.ParamByName('charge1').Text:=Fmat.charge1.Text;
if datetostr(Fmat.datum1.Date) <> '01.01.2017' then
Fstart.querymat.ParamByName('datum1').AsDate:=Fmat.datum1.Date;
if menge2.Text = '' then
Fstart.querymat.ParamByName('menge2').Clear
else
Fstart.querymat.ParamByName('menge2').AsInteger:=strtoint(Fmat.menge2.Text);
Fstart.querymat.ParamByName('einheit2').Text:=Fmat.einheit2.Text;
Fstart.querymat.ParamByName('charge2').Text:=Fmat.charge2.Text;
if datetostr(Fmat.datum2.Date) <> '01.01.2017' then
Fstart.querymat.ParamByName('datum2').AsDate:=Fmat.datum2.Date;
if menge3.Text = '' then
Fstart.querymat.ParamByName('menge3').Clear
else
Fstart.querymat.ParamByName('menge3').AsInteger:=strtoint(Fmat.menge3.Text);
Fstart.querymat.ParamByName('einheit3').Text:=Fmat.einheit3.Text;
Fstart.querymat.ParamByName('charge3').Text:=Fmat.charge3.Text;
if datetostr(Fmat.datum3.Date) <> '01.01.2017' then
Fstart.querymat.ParamByName('datum3').AsDate:=Fmat.datum3.Date;
if menge4.Text = '' then
Fstart.querymat.ParamByName('menge4').Clear
else
Fstart.querymat.ParamByName('menge4').AsInteger:=strtoint(Fmat.menge4.Text);
Fstart.querymat.ParamByName('einheit4').Text:=Fmat.einheit4.Text;
Fstart.querymat.ParamByName('charge4').Text:=Fmat.charge4.Text;
if datetostr(Fmat.datum4.Date) <> '01.01.2017' then
Fstart.querymat.ParamByName('datum4').AsDate:=Fmat.datum4.Date;
if menge5.Text = '' then
Fstart.querymat.ParamByName('menge5').Clear
else
Fstart.querymat.ParamByName('menge5').AsInteger:=strtoint(Fmat.menge5.Text);
Fstart.querymat.ParamByName('einheit5').Text:=Fmat.einheit5.Text;
Fstart.querymat.ParamByName('charge5').Text:=Fmat.charge5.Text;
if datetostr(Fmat.datum5.Date) <> '01.01.2017' then
Fstart.querymat.ParamByName('datum5').AsDate:=Fmat.datum5.Date;
Code: Alles auswählen
//SQL Befehl zum neu Anlegen
Fstart.querymat.SQL.Text:='insert into mat (name,lage,menge1,charge1,datum1,menge2,charge2,datum2,menge3,charge3,datum3,menge4,charge4,datum4,menge5,charge5,datum5,soll,insgesamt,einheit1,einheit2,einheit3,einheit4,einheit5)'+
'values (:name,:lage,:menge1,:charge1,:datum1,:menge2,:charge2,:datum2,:menge3,:charge3,:datum3,:menge4,:charge4,:datum4,:menge5,:charge5,:datum5,:soll,:insgesamt,:einheit1,:einheit2,:einheit3,:einheit4,:einheit5)';
Fstart.querymat.ExecSQL;