Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Inhalt der PK-Spalte auf Integrität prüfen (https://www.delphipraxis.net/147938-inhalt-der-pk-spalte-auf-integritaet-pruefen.html)

Ducksoul 19. Feb 2010 13:20

Datenbank: Access • Version: 2007 • Zugriff über: TADO

Inhalt der PK-Spalte auf Integrität prüfen
 
Hallo,
ich bin dabei ein Import- und Exportprogramm zu schreiben, mit dessen Hilfe sich bestimmte Datensätze zwischen Datenbanken hin- und herschieben lassen..

Da die Datenbanken sich je nach Versionsnummer des Programms im Aufbau unterscheiden können, wird an jeder Tabelle vor dem Import eine Strukturprüfung ausgeführt.
Inzwischen bin ich auf das Problem gestoßen, dass beim Import eines Datensatzes dieser ja einen schon vorhandenen Primärschlüssel besitzen kann. Sind 2 Zeilen mit dem gleichen Primärschlüssel vorhanden, so soll einfach eine der beiden gelöscht werden.

Ich weiß allerdings nicht wie ich die Sache angehen soll. Am einfachsten wäre es glaube ich beim fehlerhaften Kopieren die Exception abzugreifen. Gibt es vielleicht noch elegantere Lösungen?

Gruß
Franz

mkinzler 19. Feb 2010 13:38

Re: Inhalt der PK-Spalte auf Integrität prüfen
 
Bei Access ist es schwer, bei richtigen DBMS gibt es MERGE, Insert or Update o.ä. Hierbei werden vorhandene DS upgedatet

Ducksoul 19. Feb 2010 13:41

Re: Inhalt der PK-Spalte auf Integrität prüfen
 
Die DB kann ich mir allerdings nicht aussuchen. :(

mkinzler 19. Feb 2010 13:51

Re: Inhalt der PK-Spalte auf Integrität prüfen
 
Access ist nunmal kein richtiges DBMS (imho).
Du könntest das per Makro machen oder in einer externen Programmiersprache:
Erst Abfragen ob ID vorhanden (
SQL-Code:
select count(id) from <Tabelle> where id = :id;
)
Dann entsprechend Insert/Update durchführen)

Ducksoul 19. Feb 2010 13:55

Re: Inhalt der PK-Spalte auf Integrität prüfen
 
Hm ja das klingt doch schonmal hilfreich.

Ich prüfe also, ob der Schlüssel in der einen DB schon vorhanden ist, was im besten Fall nicht so ist, im schlechtesten Fall würde ich ihn einfach löschen und dann den Datensatz kopieren.

Mal schauen, ob ich das so hinkriege.

Vielen Dank :)


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