AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Suche in Adressbuch

Ein Thema von hansklok · begonnen am 6. Feb 2013 · letzter Beitrag vom 6. Feb 2013
Antwort Antwort
Seite 1 von 2  1 2      
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#1

Suche in Adressbuch

  Alt 6. Feb 2013, 18:10
Datenbank: SQLite • Version: 3.7.15.2 • Zugriff über: Programm
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:17
Dein erstes Statement ist völlig korrekt, wenn ich nichts übersehen habe. Wie genau sieht denn die Ergebnismenge aus?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:18
Es werden eben alle Personen ausgegeben, deren Nachname "Brecht" ist, unabhängig davon, wie der Vorname lautet...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:29
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#5

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:34
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 ?
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#6

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:35
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:39
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:42
Oder evtl auf count
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#9

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:43
...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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Suche in Adressbuch

  Alt 6. Feb 2013, 18:46
Wenn false zurückkommt, ist das doch richtig .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 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