关于按条件查询(100分)

  • 主题发起人 主题发起人 aileen74
  • 开始时间 开始时间
A

aileen74

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个FORM里有EDIT1.EDIT2.EDIT3.DBGRID1.BITBTN1.BITBTN2等控件,用ADOQUERY1连接数据库(ACCESS2000).
我想实现按BITBTN1时,从数据库找出两个字段等于EDIT1和EDIT2的记录,并且在DBGRID1里
显示出来,然后统计出符合条件的记录某个数值字段的合计数在EDIT3里显示出来。
 
动态sql语句就可以了
 
这不是很简单嘛!用sql语句轻松搞定。
 
下面的例子你能看明、明、白、白吗?

strBaseSql := 'SELECT U.userType,U.userNo,U.passwd,U.changeable,' +
'U.createdBy,U.dateCreated,U.lastSucceeded,U.lastFailed,U.status,' +
'E.deptNo FROM TscUsers U INNER JOIN ThrEmployees E ' +
' ON U.userNo = E.empNo WHERE U.status<>''D''';

strSql := '';
if trim(cboUserType.Text) <> '' then
strSql := strSql + ' and U.userType=''' + cboUserType.Text + '''';
if trim(edtUser.Text) <> '' then
strSql := strSql + ' and U.userNo=''' + edtUser.Text + '''';
if trim(edtDeptNo.Text) <> '' then
strSql := strSql + ' and E.deptNo=' + edtDeptNo.Text;

DMSC.cdsScUsers.Close;
DMSC.cdsScUsers.CommandText := strBaseSql + strSql;
DMSC.cdsScUsers.Open;
 
sql.add('select count(*) from A where');
if Edit1.text<>'' then
sql.add( 'and A.a='''+Edit1.text+'''');
if Edit2.text<>'' then
sql.add( 'and A.a='''+Edit2.text+'''');
ExceSql;
 
对,先将ADOQUERY1与DBACCESS关联,DBACCESS再与DBGRID1关联.
然后直接操作ADOQUERY1.
ADOQUERY1.sql.clear;
ADOQUERY1.sql.add(select * from *** where a='''+Edit1.text+'''+…………);sql的查询语句
ADOQUERY1.open;
搞定!!!!!!!!
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部