AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi insert geht erst bei Programmende
Thema durchsuchen
Ansicht
Themen-Optionen

insert geht erst bei Programmende

Ein Thema von Hansa · begonnen am 8. Jul 2003 · letzter Beitrag vom 8. Jul 2003
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

insert geht erst bei Programmende

  Alt 8. Jul 2003, 09:07
Hi,

ich habe hier folgenden Effekt: erzeuge ich einen neuen Datensatz, so wird dieser erst in der DB sichtbar, sofern das Programm verlassen wird, obwohl ich nach dem Insert sogar ein Transaction.commit ausführe. Ich prüfe mit SELECT, ob der Datensatz bereits da ist und mache dann je nach Ergebnis ein Insert oder Update. Gebe ich in einem Arbeitsschritt zweimal dasselbe ein, so wird zweimal insert gemacht anstatt ein insert und ein update.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 10:20
Hallo Hansa,
versuche doch mal mit POST (vor Transaction.Commit) den Datensatz explizit abzuschicken.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 10:34
Hi Jens,

ich benutze eine Query, da gibts kein Post.
Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 10:39
Hi Hansa,

habe ich das richtig verstanden: Du hast ein Query, in der Du je nach Bedarf ein Insert oder Update-Statement einfügst und dieses dann ausführst?

Wenn ja:

1. Bist Du sicher, dass Du die richtige Transaction mit Commit beendest (bitte nicht beleidigt sein, ist mir schon das eine oder andere mal passiert)?
2. Welche Query verwendest Du: IBX, FIBPlus, IBObjects, BDE,...? Bei den IBX solltest Du ne halbwegs aktuelle Version verwenden, da es dort bei den alten Versionen immer wieder mit den Transaktionen Probleme gab.
3. Wenn Du die Transaction mit Commit beendest, öffnest Du diese auch expilzit (d.h. vor dem Query.execute; ein TRansaction.StartTransaction)?


Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 10:56
Zitat von Lemmy:
1. Bist Du sicher, dass Du die richtige Transaction mit Commit beendest...
habe nur eine.

Zitat von Lemmy:
2. Welche Query verwendest Du?
FIBplus

Zitat von Lemmy:
3. Wenn Du die Transaction mit Commit beendest, öffnest Du diese auch expilzit (d.h. vor dem Query.execute; ein TRansaction.StartTransaction)?
Nein, der Sache geh ich jetzt nach.

P.S.: Wenn ich die Transaction immer neu starte, dann kriege ich Ärger bei einem eventuellen Rollback, oder ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 11:12
Es sieht jetzt so aus:

SQL-Code:
ExecQuery;
Commit;
StartTransaction;
keine Änderung. Soll ich vielleicht ein Dataset verwenden
Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 12:01
Versuche es eher mal so:


Code:
Query.SQL.Text:='INSERT INTO....';
if Transaction.InTransaction then
  TransaCtion.Commit;
Transaction.StartTransaction;
Query.ExecQuery;
Transaction.Commit;

Anschließend schaust Du in der IBConsole/... nach ob der Datensatz vorhanden ist. Aber Achtung! Auch dort gibt es Transaktionen die evtl. am laufen sind, d.h. am besten nach dem Insert/Update die Datenbankconnection schließen und neu öffnen, dann sollte aber wirklich alles i.O. sein.

Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 12:06
Habe das ganze jetzt auf Dataset umgestellt, mit dem Erfolg, daß es geht aber selbst nach Programmende immer nur ein insert gemacht wird, kein Update. 8) Der Record ist beim Insert richtig drin, aber beim überprüfen wird er nicht mehr gefunden, also statt update wird insert gemacht. Probiere Dein Bsp. jetzt mal aus.
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: insert geht erst bei Programmende

  Alt 8. Jul 2003, 13:04
So, jetzt kann ich doch beruhigt Mittag machen. Der Fehler war, daß ich IsEmpty bei einer geschlossenen Datenmenge abgefragt habe, bzw. an der falschen Stelle. Also mußte noch eine Hilfsvariable her. Der Rest vom Code war anscheinend richtig.
Gruß
Hansa
  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 09:02 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