Lazarus 2.0.10 (2020.07.11.)
Letöltés

file SQLQuery/Dataset Filter Like

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: SQLQuery/Dataset Filter Like

Egy általános OnFilterRecord eljárás megoldhatja az ékezetes betűk gondját is:
procedure Form1.SQLQueryFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := Pos('akármi', DataSet.FieldByName('field1').AsString) > 0;
end;
// majd az adott helyen:
SQLQuery.Filter := '';  // ez maradjon csak üres
SQLQuery.Filtered := True;  // Ennél le fog futni a fenti feltételkereső
Mindenesetre tervezői megfontolást igényel, hogy melyik a gyorsabb és hatékonyabb:
  1. Nagyobb adathalmazt egyszer lekérdezni, majd utána mindenféle utólagos szűrési feltételeket módosítani, és így megjeleníteni a a sok adatból kiszűrt részleteket, vagy
  2. az egyes szűrési feltételeket az SQL WHERE részébe helyezni, ami kevesebb adathalmazt mozgat majd át, nem igényel utómunkát, cserébe szűrési szándék változtatásakor mindannyiszor le kell futnia egy SELECT lekérdezést.
Ha a szűrés feltételeit gyorsan kell tudni változtatgatni, akkor tényleg inkább az első, de minden más esetben talán inkább a második volna a célravezetőbb.
#2062

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: SQLQuery/Dataset Filter Like

Ez működik:
SQLQuery.Filter:=' field1= ''*' + param + '*'' ;' ;

De az ékezeteknél nem igazán. :)
#2061

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab létrehozta a témát: SQLQuery/Dataset Filter Like

Üdv!
Meg lehet valahogy adni a DataSet/SQLQuery-nek, hogy LIKE szerűen filterezzen?
Pl.:
SELECT * FROM table WHERE field1 LIKE '%akarmi%';

A LIKE-ot nem fogadja el:
SQLQuery.Filter:=' field1 LIKE ''%' + param + '%'' ;' ;
SQLQuery.Filtered:=True;

Hibaüzenet: "field LIKE unknown"
#2060