Tout d'abord, nous devons savoir que les chaînes nulles et vides sont différentes dans Access, donc si ce problème n'est pas bien géré, il causera beaucoup de problèmes, surtout dans les environnements mixtes. requêtes.
(Tutoriel recommandé : apprentissage de la base de données d'accès )
La solution est la suivante :
var SQLStr:string; begin // SQLStr := 'select * from ordertb where 1>0'; if Trim(Edit1.Text)<>'' then SQLStr := SQLStr +' and serialid like :a'; if Trim(Edit2.Text)<>'' then SQLStr := SQLStr +' and pname like :b'; with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(SQLStr); if Trim(Edit1.Text)<>'' then Parameters.ParamByName('a').Value := '%'+Trim(Edit1.Text)+'%'; if Trim(Edit2.Text)<>''then Parameters.ParamByName('b').Value := '%'+Trim(Edit2.Text)+'%'; Open; end; end;
ou :
begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('select * from ordertb where 1>0'); if Trim(Edit1.Text)<>'' then SQL.Add(' and serialid like ''%'+Trim(Edit1.Text)+'%'''); if Trim(Edit2.Text)<>''then SQL.Add(' and pname like ''%'+Trim(Edit2.Text)+'%'''); Open; end; end;
Résumé :
Filtrez les champs avec des conditions vides de l'instruction de requête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!