AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken delphi datenmenge weder im editier- noch im einfügemodus
Thema durchsuchen
Ansicht
Themen-Optionen

delphi datenmenge weder im editier- noch im einfügemodus

Ein Thema von RalfSi · begonnen am 5. Jul 2012 · letzter Beitrag vom 8. Jul 2012
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: delphi datenmenge weder im editier- noch im einfügemodus

  Alt 8. Jul 2012, 03:30
if not (dmkunden.tblkundendaten.State in [dsInsert]) then
Ich weiss nicht, ob das zur Problemlösung beiträgt, aber ich würde hier dringend umdrehen: if not (dsInsert in dmkunden.tblkundendaten.State) then Das gleiche auch später nochmals. Grund: Bei deiner Variante wird nur "true" erzielt, wenn "State=dsInsert", du möchstet aber eigentlich "dsInsert ist Teilmenge von State". (Ich vermute in dem 2. Vorkommen dieser Prüfung ist "State" = [dsInsert, dsEditing] oder so, weswegen das einen Unterschied machen könnte.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: delphi datenmenge weder im editier- noch im einfügemodus

  Alt 8. Jul 2012, 07:07
Delphi-Referenz durchsuchenTDataSet.State ist kein SET sondern ein ENUM und kann somit immer nur in einem Zustand sein.
Delphi-Referenz durchsuchenTDataSetState

Im ersten Beitrag bin ich etwas verwundert über das Konstrukt
Delphi-Quellcode:
try
begin

end
Wenn hier schon mit Transaktionen gearbeitet wird, dann sollte das in einem try ... except Block stehen.
Delphi-Quellcode:
MyDataSet.StartTransaction;
try
  ...
  MyDataSet.Commit;
except
  MyDataSet.Rollback;
end;
Des weiteren ist es fraglich, warum überhaupt geprüft wird, ob sich die Datenmenge im Einfügemodus befindet. Wenn, dann sollte diese Prüfung vor StartTransaction erfolgen, denn sonst ist ja ein Teil der Datenänderung ausserhalb und ein anderer Teil innerhalb der Transaktion.

Auch wenn dieses Konstrukt so irgendwie funktioniert, habe ich meine Zweifel an der Zuverlässigkeit des Codes.

Es wäre gut mal die gesamte Routine zu sehen (die Zuweisungen können verkürzt sein), dann kann man da mehr zu sagen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: delphi datenmenge weder im editier- noch im einfügemodus

  Alt 8. Jul 2012, 10:35
if not (dmkunden.tblkundendaten.State in [dsInsert]) then
Ich weiss nicht, ob das zur Problemlösung beiträgt, aber ich würde hier dringend umdrehen: if not (dsInsert in dmkunden.tblkundendaten.State) then Das gleiche auch später nochmals. Grund: Bei deiner Variante wird nur "true" erzielt, wenn "State=dsInsert", du möchstet aber eigentlich "dsInsert ist Teilmenge von State". (Ich vermute in dem 2. Vorkommen dieser Prüfung ist "State" = [dsInsert, dsEditing] oder so, weswegen das einen Unterschied machen könnte.)
Korrekt wäre
If Not (myTable.State in dsEditModes) then
  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 19:13 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