像Windows 一樣地查詢

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Win2K + Delphi5 + SQL Server2K 編譯通過,執行正常。

const

sMAIN_SQL = 'SELECT ...FROM ... WHERE (...)' //用到別名,故下有"A.fItemNo"等

sEMPTY = '';

sITEM_TYPE = 'fItemType';

procedure SelectStock;

var

stItemNo, stItemName, SQL: string;

begin

adsStock.Active := False;

SQL := sMAIN_SQL;

adsStock.CommandText := SQL;

if Trim(edtItemNo.Text) <> sEMPTY then

begin

stItemNo := StringReplace(Trim(edtItemNo.Text), '*', '%', [rfReplaceAll]);

SQL := SQL + ' AND A.fItemNo like ''' + stItemNo + '''';

adsStock.CommandText := SQL;

end;

if Trim(edtItemName.Text) <> sEMPTY then

begin

stItemName := StringReplace(Trim(edtItemName.Text), '*', '%', [rfReplaceAll]);

SQL := SQL + ' AND A.fItemName like ''' + stItemName + '''';

adsStock.CommandText := SQL;

end;

if cbbItemType.Text <> sEMPTY then

begin

SQL := SQL + ' AND B.fItemType = :fItemType ';

adsStock.CommandText := SQL;

adsStock.Parameters.ParamByName(sITEM_TYPE).Value := cbbItemType.Text;

end;

......// 其他條件

adsStock.Active := True;

end;

這樣,如果用戶不輸入任何限制條件,則按sMAIN_SQL查詢出結果。一旦用戶輸入類似於"1-*05*"等形式的條件,將執行類似於Windows查詢一樣的模糊查詢。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航