Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Like Abfrage aufbauen ? (https://www.delphipraxis.net/30613-sql-like-abfrage-aufbauen.html)

Delphimagnet 27. Sep 2004 09:13


SQL Like Abfrage aufbauen ?
 
Hi,

Ich versuche gerade für eine Suchmaske eine dazugehörige SQL-Abfrage zusammen zubasteln.

In einem mir ausgehändigten SQL-Buch (Learning Oracle PL/SQL) hab ich folgendes Beispiel gefunden:

SQL-Code:
WHERE UPPER(author) LIKE 'SHAKESPEARE%';
Jetzt setz ich das bisher in einem String zusammen und das '-Zeichen hat dort ja schon eine Bedeutung.
Wie geh ich jetzt am Besten vor?
Irgendwie das ' escapen oder gibt es was eleganteres.

Mein noch unfertiger Delphicode sieht bisher so aus:

Delphi-Quellcode:
tmpSqlString := '';
  tmpSqlString := 'select select MiaID, Name, Vorname, Plz, Ort';
  tmpSqlString := tmpSqlString + ' from DM_ADMIN.Mitarbeiter ';
  tmpSqlString := tmpSqlString + ' where NAME Like %:P_inp_name';
  tmpSqlString := tmpSqlString + ' where VORNAME Like %:P_inp_vorname';
  tmpSqlString := tmpSqlString + ' where STRASSE Like %:P_inp_strasse';
  tmpSqlString := tmpSqlString + ' where BEZEICHNUNG = :P_cmb_landMitarbeiter';


  tmpQry := TQuery.create(nil);


  tmpQry.parambyname('P_inp_name').asString := inp_name.text;
  tmpQry.parambyname('P_inp_vorname').asString := inp_vorname.text;
  tmpQry.parambyname('P_inp_strasse').asString := inp_strasse.text;
  tmpQry.parambyname('P_cmb_landMitarbeiter').asString := cmb_landMitarbeiter.text;

  tmpQry.destroy;


-----------------------//edit//-----------------
Hat sich erledigt.
Ich machs einfach so:


Delphi-Quellcode:
tmpSqlString := '';
  tmpSqlString := 'select select MiaID, Name, Vorname, Plz, Ort';
  tmpSqlString := tmpSqlString + ' from DM_ADMIN.Mitarbeiter ';
  tmpSqlString := tmpSqlString + ' where UPPER(NAME) Like :P_inp_name';
  tmpSqlString := tmpSqlString + ' and UPPER(VORNAME) Like :P_inp_vorname';
  tmpSqlString := tmpSqlString + ' and UPPER(STRASSE) Like :P_inp_strasse';
  tmpSqlString := tmpSqlString + ' and UPPER(BEZEICHNUNG) = :P_cmb_landMitarbeiter';


  tmpQry := TQuery.create(nil);


  tmpQry.parambyname('P_inp_name').asString := ANSIuppercase(Trim(inp_name.text))+'%';
  tmpQry.parambyname('P_inp_vorname').asString := ANSIuppercase(Trim(inp_vorname.text))+'%';
  tmpQry.parambyname('P_inp_strasse').asString := ANSIuppercase(Trim(inp_strasse.text))+'%';
  tmpQry.parambyname('P_cmb_landMitarbeiter').asString := cmb_landMitarbeiter.text;

  tmpQry.destroy;
-----------------------//edit//-----------------

Leuselator 27. Sep 2004 09:24

Re: SQL Like Abfrage aufbauen ?
 
so etwa?
Delphi-Quellcode:
  tmpQry := TQuery.create(nil);

  tmpQry.SQL.Add('SELECT MiaID                        ');
  tmpQry.SQL.Add('    , Name                         ');
  tmpQry.SQL.Add('    , Vorname                      ');
  tmpQry.SQL.Add('    , Plz                          ');
  tmpQry.SQL.Add('    , Ort                          ');
  tmpQry.SQL.Add(' FROM DM_ADMIN.Mitarbeiter         ');
  tmpQry.SQL.Add(' WHERE Name       LIKE :PName      ');
  tmpQry.SQL.Add('  AND Vorname    LIKE :PVorname   ');
  tmpQry.SQL.Add('  AND Strasse    LIKE :PStrasse   ');
  tmpQry.SQL.Add('  AND Bezeichnung LIKE :PBezeichnung');

  tmpQry.parambyname('PName      ').asString := inp_name          .text+'%';
  tmpQry.parambyname('PVorname   ').asString := inp_vorname       .text+'%';
  tmpQry.parambyname('PStrasse   ').asString := inp_strasse       .text+'%';
  tmpQry.parambyname('PBezeichnung').asString := cmb_landMitarbeiter.text+'%';
  ...
Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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