Ich habe ein QSqlTableModel-Objekt, das Datensätze einer Tabelle beinhaltet. Diesem Objekt möchte ich mehrere Einträge hinzufügen. Wenn aber versucht wird, einen Primärschlüssel - der natürlich aus mehreren Feldern bestehen kann - doppelt einzutragen, soll eine bestimmte Fehlerbehandlung gestartet werden.
Wie stelle ich fest, ob ein bestimmter Primärschlüssel bereits ins Model eingetragen wurde bzw. darin enthalten ist?
Ein Submit wurde zu diesem Zeitpunkt aus Performance-Gründen noch nicht durchgeführt, ich kann also nicht auf die Tabelle zurückgreifen, da Datensätze zwar bereits im Model aber noch nicht in der Tabelle stehen!
Ich möchte auch nicht alle Zeilen einzeln durchforsten, da es sehr schnell sehr viele Zeilen werden (können)! Das wird zu zeitintensiv, weil es bei jedem Datensatz geschehen muss!
Bestimmten Eintrag in QSqlTableModel finden
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Das geht leider nicht!
Die Datenbank kennt doch bei den einzelnen Inserts noch garnicht alle Datensätze, da noch kein Submit durchgeführt wurde!
Es handelt sich um einen allgemeingültigen Importvorgang, der beliebige Daten aus mehreren anderen Datenbanken (Access) in eine beliebige Tabelle (SQL Server) importieren soll. Wenn ein Primärschlüssel doppelt vergeben wurde, soll der Konflikt in einer Datei vermerkt werden, wenn der Datensatz nicht exakt identisch ist, wenn sich also verschiedene Felder unterscheiden. Dabei muss er aber nicht nur mit den Datensätzen in der Tabelle vergleichen, sondern auch mit denen, die schon in das Model eingetragen wurden, aber noch nicht "abgeschickt" wurden!
Es handelt sich um einen allgemeingültigen Importvorgang, der beliebige Daten aus mehreren anderen Datenbanken (Access) in eine beliebige Tabelle (SQL Server) importieren soll. Wenn ein Primärschlüssel doppelt vergeben wurde, soll der Konflikt in einer Datei vermerkt werden, wenn der Datensatz nicht exakt identisch ist, wenn sich also verschiedene Felder unterscheiden. Dabei muss er aber nicht nur mit den Datensätzen in der Tabelle vergleichen, sondern auch mit denen, die schon in das Model eingetragen wurden, aber noch nicht "abgeschickt" wurden!
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Performance!!!
Wie bereits erwähnt, ist das Performace-technisch unzumutbar! Der geplante Datenimport dauert dann mehrere Stunden!!!
Andere Lösung gefunden!
Ich habe den Import einfach so gestaltet, dass kein doppelten Primärschlüssel innerhalb einer Transaktion vorkommen können. Jetzt kann ich direkt in der Tabelle nachsehen!
Trotzdem vielen Dank für die Hilfe!
Trotzdem vielen Dank für die Hilfe!