AGB  ·  Datenschutz  ·  Impressum  







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

TADOQuery und LIKE

Ein Thema von DangerDistel · begonnen am 17. Mai 2013 · letzter Beitrag vom 18. Mai 2013
Antwort Antwort
Seite 2 von 2     12   
nahpets
(Gast)

n/a Beiträge
 
#11

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 20:30
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;

Geändert von nahpets (17. Mai 2013 um 20:32 Uhr) Grund: Edit fand eine nicht unerhebliche Anzahl von Schreibfehlern.
  Mit Zitat antworten Zitat
DangerDistel

Registriert seit: 3. Aug 2012
16 Beiträge
 
Delphi 2010 Professional
 
#12

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 20:33
Ahh ok Danke
Alex
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#13

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 20:35
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#14

AW: TADOQuery und LIKE

  Alt 18. Mai 2013, 06:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: TADOQuery und LIKE

  Alt 18. Mai 2013, 06:47
Und wie schon so oft angemerkt: Verwende parametrisierte Abfragen!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
DangerDistel

Registriert seit: 3. Aug 2012
16 Beiträge
 
Delphi 2010 Professional
 
#16

AW: TADOQuery und LIKE

  Alt 18. Mai 2013, 08:28
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 ^^
Alex
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:29 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