Delphi-PRAXiS
Seite 1 von 7  1 23     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Probleme beim Speichern in eine Tabelle (https://www.delphipraxis.net/197470-probleme-beim-speichern-eine-tabelle.html)

Luckner 8. Aug 2018 14:50

Datenbank: Firebird • Version: 1.5 • Zugriff über: TDataset

Probleme beim Speichern in eine Tabelle
 
Hallo,
habe folgendes Problem:
Delphi-Quellcode:
    begin
      DatamodulePlanung.IBDataSetAuftrag.Close;
      DatamodulePlanung.IBDataSetAuftrag.SelectSQL.Clear;
      DatamodulePlanung.IBDataSetAuftrag.SelectSQL.Add('select * FROM AUFTRAG where ID = ' + IntToStr(id_Auftrag));
      DatamodulePlanung.IBDataSetAuftrag.Open;
      DatamodulePlanung.IBDataSetAuftrag.Edit;

      DatamodulePlanung.IBDataSetAuftragPRODSTATUS.AsString := ComboBoxStatus.Text;
      DatamodulePlanung.IBDataSetAuftragSTATUSDATUM.Value := now;
      DatamodulePlanung.IBDataSetAuftragSTATUSANWENDER.AsString := FormAnmeldung.EditNuname.Text;

      DatamodulePlanung.IBDataSetAuftrag.Post;
      if DataModulePlanung.IBTransactionPlanung.InTransaction then DataModulePlanung.IBTransactionPlanung.Commit;


      DatamodulePlanung.IBDataSetPlanung.Close;
      DatamodulePlanung.IBDataSetPlanung.SelectSQL.Clear;
      DatamodulePlanung.IBDataSetPlanung.SelectSQL.Add('select * FROM PLANUNG where ID_AUFTRAG = ' + IntToStr(id_Planung));
      DatamodulePlanung.IBDataSetPlanung.Open;
      DatamodulePlanung.IBDataSetPlanung.Edit;

      DatamodulePlanung.IBDataSetPlanungSTATUS.AsString := ComboBoxStatus.Text;
      DatamodulePlanung.IBDataSetPlanungSTATUSDATUM.Value := now;
      DatamodulePlanung.IBDataSetPlanungSTATUSNAME.AsString := FormAnmeldung.EditNuname.Text;

      DatamodulePlanung.IBDataSetPlanung.Post;
      if DataModulePlanung.IBTransactionPlanung.InTransaction then DataModulePlanung.IBTransactionPlanung.Commit;
In die Tabelle "Auftrag" werden Änderungen eingetragen aber in die Tabelle "Planung" nicht.

Gruß, Luckner

Uwe Raabe 8. Aug 2018 14:54

AW: Probleme beim Speichern in eine Tabelle
 
Bist du sicher, daß das hier richtig ist?
Zitat:

'select * FROM PLANUNG where ID_AUFTRAG = ' + IntToStr(id_Planung)

Delphi.Narium 8. Aug 2018 15:27

AW: Probleme beim Speichern in eine Tabelle
 
Gibt es eine Fehlermeldung?

Wenn ja, welche?

Wenn es keine Fehlermeldung gibt und der gezeigte Quelltext in keiner Fehlerbehandlung gekapselt ist, dann wird eventuell ein anderer Datensatz geändert, als erwartet (siehe Uwe Raabes Hinweis).

Luckner 8. Aug 2018 15:44

AW: Probleme beim Speichern in eine Tabelle
 
Select-Anweisung ist korrekt. Habe die überprüft. Es gibt auch keinen Datensatz in der Tabelle "Planung", der diesen Eintrag trägt. Es gibt auch keine Fehlermeldung.

Uwe Raabe 8. Aug 2018 15:51

AW: Probleme beim Speichern in eine Tabelle
 
Zitat:

Zitat von Luckner (Beitrag 1410137)
Es gibt auch keinen Datensatz in der Tabelle "Planung", der diesen Eintrag trägt.

Sollte es in dem Fall dann nicht
Delphi-Quellcode:
DatamodulePlanung.IBDataSetPlanung.Append;
anstatt
Delphi-Quellcode:
DatamodulePlanung.IBDataSetPlanung.Edit;
heißen?

juergen 8. Aug 2018 15:56

AW: Probleme beim Speichern in eine Tabelle
 
Hallo,

ich würde weiterhin empfehlen mit SQL-Parametern zu arbeiten.
In etwas so:

Delphi-Quellcode:
with DatamodulePlanung.IBDataSetPlanung.Params do begin
  Clear;
   with Add do begin
    Name := 'id_Planung';
    DataType := ftInteger;
    Size := 0;
    ParamType := ptInput;
  end;
end;
Delphi-Quellcode:
DatamodulePlanung.IBDataSetPlanung.SelectSQL.Add('select * FROM PLANUNG where ID_AUFTRAG = :id_Planung');


Als ich noch keine Parameter verwendet hatte, gab es in meinem Fall auch falsche Werte eines zusammengebastelten SQL-Statement in einer Schleife.

Delphi.Narium 8. Aug 2018 16:05

AW: Probleme beim Speichern in eine Tabelle
 
Wenn es in beiden Fällen keine Fehlermeldung gibt, dann muss es auch in beiden Fällen einen entsprechenden Datensatz geben. Für gewöhnlich scheitert ein Edit auf eine leere Datenmenge und ein Post darauf erst recht.

Lass Dir bitte in beiden Fällen mal nach dem .Open, aber noch vor dem .Edit .RecNo und .RecordCount ausgeben.

Sollte in beiden Fällen jeweils 1 sein, ansonsten bekommst Du bei den Abfragen andere Ergebnisse, als Du erwartest und änderst in den Ergebnismengen jeweils den zufällig ersten Datensatz.

hoika 8. Aug 2018 16:09

AW: Probleme beim Speichern in eine Tabelle
 
Hallo,
noch mal die Frage

select * FROM PLANUNG where ID_AUFTRAG = ' + IntToStr(id_Planung)

Ist ID_AUFTRAG wirklich richtig, oder müsste es nicht ID_PLANUNG heissen.

Luckner 8. Aug 2018 16:24

AW: Probleme beim Speichern in eine Tabelle
 
Zur hoika,
select * FROM PLANUNG where ID_AUFTRAG = ' + IntToStr(id_Planung) ist korrekt. "id_Planung" ist eine Variable, die Lese ich mit 'OnCellKlick' aus in einer weiter Tabelle aus. Klar, die Variable hätte auch id-Auftrag heissen können.
Es gibt keine Meldung beim Posten. Das wundert mich ja auch, weil sonst kommt immer eine Meldung. Habe für den Eintrag: DatamodulePlanung.IBDataSetPlanungSTATUS.AsString := 'Test' eingetragen und alle Tabellen nach diesem String suchen lassen. Nichts gefunden.

Zur Uwe Raabe,
edit ist korrekt. Möchte In der Tabelle "Planung" einen Eintrag ändern.

Zu Delphi.Narium:
werde gleich testen

Luckner 8. Aug 2018 16:33

AW: Probleme beim Speichern in eine Tabelle
 
Zur Delphi.Narium:
jeweils 1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
Seite 1 von 7  1 23     Letzte » 

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