Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Suche in Adressbuch (https://www.delphipraxis.net/173092-suche-adressbuch.html)

hansklok 6. Feb 2013 18:10

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:
"SELECT * FROM Autoren WHERE Nachname = 'Brecht' AND Vorname = 'Klaus'"
, 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:

Code:
"SELECT * FROM Autoren WHERE Nachname = 'Brecht' AND Vorname = 'Bertolt'"
. Das funktioniert leider aber nicht. Kann mir bitte jemand auf die Sprünge helfen?

Beste Grüße hansklok

DeddyH 6. Feb 2013 18:17

AW: Suche in Adressbuch
 
Dein erstes Statement ist völlig korrekt, wenn ich nichts übersehen habe. Wie genau sieht denn die Ergebnismenge aus?

hansklok 6. Feb 2013 18:18

AW: Suche in Adressbuch
 
Es werden eben alle Personen ausgegeben, deren Nachname "Brecht" ist, unabhängig davon, wie der Vorname lautet...

DeddyH 6. Feb 2013 18:29

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.

haentschman 6. Feb 2013 18:34

AW: Suche in Adressbuch
 
Hallo...
Code:
"SELECT * FROM Autoren WHERE Nachname = 'Brecht' AND Vorname = 'Klaus'"
+
Zitat:

dann wird mir dennoch ein True zurückgegeben
...paßt nicht zusammen. Das Statement gibt eine Ergebnismenge zurück. Um auf ein "True" zu kommen mußt du die Ergebnismenge untersucht haben. Wie sieht die entsprechende Funktion aus ?

hansklok 6. Feb 2013 18:35

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

DeddyH 6. Feb 2013 18:39

AW: Suche in Adressbuch
 
Ich hab keine Ahnung von RealBasic, aber was ist, wenn Du zusätzlich auf EOF prüfst?
Code:
If (rsAutor <> Nil) and (not rsAutor.EOF) Then
    Return True
Syntax ist natürlich ggf. anzupassen.

Aphton 6. Feb 2013 18:42

AW: Suche in Adressbuch
 
Oder evtl auf count

hansklok 6. Feb 2013 18:43

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 ;-)

DeddyH 6. Feb 2013 18:46

AW: Suche in Adressbuch
 
Wenn false zurückkommt, ist das doch richtig :gruebel:.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.
Seite 1 von 2  1 2      

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