AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MySQL-insert/append post/applyupdates(-1)
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL-insert/append post/applyupdates(-1)

Ein Thema von hirsch · begonnen am 15. Jul 2008 · letzter Beitrag vom 15. Jul 2008
Antwort Antwort
hirsch

Registriert seit: 29. Jan 2008
Ort: Tuttlingen
88 Beiträge
 
Delphi 2007 Professional
 
#1

MySQL-insert/append post/applyupdates(-1)

  Alt 15. Jul 2008, 15:56
Datenbank: MySQL • Version: 5 • Zugriff über: DBX
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(NameSPBuPs), verbunden mit TClientDataset(Name :CDSBuPs).
SQLQuery von SDSBuPs: select * from `packingstructure`, die packingstructure ist die Tabelle.
Code:
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;
Ich habe das hier mal mit Append und Post gemacht. Versuchsweise mit Insert und ApplyUpdates(-1).
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.
Wolfgang Hirsch
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: MySQL-insert/append post/applyupdates(-1)

  Alt 15. Jul 2008, 16:08
Du hast hier einen Denkfehler:
Delphi-Quellcode:
   if LieferscheinPos='then LieferscheinPos:='0'
     else data.DataModule1.CDSBUPs.FieldByName('LieferscheinPos').AsString:=LieferscheinPos;
Wenn LieferscheinPos '' ist, dann wird nix in die DB geschrieben.
Es wird nur LieferscheinPos gesetzt.
Erst im else-Fall wird tatsächlich in die DB geschrieben.

Ich würde es so umbauen:
Delphi-Quellcode:
if LieferscheinPos='then
begin
  LieferscheinPos:='0';
end;
data.DataModule1.CDSBUPs.FieldByName('LieferscheinPos').AsString:=LieferscheinPos;
Wenn der Wert '' ist, dann wird er zu '0'.
Anschliessend wird immer geschrieben, weil wenn der Wert nicht '' ist, kannst Du ja schreiben.

Dieser Denkfehler ist übrigens bei allen if so.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
hirsch

Registriert seit: 29. Jan 2008
Ort: Tuttlingen
88 Beiträge
 
Delphi 2007 Professional
 
#3

Re: MySQL-insert/append post/applyupdates(-1)

  Alt 15. Jul 2008, 16:27
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.....
Wolfgang Hirsch
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: MySQL-insert/append post/applyupdates(-1)

  Alt 15. Jul 2008, 17:06
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz