Wątek przeniesiony 2014-07-30 12:41 z Newbie przez furious programming.

Zapytanie z Lazarusa do bazy Access z * nie zwraca wyników - dlaczego ?

0

Witam.

Tworze dodatek do posiadanej aplikacji (opierającej sie na bazie MS Access'owej) i napotkałem problem...
W bazie jest tabela towary.
Jeżeli otworzę baze w Accessie czy OpenOffice.org Base i wykonam kwerendę SELECT * FROM towary otrzymuję 38702 wyników.
Tak samo w przypadku gdy wykonam zapytanie SELECT * FROM towary WHERE klasyfikacja LIKE '*'.

Natomiast wykonując te zapytanie w swojej aplikacji dostaje różne wyniki.
Mam procedurę:

procedure ACCESS_OPEN(zapytanie: string);
begin
 AccessQuery.Close;
 AccessQuery.SQL.Text:=zapytanie;
 TRY
    IF AccessQuery.SQL.Text<>''  THEN AccessQuery.Open;
 EXCEPT
      ON e: Exception DO LOG(' BŁĄD PRODEDURY ACCESS_OPEN: ' +zapytanie+'   '+E.Message);
 END;
end;

Jeśli wywołam:

    ACCESS_OPEN('SELECT * FROM towary');
     AccessQuery.Last;
     ShowMessage(IntToStr(FPomoc.AccessQuery.RecordCount));

Otrzumuje wynik 38702.

Natomiast wywołując

    ACCESS_OPEN('SELECT * FROM towary WHERE klasyfikacja LIKE ''*''');
     AccessQuery.Last;
     ShowMessage(IntToStr(FPomoc.AccessQuery.RecordCount));

Otrzymuje 0.

Dlaczego ?

Z bazą łącze się ODBC przez plikowy DSN.

dodanie tagu 'access' - furious programming

1

Zamień "*" na "%"

0

Rzeczywiście działa, dziękuje. Choć przyznam szczerze że nie rozumiem dlaczego zapytanie do tej samej bazy z innych programów musi przybierać inną postać (inny symbol wieloznaczny)...

0

komunikujesz sie z bazą poprzez jezyk SQL.
http://www.w3schools.com/sql/sql_like.asp
http://www.techonthenet.com/sql/like.php

w SQL od zawsze % to wildcard.

1 użytkowników online, w tym zalogowanych: 0, gości: 1