CheckListBox1和数据库连接 删除的问题(20分)

  • 主题发起人 主题发起人 lyplay2
  • 开始时间 开始时间
L

lyplay2

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOQUERY1,CheckListBox1
配合显示出下列内容

口 001 A单位
口 002 B单位
口 003 C单位

如何删除选中的多个记录。
 
var
delsql:string;
begin
delsql:='';
if 1.checked then
delsql:=' where f=001'
if 2.checked then
if delsql='' then
delsql:=' where f=002'
else delsql:=' or f=002'
...
with adoquery1 do begin
close;
sql.clear;
sql.add('delete table '+delsql);
execsql;
end
end
 
如果选中了100个单位:(
 
10000个单位你干吗要这样来?
 
100个左右单位,:)
我想应该有个简便点的方法吧
因为我看见别人的程序中这样做过(商业软件,没有源吗)


 
delsql:string;
begin
delsql:='';
if 1.checked then
delsql:=' where f=001'
if 2.checked then
if delsql='' then
delsql:=' where f=002'
else delsql:=' or f=002'
部分能否用一个循环来简化?
 
while not ADOQuery1.Eof do
begin
if CheckListBox1.Checked[ADOQuery1.RecNo-1] then
begin
for i:=0 to FieldConst-1 do
dw_dm:=ADOQuery1.Fields[0].Asstring;
with adoquery1 do begin
close;
sql.clear;
sql.add('delete table where dwdm='''+dw_dm+'''');
execsql;
end

end;
ADOQuery1.Next;
end;
错在那里?
 
那当然错了,你用一个adoquery1能不错吧,外面是循环,里面还改sql语句!!
这样做吧,
var
i:integer;
adoquery.sql.add('delete * from tablenmae where dwdm=:dm');
for i:=0 to checklistbox1.items.count-1 do
begin
if checklistbox1.check then
begin
adoquery1.close;
adoquery1.parameters.parambyname('dm').value:=ss;//ss为checklistbox1选中后的单位代码!!
adoquery1.execsql;
end;
end;
 
谢谢,

;//ss为checklistbox1选中后的单位代码!!
有点不明白,SS:=?如何赋值?
 
那就看你的checklistbox1啦,如果
口 001 的话
就是checklistbox1.items.strings
如果不是的话,可能就费点事吧,
 
谢谢,我试试
对了,能把您写的表格通用查询给我参考学习一下吗?
lyplay2@21cn.com
 
多人接受答案了。
 
后退
顶部