![]() |
Datenbank: ABS_Database • Version: 7.92 • Zugriff über: ABSTable
Datenbankeinträge auf Existenz prüfen
Hallo,
eine generelle Logikfrage habe ich bitte. Wenn ich z.B. 4 relevante Datenbankfelder habe, möchte ich prüfen, ob ein Eintrag schon existiert, wenn ein neuer Eintrag hinzugefügt werden soll. Hierbei kann es jedoch sein, dass nicht alle Felder belegt sind. Es geht um eine kleine Buchsammlung, mit der mein Vati seine Bücher verwalten möchte. Wie löst man eine solch komplexe Aufgabe? Die Spalten sind: 1. Index (wird bei der Prüfung nicht benötigt) 2. Titel 3. Autor 4. ISBN-10 5. ISBN-13 Felder 2-5 sollen bitte verglichen werden. Autor und Titel ergibt ja einen schönen Vergleich, jedoch ist nicht immer auch ein Autor in der Datenbank eingetragen. Auch ISBN ist nicht immer vergeben. Selbst der Titel wurde nicht immer eingetragen. Wenn ich nun die Felder vergleiche, muss ich ja verschiedene Zustände abfragen. Wenn Feld 2 ODER Feld 3 ODER Feld 4 ODER Feld 5 Wenn Feld 2 UND Feld 3 ODER Feld 4 ODER Feld 5 Wenn Feld 2 UND Feld 3 UND Feld 4 ODER Feld 5 ... Habt ihr einen Tipp für mich? LG Mathias |
AW: Datenbankeinträge auf Existenz prüfen
Guten MOrgen,
Delphi-Quellcode:
das sollte doch reichen?
where (Titel=:Titel OR Titel IS NULL) AND (Autor=:Autor OR AUtor IS NULL) AND (ISBN-10=:ISBN-10 OR ISBN-10 IS NULL) AND (ISBN-13=:ISBN-13 OR ISBN-13 IS NULL)
|
AW: Datenbankeinträge auf Existenz prüfen
Hi,
reicht es nicht auf Spalte 2-5 den Primärschlüssel bzw. einen Unique-Index zu setzen? Wenn etwas doppelt eingetragen wird, meldet sich die Datenbank. Autor ohne etwas anderes wird dann einfach Verboten (Macht auch keinen sinn) |
AW: Datenbankeinträge auf Existenz prüfen
Zitat:
...:cat:... |
AW: Datenbankeinträge auf Existenz prüfen
Wenn da 10x Bibel drinsteht, hat das nicht viel mit "Verwaltung" von Büchern zu tun.:stupid:
Ein paar Pflichtfelder sollten schon sein. Oder wenigstens einen Zusatz zum Titel |
AW: Datenbankeinträge auf Existenz prüfen
Lohnt sich der Prüfaufwand?
Wieviel Bücher sollen denn verwaltet werden? Ich bin bei meinen Büchern locker im 4-stelligen Bereich und käme nicht auf die Idee, dafür eine Datenbank und ein Programm dafür zu schreiben. Excel reicht. Da kann ich sortieren/filtern und sehe dann auch schnell Dubletten. Ich habe auch ein paar wenige gleiche Bücher. Oder Bücher in verschiedenen Ausführungen oder aus unterschiedlichen Auflagen. Wie soll in solchen Fällen dann eine Prüfung greifen? Dann müsste die Auflage auch geprüft werden und vielleicht auch noch das Feld mit den Bemerkungen? Möglicherweise noch der Verlag? Übrigens gibt es für private Bücherverwaltung auch Freeware. Wenn es nur darum geht, ein hübsches kleines Projekt als Übung zu haben, dann würde ich ganz anders vorgehen. Beim Erfassen einfach unter der Erfassungsmaske eine Liste möglicher vorhandener Bücher anzeigen. Bei jedem Tastendruck wird die Liste aktualisiert. Bei den paar Datensätzen spielt die Geschwindigkeit da sicher keine Rolle. Wenn der Erfasser dann sieht, dass das Buch schon erfasst wurde, kann er abbrechen. Wenn es aber tatsächlich physisch mehrfach vorhanden ist, kann es trotzdem erfasst werden. Ich würde gegebenenfalls mal darüber nachdenken, jedes Buch mit einer Nummer zu versehen. Erfasste Bücher haben schon eine und sind entsprechend physisch markiert(Zettel auf der ersten Seite, ablösbare Aufkleber, etc.). Dann ist eine doppelte Erfassung eigentlich ausgeschlossen und die Prüfung kann komplett entfallen. |
AW: Datenbankeinträge auf Existenz prüfen
ja nach Datenbank geht es eventuell sinngemäß auch in etwa so:
Delphi-Quellcode:
qry.ParamByName('Parameter').AsString := Format('%s%s%s%s',[Titel,Autor,ISBN-10,ISBN-13]);
SQL-Code:
Dabei muss man dann nicht jede Spalte auf Null abfragen, beim "Aneinanderreihen" werden alle nullenthaltenden Spalten zu 'nem Leerstring (also zu nix).
-- Firebird, Oracle, PostGres
where (titel||autor||ISBN-10||ISBN-13) = :Parameter -- SQL-Server, MySQL where CONCAT(titel,autor,ISBN-10,ISBN-13) = :Parameter -- SQL-Server where titel + autor + ISBN-10 + ISBN-13) = :Parameter -- Access where (titel & autor & ISBN-10 & ISBN-13) = :Parameter Ansonsten mal bei der Suchmaschine Deiner Wahl nach sql concat NameDeinerDatenbank suchen. |
AW: Datenbankeinträge auf Existenz prüfen
Vielen Dank für eure Hinweise.
Das Beispiel mit der Bibel hat mir gefallen. Mein Vati hat auch mehr als 1000 Bücher. Das Programm dient ja auch mir als Lernprozess. Es gibt ein Ablagesystem, ein Ausleihe-Datenbankfeld, eine Druckfunktion, Filtern von Einträgen ist auch schon implementiert. Momentan bastle ich noch an der Prüfung auf doppelte Bücher. |
AW: Datenbankeinträge auf Existenz prüfen
Was mir gerade noch einfällt und Kopfzerbrechen macht:
Wenn es zwei gleiche Titel in der Datenbank gibt, ohne Autor und ISBN, woher weiß ich, welcher Eintrag eventuell aktualisiert werden soll? ODER Wenn es einen schon Titel in der Datenbank gibt und außerdem einen Autor - ohne Titel und ohne ISBN, welcher Eintrag wäre hier auszuwählen. Vielleicht sollte ich eine Liste der verfügbaren Doubles erstellen, um dann selektieren zu lassen, welches Double aktualisiert werden soll? |
AW: Datenbankeinträge auf Existenz prüfen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 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