![]() |
Datenbank: SQLite • Version: 3.7.15.2 • Zugriff über: Programm
Suche in Adressbuch
Hallo an alle fleißigen Tüftler da draußen ;-)
Ich zerbreche mir grade den Kopf. Ich habe eine Tabelle "Autoren" mit jeweils einer Spalte für den "Nachname" und für den "Vorname". Ich möchte nun eine Suche gestalten, bei der nur Ergebnisse zurückgeliefert werden, wenn wirklich der Vor- und Zuname in einem Datensatz derselbe sind. Also nichts mir dem SQL LIKE Befehl. Ich bekomme es nicht hin. Wenn ich folgende Beispielabfrage durchführe:
Code:
, dann wird mir dennoch ein True zurückgegeben, obwohl es nur einen Bertolt Brecht in der DB gibt, d.h. es soll nur ein True zurückgeliefert werden, wenn beide Werte stimmen, in etwa so:
"SELECT * FROM Autoren WHERE Nachname = 'Brecht' AND Vorname = 'Klaus'"
Code:
. Das funktioniert leider aber nicht. Kann mir bitte jemand auf die Sprünge helfen?
"SELECT * FROM Autoren WHERE Nachname = 'Brecht' AND Vorname = 'Bertolt'"
Beste Grüße hansklok |
AW: Suche in Adressbuch
Dein erstes Statement ist völlig korrekt, wenn ich nichts übersehen habe. Wie genau sieht denn die Ergebnismenge aus?
|
AW: Suche in Adressbuch
Es werden eben alle Personen ausgegeben, deren Nachname "Brecht" ist, unabhängig davon, wie der Vorname lautet...
|
AW: Suche in Adressbuch
Sry, aber da musst Du irgend etwas falsch machen, so schlecht kann SQLite nicht sein. Wird das Statement evtl. noch zwischendurch unbeabsichtigt geändert? Du darfst auch gern einmal den relevanten Code zeigen.
|
AW: Suche in Adressbuch
Hallo...
Code:
+
"SELECT * FROM Autoren WHERE Nachname = 'Brecht' AND Vorname = 'Klaus'"
Zitat:
|
AW: Suche in Adressbuch
Aufgepasst, dass ganze ist nicht in Delphi geschrieben, sondern RealBasic ;-)
Code:
Dim AutorVorname As String =Trim(Vorname)
Dim AutorNachname As String =Trim(Nachname) Dim rsAutor As RecordSet = DB.SQLSelect("SELECT * FROM Autoren WHERE (Nachname = '" + AutorNachname + "' AND Vorname = '" + AutorVorname + "')") // Alternative Dim rsAutor As RecordSet = DB.SQLSelect("SELECT * FROM Autoren WHERE (Nachname = '" + AutorNachname + "' AND Vorname LIKE '" + AutorVorname + "%'") //wenn Autor bereits vorhanden If rsAutor <> Nil Then Return True 'Do Until rsAutor.EOF 'If (Lowercase(rsAutor.Field("Nachname").StringValue) = Lowercase(AutorNachname)) And (Lowercase(rsAutor.Field("Vorname").StringValue) = Lowercase(AutorVorname)) Then 'AutorenID = rsAutor.Field("AutorenID").IntegerValue ' 'Else 'Return False 'End If 'rsAutor.MoveNext 'Loop Else Return False End If |
AW: Suche in Adressbuch
Ich hab keine Ahnung von RealBasic, aber was ist, wenn Du zusätzlich auf EOF prüfst?
Code:
Syntax ist natürlich ggf. anzupassen.
If (rsAutor <> Nil) and (not rsAutor.EOF) Then
Return True |
AW: Suche in Adressbuch
Oder evtl auf count
|
AW: Suche in Adressbuch
...verdammt, dann gibt er mir dennoch False zurück... ich muss nochmal die Strategie überdenken, vielleicht geht das ja auch anders, obwohl ich es sehr komisch finde. Psydocode von Delphi kann ich ohne weiteres in RealBasic umschreiben, also keine Sorge und erstmal Danke fürs mitdenken ;-)
|
AW: Suche in Adressbuch
Wenn false zurückkommt, ist das doch richtig :gruebel:.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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