Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IB - Insert Problem mit UNIQUE (https://www.delphipraxis.net/14815-ib-insert-problem-mit-unique.html)

Tonic1024 16. Jan 2004 09:16


IB - Insert Problem mit UNIQUE
 
Hi...

Eine Frage an die Interbase-Spezis...

Vorab: Es handelt sich um eine sehr komplexe und dazu mir weitgehend unbekannte Datenbank. Ich habe auch kaum Erfahrungen mit Interbase im Detail. Mein Wissen habe ich mir hauptsächlich mit mySQL erworben... Ich habe da aber folgendes Phenomän beobachtet:

Ich setze über eine SQLConnection (executedirect) einen 'Insert' Befehl ab. Nicht optimal, aber großartig umstricken kann ich das nicht mehr... Dafür ist da Projekt zu umfangreich.

Wenn ich nun den Insert absetze, kommt immer(!) folgende Fehlermeldung:
Zitat:

Zitat von Messagebox
attempt to store dublicate value (visible to active transaction) in unique index UIDX_TBB_DATEN_2_ASC

In beschriebenem Unique-Index steht folgendes:
Code:
CREATE UNIQUE ASCENDING INDEX UIDX_TBB_DATEN_2_ASC ON TBB_DATEN (MAND, FAHRER, FAHRZEUG, DATUM, BEGINZEIT, TACHOCODE, NOTIZCODE, NOTIZTEXT, DAUER, FOLGENR_MINUTE)
Das wäre ja auch okay, wenn da nicht dieser effekt wäre:

Wie schon gesagt kommt die Meldung ständig. Wenn der datensatz tatsächlich doppelt ist, kommt die Meldung (zu Recht) und der datensatz wird (wie erwartet) nicht erzeugt. Wenn ich den mandanten (MAND) auf ein X-Beliebigen Wert setze, den es nachweislich noch nicht gibt, müsste ja die Unique-Bedingung erfüllt sein. Dann wird auch der Datensatz korrekt geschrieben - die meldung kommt jedoch trotzdem - Warum???

Hoffe jemand weiss Rat...

Bis denne...

Tonic1024 19. Jan 2004 07:18

Re: IB - Insert Problem mit UNIQUE
 
Hi...

Das Thema ist noch aktuell... wenn jemand ne Ahnung hat wäre ich Dankbar...

Bis denne...

Tonic1024 23. Jan 2004 11:30

Re: IB - Insert Problem mit UNIQUE
 
Das Pusher-Thema ist ja noch aktuell, trotzdem werd ich mal diesen Thread recyclen um für mein Problem eine andere Lösung zu finden...:lol:

Da ja der Fehler immer Auftritt, und ich die SQL-Anweisung mechanisch erstelle, möchte ich speziel diese Fehlermeldung unterdrücken. Es ist eher unwahrscheinlich, dass sie während des laufenden Betriebes Auftritt solange die Prüfbedingungen vorher schon hart genug sind.

Wenn ich nun aber die ExecuteDirect Anweisung in einen Try-Except-Block packe, hat das aber keine Wirkung... Die Schleife, in der dieser Fehler Auftritt wird genau an dieser Stelle angehalten und die Meldung wird gefeuert.

Gibt es einen Compilerschalter oder sowas mit dem ich das unterdrücken kann?

jeder kennt ja bestimmt {$i-} und IOResult für die E/A Fehler... Sowas würde mir an dieser Stelle gefallen. Dann könnte ich individuell auf den aufgetretenden Fehler reagieren...

Bis denne...

Generalissimo 23. Jan 2004 11:58

Re: IB - Insert Problem mit UNIQUE
 
Die Fehlermeldung klingt so, also
würde das Insert 2x gefeuert werden.

So richtig weiterhelfen kann ich dir nicht,
aber geh mal auf www.entwickler-forum.de.
Da sind die absoluten Spezies für IB/Firebird

Tonic1024 9. Feb 2004 13:18

Re: IB - Insert Problem mit UNIQUE [gelöst?]
 
Hallo nochmal...

Für die, die ein ähnliches Problem haben - oder haben werden. Ich habe das Problem lokalisiert und gelöst - vielmehr umgangen.

Kleine Geschichte zu Hergang:

Ich habe für den Zugriff DBExpress-Kompos benutzt. Da ich ein SQL-Statement absetzen wollte, schien mir die Kompo 'SQLConnection' mit der Methode 'ExecuteDirect', zumal ich auch noch Referenzdaten aus einer mySQL Datenbank auslese, für sehr geeignet. Das Auslesen (mySQL und IB) macht auch keine Probleme. Arbeitet in Verbindung mit der 'SQLQuery' einwandfrei und sehr komfortabel. Nur beim Schreiben tritt oben beschriebener Fehler auf. (Seltsam-Seltsam)

Ich habe speziell zum Schreiben jetzt Delphis Interbase-Kompos verwendet - ist ja auch naheliegend... Und der Fehler tritt nun nicht mehr auf - warum auch immer.

Falls Jemand dafür eine Erklährung weiss, würd ich mich freuen. Aber ich bin erstmal zufrieden... :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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