Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi Ado sql NOT LIKE

Dobrý den, prosím mohl by mi někdo poradit, jaká je syntaxe při použití klíčového slova NOT LIKE v ADO databázi ? Dotaz

poznamka LIKE '%kr%'

mi funguje bez problémů, ovšem pokud chci použít

poznamka NOT LIKE '%kr%'

, tak mi to vyhazuje chybu "Argumenty mají chybný typ, jsou mi mimo přijatelný rozsah nebo vzájemně kolidují." Moc děkuji za odpověď.

Předmět Autor Datum
Syntax je správna a funguje. :-) Otázka je: ako máš postavený SQL dotaz, ako a na akú DB sa pripájaš…
pme 18.12.2012 13:45
pme
Omlouvám se, připojuji se k databázi MS Access a zatím jsem to testoval tak, že jsem k ADOTable přip…
Cobol 18.12.2012 14:19
Cobol
Aha, Ty používaš tabuľku nie SQLQuery... Potom podľa ADO dokumentácie nie je možne použiť NOT operát…
pme 18.12.2012 15:02
pme
Tak to není moc potěšující informace :-( Nemá někdo prosím nápad, jak to vyřešit? Jde mi o to, abych…
Cobol 18.12.2012 20:37
Cobol
Skús to takto: poznamka <> '%kr%', alebo si to ošetri v udalosti OnFilterRecord: ADODatasetFilterRe…
pme 18.12.2012 20:45
pme
Díky za návrh, vyzkouším. Já to zkoušel i s ADOQuery, ale zdálo se mi, že čas při vykonávání SELECT… poslední
Cobol 18.12.2012 20:54
Cobol

Omlouvám se, připojuji se k databázi MS Access a zatím jsem to testoval tak, že jsem k ADOTable připojil tabulku a použil AdoTable.Filter, což mi na všechny dotazy funguje, ale s tím NOT LIKE prostě ne :-( Chci tím vybrat všechny záznamy, které neobsahují 'kr'. Díky za odpověď.

Tak to není moc potěšující informace :-( Nemá někdo prosím nápad, jak to vyřešit? Jde mi o to, abych při každém filtrování nemusel načítat celý dataset, což při větším množství dat zabere mnohem víc času :( Jde prostě o to, abych mohl filtrovat záznamy takto: Má na začátku,Nemá na začátku,Má na konci,Nemá na konci,Obsahuje,Neobsahuje. Moc díky za každý nápad.

Skús to takto: poznamka <> '%kr%', alebo si to ošetri v udalosti OnFilterRecord:

ADODatasetFilterRecord(...); 
var
   str: string;
begin
   str := uppercase(ADODataset.FieldByName('poznamka').AsString);
   if pos('kr', str) > 1 then
      Accept := False
   else
      Accept := True;
end; 

Úplne najednoduhšie a najlepšie je to spraviť pomocou SQL dotazu - musíš ale použiť TADOQuery nie TADOTable...

Zpět do poradny Odpovědět na původní otázku Nahoru