Announcement

Collapse
No announcement yet.

SQL Abfrage mit like bei leeren Feld

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage mit like bei leeren Feld

    Hallo ich nutze immer die Sql Abfrage mit dem like Befehl wiefolgt um meine Daten abzufragen:
    <Pre>
    query1.sql.add('select * from kunden where vorname like '+chr(39)+variable+chr(39)+'%');
    </Pre>
    Damit auch eine "unscharfe Suche" durchgeführt wird. Wenn die Variable leer ist sollen dann auch alle Datensätze angezeigt werden. Das klappt auch ganz prima außer wenn das Feld Vorname in einem datensatz leer ist, dieser wird dann nicht angezeigt. Unter Delphi 1 hat das noch funktioniert aber unter Delphi 5 zeigt er den Datensatz dann nicht mehr an. Ich nutze Delphi 5 mit BDE/Paradox Datenbanken. Wie müßte ich hier die Abfrage generieren, dass alle Datensätze angezeigt werden auch wenn das Feld leer ist. Die where Abfrage muss aber erhalten bleiben da die Variable ggf. einen Wert enthält der dann natürlich auch bei einer Abfrage berücksichtigt werden muß.

    Grüße Hendrik

  • #2
    Hallo Hendrik,

    wenn leere Felder (null) mit angezeigt werden sollen, dann kannst du deine where-Bedingung ja erweitern: ...where vorname like QuotedStr(variable + '%') or vorname is null...
    Eine andere Möglichkeit wäre die bedingte Zuweisung des SQL-Statements:<pre>
    ...
    if variable = '' then
    query1.sql.add('select * from kunden where vorname is null');
    else
    query1.sql.add('select * from kunden where vorname like ' +
    QuotedStr(variable + '%'));
    ...</pre>

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Das Problem ist, das wenn die Variable leer ist alle Datensätze angezeigt werden sollen und bei Delphi 1 war es so das bei der Abfrage ...where vorname like '%' auch die leeren Datensätze angezeigt wurden und dies geht bei Delphi 5 nicht mehr.

      Ich werde es nun so realisieren, das der like Befehl nur dann verwendet wird wenn die Variable einen Wert enthält, wenn die Variable leer ist wird der like Befehl für das entsprechende Feld weggelassen. Dann werden auch die leeren Felder mit angezeigt.

      Grüße Hendri

      Comment

      Working...
      X