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
nahpets
(Gast)

n/a Beiträge
 
#1

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 19:48
Hallo,

stell' uns bitte mal den Quelltext zur Verfügung, mit dem Du die Query bestückst. Es könnte sein, dass das SQL dort nicht in der von Dir erwarteten Form ankommt. Ohne Quelltext ist das aber schwer zu beurteilen.
  Mit Zitat antworten Zitat
DangerDistel

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

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 19:53
oh verdammt, ich hab auf Report geklickt ^^ ich denk das kam jetzt falsch an oder?
Alex
  Mit Zitat antworten Zitat
DangerDistel

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

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 19:57
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;
so also die [-Klammern habe hinzugefügt, da Acces mir diese anbietet, die ADOQuery bingt auch keinen Fehler, der RecordCount is immernoch 0 :/
Alex

Geändert von MrSpock (17. Mai 2013 um 20:32 Uhr) Grund: Delphi Tags eingefügt.
  Mit Zitat antworten Zitat
DangerDistel

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

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 20:00
sorry für die nicht vorhandene Formatierung , wie kann ich das einstellen? ^^

ich hoffe ihr könnt zumindest etwas entnehmen ^^

danke im voraus
Alex
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 20:09
Like mit * kennt Access nur in der eigenen Oberfläche, die im übrigen einiges anders macht als man es beim Zugriff z.B. über ADO machen muss. Wenn Du von außen zugreifst kannst/musst Du die übliche SQL - Syntax mit LIKE verwenden mit % als Asterix
Code:
WHERE XYZ LIKE 'Text%'

oder je nach Anforderung

WHERE XYZ LIKE '%Text%'
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: TADOQuery und LIKE

  Alt 17. Mai 2013, 20:17
Hallo,

okay, haben schon eineinhalb dutzend Leute geantwortet.

in der "normalen" SQL-Syntax ist der Platzhalter für beliebig viele Zeichen das % und nicht der *.

Wenn es dann noch nicht klappt, gib dir vor dem AQuery.Open; mal AQuery.SQL.Text (von mir aus auch mit ShowMessage kannst Du dann per Strg+C kopieren und hier einfügen) aus und prüfe, ob dadrin das ist, was Du erwartest. Dieser String muss in Access eine Ergebnismenge liefern, sonst ist er inhaltlich falsch, nicht zwingend auch syntaktisch.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:55 Uhr.
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