![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: DBX
MySQL-insert/append post/applyupdates(-1)
Eine Frage an die es wissen, ich werde noch kirre...
Folgende Anbindung an die Datenbank: TSQLConnection(mit Namen ConBu)verbunden mit TSQLDataset(Name:SDSBuBs) verbunden mit TDatasetprovider(Name:DSPBuPs), verbunden mit TClientDataset(Name :CDSBuPs). SQLQuery von SDSBuPs: select * from `packingstructure`, die packingstructure ist die Tabelle.
Code:
Ich habe das hier mal mit Append und Post gemacht. Versuchsweise mit Insert und ApplyUpdates(-1).
procedure TLMobilesicherung.schreibe_in_Backup(satz : Longword);
begin IDOrg:=IntToStr(satz); if ETabl.Text = 'LMobile_Packingstructure' then begin //Letzte ID ermitteln SQL_Str:='Select * from Packingstructure'; Data.DataModule1.CDSBUPs.Active:=False; Data.DataModule1.SDSBUPs.Active:=False; Data.DataModule1.SDSBUPs.CommandText:=sql_str; Data.DataModule1.SDSBUPs.Active:=True; Data.DataModule1.CDSBUPs.Active:=True; //Data.DataModule1.CDSBUPs.Refresh; data.DataModule1.CDSBUPS.Last; ID:=Data.DataModule1.CDSBuPS.FieldByName('ID').AsString; if (ID='') or (ID='0') then ID:='1'; //Leeren Datensatz unten anfügen SQL_Str:='Select * from Packingstructure'; Data.DataModule1.CDSBUPs.Active:=False; Data.DataModule1.SDSBUPs.Active:=False; Data.DataModule1.SDSBUPs.CommandText:=sql_str; Data.DataModule1.SDSBUPs.Active:=True; Data.DataModule1.CDSBUPs.Active:=True; data.DataModule1.CDSBUPS.Last; Data.DataModule1.CDSBUPS.Edit; Data.DataModule1.CDSBUPS.Insert; <<hier hab ich statt dessen auch schon Append probiert, ohne Erfolg Data.DataModule1.CDSBuPS.FieldByName('ID').AsInteger:=(StrToInt(id)+1); //Daten in letzten leeren Datensatz schreiben data.DataModule1.CDSBUPs.FieldByName('IDOrg').AsString:=idOrg; data.DataModule1.CDSBUPs.FieldByName('Firmennummer').AsString:=Firmennummer; if AuftragsNr='' then AuftragsNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('AuftragsNr').AsString:=AuftragsNr; if AuftragsPosNr='' then AuftragsPosNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('AuftragsPosNr').AsString:=AuftragsPosNr; if KommissionierscheinNr='' then KommissionierscheinNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('KommissionierscheinNr').AsString:=KommissionierscheinNr; if KommissionPos='' then KommissionPos:=' ' else data.DataModule1.CDSBUPs.FieldByName('KommissionPos').AsString:=KommissionPos; if LieferscheinNr='' then LieferscheinNr:='0' else data.DataModule1.CDSBUPs.FieldByName('LieferscheinNr').AsString:=LieferscheinNr; if LieferscheinPos='' then LieferscheinPos:='0' else data.DataModule1.CDSBUPs.FieldByName('LieferscheinPos').AsString:=LieferscheinPos; if PacklistenNr='' then PacklistenNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('PacklistenNr').AsString:=PacklistenNr; if SendungsNr='' then SendungsNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('SendungsNr').AsString:=SendungsNr; if PackstueckNr='' then PackstueckNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('PackstueckNr').AsString:=PackstueckNr; if VPackstueckNr='' then VPackstueckNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('VPackstueckNr').AsString:=VPackstueckNr; if ArtikelNr='' then ArtikelNr:=' ' else data.DataModule1.CDSBUPs.FieldByName('ArtikelNr').AsString:=ArtikelNr; if Charge='' then Charge:=' ' else data.DataModule1.CDSBUPs.FieldByName('Charge').AsString:=Charge; if Menge='' then Menge:=' ' else data.DataModule1.CDSBUPs.FieldByName('Menge').AsString:=Menge; if BruttoGewicht='' then BruttoGewicht:=' ' else data.DataModule1.CDSBUPs.FieldByName('BruttoGewicht').AsString:=BruttoGewicht; if NettoGewicht='' then NettoGewicht:=' ' else data.DataModule1.CDSBUPs.FieldByName('NettoGewicht').AsString:=NettoGewicht; if Referenzgewicht='' then Referenzgewicht:=' ' else data.DataModule1.CDSBUPs.FieldByName('Referenzgewicht').AsString:=Referenzgewicht; if Referenzstueckzahl='' then Referenzstueckzahl:=' ' else data.DataModule1.CDSBUPs.FieldByName('Referenzstueckzahl').AsString:=Referenzstueckzahl; if Level='' then Level:=' ' else data.DataModule1.CDSBUPs.FieldByName('Level').AsString:=Level; if FreightCost='' then FreightCost:=' ' else data.DataModule1.CDSBUPs.FieldByName('FreightCost').AsString:=FreightCost; if ShippingCost='' then ShippingCost:=' ' else data.DataModule1.CDSBUPs.FieldByName('ShippingCost').AsString:=ShippingCost; if Status='' then Status:=' ' else data.DataModule1.CDSBUPs.FieldByName('Status').AsString:=Status; if CreateUser='' then CreateUser:=' ' else data.DataModule1.CDSBUPs.FieldByName('CreateUser').AsString:=CreateUser; if CreateDate='' then CreateDate:=' ' else data.DataModule1.CDSBUPs.FieldByName('CreateDate').AsString:=CreateDate; if PickStatus='' then PickStatus:=' ' else data.DataModule1.CDSBUPs.FieldByName('PickStatus').AsString:=PickStatus; if CustomerNo='' then CustomerNo:=' ' else data.DataModule1.CDSBUPs.FieldByName('CustomerNo').AsString:=CustomerNo; if PosCount='' then PosCount:=' ' else data.DataModule1.CDSBUPs.FieldByName('PosCount').AsString:=PosCount; if DeliveredQty='' then DeliveredQty:=' ' else data.DataModule1.CDSBUPs.FieldByName('DeliveredQty').AsString:=DeliveredQty; if CustomerName='' then CustomerName:=' ' else data.DataModule1.CDSBUPs.FieldByName('CustomerName').AsString:=CustomerName; if CustomerAddress1='' then CustomerAddress1:=' ' else data.DataModule1.CDSBUPs.FieldByName('CustomerAddress1').AsString:=CustomerAddress1; if Lieferbezeichnung='' then Lieferbezeichnung:=' ' else data.DataModule1.CDSBUPs.FieldByName('Lieferbezeichnung').AsString:=Lieferbezeichnung; if SachNrKunde='' then SachNrKunde:=' ' else data.DataModule1.CDSBUPs.FieldByName('SachNrKunde').AsString:=SachNrKunde; if Abladestelle='' then Abladestelle:=' ' else data.DataModule1.CDSBUPs.FieldByName('Abladestelle').AsString:=Abladestelle; if SachNrKdPackm='' then SachNrKdPackm:=' ' else data.DataModule1.CDSBUPs.FieldByName('SachNrKdPackm').AsString:=SachNrKdPackm; if Aenderungskonst='' then Aenderungskonst:=' ' else data.DataModule1.CDSBUPs.FieldByName('Aenderungskonst').AsString:=Aenderungskonst; if Versandart='' then Versandart:=' ' else data.DataModule1.CDSBUPs.FieldByName('Versandart').AsString:=Versandart; if CustomerAddress2='' then CustomerAddress2:=' ' else data.DataModule1.CDSBUPs.FieldByName('CustomerAddress2').AsString:=CustomerAddress2; if Country='' then Country:=' ' else data.DataModule1.CDSBUPs.FieldByName('Country').AsString:=Country; if LocationNo='' then LocationNo:=' ' else data.DataModule1.CDSBUPs.FieldByName('LocationNo').AsString:=LocationNo; if BatchQuantity='' then BatchQuantity:=' ' else data.DataModule1.CDSBUPs.FieldByName('BatchQuantity').AsString:=BatchQuantity; if DelivererNo='' then DelivererNo:=' ' else data.DataModule1.CDSBUPs.FieldByName('DelivererNo').AsString:=DelivererNo; Data.DataModule1.CDSBUPS.Post; //Data.DataModule1.CDSBuPS.ApplyUpdates(-1); showmessage(ID); end; end; Immer und wirklich immer sagt er mir, dass der Wert LieferscheinPos nicht leer sein darf. Meiner Meinung nach ist der auch nicht leer, sondern ' '. Sonst hätte ich ja nicht die ganzen if-Abfragen gemacht. Jedes vorkommende Feld hat minimal ein ' '-Zeichen. Was mache ich hier die ganze Zeit falsch? Vielen Dank für jede Hilfe. |
Re: MySQL-insert/append post/applyupdates(-1)
Du hast hier einen Denkfehler:
Delphi-Quellcode:
Wenn LieferscheinPos '' ist, dann wird nix in die DB geschrieben.
if LieferscheinPos='' then LieferscheinPos:='0'
else data.DataModule1.CDSBUPs.FieldByName('LieferscheinPos').AsString:=LieferscheinPos; Es wird nur LieferscheinPos gesetzt. Erst im else-Fall wird tatsächlich in die DB geschrieben. Ich würde es so umbauen:
Delphi-Quellcode:
Wenn der Wert '' ist, dann wird er zu '0'.
if LieferscheinPos='' then
begin LieferscheinPos:='0'; end; data.DataModule1.CDSBUPs.FieldByName('LieferscheinPos').AsString:=LieferscheinPos; Anschliessend wird immer geschrieben, weil wenn der Wert nicht '' ist, kannst Du ja schreiben. Dieser Denkfehler ist übrigens bei allen if so. |
Re: MySQL-insert/append post/applyupdates(-1)
Ohhhhhh Mann,
da wär ich nie drauf gekommen. Wenn man immer seinen eigenen Mist liest, sieht mas sowas nicht mehr. **schäm* Vielen Dank..... |
Re: MySQL-insert/append post/applyupdates(-1)
Ist teilweise schon gut, wenn jemand anderes den Code liesst.
Oft kommt es vor, dass ich zu meinem Kollegen gerufen werde. Nach fünf Sekunden sehe ich meist, wo der Fehler ist. Er hat schon Schweissperlen auf der Stirn, weil er drei Stunden lang den Fehler gesucht hat. Anderstrum passiert das aber auch. Allerdings braucht er dann schon mal einige Minuten. Irgendwie hab ich ein Talent, die Zusammenhänge zu erkennen und den Fehler zu lokalisieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz