Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   TADOQuery und LIKE (https://www.delphipraxis.net/174916-tadoquery-und-like.html)

nahpets 17. Mai 2013 20:30

AW: TADOQuery und LIKE
 
Zitat:

Zitat von DangerDistel (Beitrag 1215679)
habt vielen Dank :) ich werde dahingehend die Abfrage ändern, falls es noch Probleme geben sollte, melde ich mich noch einmal,
noch eine andere Frage. Gibt es hier im Forum die Delphi - Formatierung? also mit Tab oder Leerzeichen?
Weil wenn alles untereinander steht sieht das dumm aus. ^^

Über dem Text, den Du eingibts, ist eine Reihe von Symbolen, u. a. ein Delphisymbol. (das 16. von links?) Es erscheint beim Mitdermausdrüberfahren der Hinweis: Delphi-Code einfügen.
Dadrauf klicken und dann an der Cursorposition den Quelltext einfügen.
Per Copy&Paste bleibt die Formatierung erhalten.
Könnte dann in etwa so aussehen:
Delphi-Quellcode:
procedure TDataMod.SQL_LIKE_TBLSearch(
  AConnection:TADOConnection;
  ATblName:WideString;
  arr_TBLCols:array of string;
  arr_TBLValues:array of string;
  APK:string;
  var AResultList:TStringList
);
var AQuery:TADOQuery;
    ASQLTemp:string;
    ix:integer;
    ASQL_Default:string;
begin
  {SELECT STAEDTE.ID_STADT, STAEDTE.STADT_NAME
   FROM STAEDTE
   WHERE (([STAEDTE]![STADT_NAME] Like "%Mark"));}
  if AConnection <> nil then begin
    if Trim(ATblName) <> EmptyWideStr then begin
      if Length(arr_TBLCols) > 0 then begin
        if Length(arr_TBLValues) > 0 then begin
          if Length(arr_TBLCols) = Length(arr_TBLValues) then begin
            if TblExists(AConnection,ATblName) then begin
              AQuery:=TADOQuery.Create(Self);
              try
                ASQLTemp := 'SELECT * FROM' + fConstants.BLANK1 +
                            ATblName + fConstants.BLANK1 +
                            'WHERE' + fConstants.BLANK1;
                ASQL_Default := ASQLTemp;
                for ix := Low(arr_TBLCols) to High(arr_TBLCols) do begin
                  if (Trim(arr_TBLCols [ix]) <> EmptyStr)
                  and (Trim(arr_TBLValues[ix]) <> EmptyStr) then begin
                    if Length(arr_TBLCols) = 1 then begin
                      ASQLTemp := ASQLTemp + '[' + ATblName +']![' + arr_TBLCols[ix] + ']' + fConstants.BLANK1
                                + 'LIKE' + fConstants.BLANK1 + fConstants.AnfZeichen + arr_TBLValues[ix] + '%' + fConstants.AnfZeichen;
                    end else begin
                      if ix < High(arr_TBLCols) then begin
                        ASQLTemp := ASQLTemp + '[' + ATblName +']![' + arr_TBLCols[ix] + ']' + fConstants.BLANK1 +
                                    'LIKE' + fConstants.BLANK1 + fConstants.AnfZeichen + arr_TBLValues[ix] + fConstants.AnfZeichen + fConstants.BLANK1 + 'AND' + fConstants.BLANK1;
                      end else begin
                        if ix = High(arr_TBLCols) then
                          ASQLTemp := ASQLTemp + '[' + ATblName +']![' + arr_TBLCols[ix] + ']' + fConstants.BLANK1 +
                                      'LIKE' + fConstants.BLANK1 + fConstants.AnfZeichen + arr_TBLValues[ix] + fConstants.AnfZeichen;
                      end;
                    end;
                  end;
                end;
                if ASQLTemp <> ASQL_Default then begin
                  AQuery.Connection := AConnection;
                  AQuery.SQL.Add(ASQLTemp);
                  AQuery.Open;
                  AQuery.First;
                  while not(AQuery.Eof) do begin
                    AResultList.Add(AQuery.FieldByName(fConstants.TBL_ TOWN_ID).AsString);
                    AQuery.Next;
                  end;
                  AQuery.Close;
                end;
              finally
                AQuery.Free;
              end;
            end;
          end;
        end;
      end;
    end;
  end;
end;

DangerDistel 17. Mai 2013 20:33

AW: TADOQuery und LIKE
 
Ahh ok Danke :)

MrSpock 17. Mai 2013 20:35

AW: TADOQuery und LIKE
 
Ja, du kannst im Beitrag oben aus der Formatleiste den "Delphi Helm" auswählen. Dadurch werden die Tags [ delphi ] und das Ende-Delphi Zeichen erzeugt.

Furtbichler 18. Mai 2013 06:24

AW: TADOQuery und LIKE
 
Sowas
Delphi-Quellcode:
ASQLTemp := ASQLTemp + '[' + ATblName +']![' + arr_TBLCols[ix] + ']' + fConstants.BLANK1
                                 + 'LIKE' + fConstants.BLANK1 + fConstants.AnfZeichen + arr_TBLValues[ix] + '%' + fConstants.AnfZeichen;
schreibt man dann doch besser (z.B.) so:
Delphi-Quellcode:

ASQLTemp := ASQLTemp + Format('[%s]![%s] LIKE %s',aTblName, arr_TBLCols[ix], QuotedStr(arr_TBLValues[ix]+'%'));
Anmerkung 1: Was soll denn 'fConstants.BLANK1'?
Bitte beachte die Verwendung der Funktion 'QuotedStr'. Deine Lösung bringt für Werte, die ein Hochkomma enthalten, einen Fehler.

Bernhard Geyer 18. Mai 2013 06:47

AW: TADOQuery und LIKE
 
Und wie schon so oft angemerkt: Verwende parametrisierte Abfragen!

DangerDistel 18. Mai 2013 08:28

AW: TADOQuery und LIKE
 
Zitat:

Zitat von Furtbichler (Beitrag 1215701)
Sowas
Delphi-Quellcode:
ASQLTemp := ASQLTemp + '[' + ATblName +']![' + arr_TBLCols[ix] + ']' + fConstants.BLANK1
                                 + 'LIKE' + fConstants.BLANK1 + fConstants.AnfZeichen + arr_TBLValues[ix] + '%' + fConstants.AnfZeichen;
schreibt man dann doch besser (z.B.) so:
Delphi-Quellcode:

ASQLTemp := ASQLTemp + Format('[%s]![%s] LIKE %s',aTblName, arr_TBLCols[ix], QuotedStr(arr_TBLValues[ix]+'%'));
Anmerkung 1: Was soll denn 'fConstants.BLANK1'?
Bitte beachte die Verwendung der Funktion 'QuotedStr'. Deine Lösung bringt für Werte, die ein Hochkomma enthalten, einen Fehler.



den Format-Befehl hätte ich dann auch verwendet, ich wollte nur erstma schaun was ich für Ergebnisse bekomm.
fConstants.BLANK1 = Leerzeichen, wenn ich mir strings zusammensetze nutze ich lieber Konstanten, als ' ' , ist ne Angewohnheit von meiner Firma in der ich arbeite ^^


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

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