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š… nový
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… nový
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… nový
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… nový
Cobol 18.12.2012 20:37
Cobol
Skús to takto: poznamka <> '%kr%', alebo si to ošetri v udalosti OnFilterRecord: ADODatasetFilterRe… nový
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

Syntax je správna a funguje. :-)
Otázka je: ako máš postavený SQL dotaz, ako a na akú DB sa pripájaš?

Toto vypovedá o čom?

poznamka NOT LIKE '%kr%'

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ěď.

Aha, Ty používaš tabuľku nie SQLQuery...
Potom podľa ADO dokumentácie nie je možne použiť NOT operátor pri filtrovaní záznamov.

Musíš to riešiť zrejme inak.

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