procedure TForm1.RadioGroup1Click(Sender: TObject);
var
itemname,itemid,formname:string;
i,formid:integer;
begin
itemname:=radiogroup1.Buttons[radiogroup1.ItemIndex].Caption;
if adoquery1.Locate('mingcheng',itemname,[loCaseInsensitive])=false then
begin
showmessage('找不到相应的子项目编号');
exit;
end; itemid:=adoquery1.FieldByName('zhangid').AsString;
formid:=adoquery1.FieldByName('zh').AsInteger;
// showmessage(inttostr(formid));
case formid of
1:formname:='jixie';
2:formname:='dianqi';
3:formname:='reli';
4:formname:='luyao';
5:formname:='jingzhi';
6:formname:='guandao';
7:formname:='xiaofang';
8:formname:='shuinuanqi';
9:formname:='kongtiao';
10:formname:='zidonghua';
11:formname:='fanghu';
12:formname:='zhineng';
13:formname:='feiyong';
end;
checklistbox1.Items.Clear;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Text:='select * from :formname where zjh =:par2';
//ADOQuery2.Parameters[0].Value:= formname;
ADOQuery2.Parameters[1].Value:= itemid;
adoquery2.Open;
// showmessage(inttostr(adoquery2.recordcount));
for i:=0 to adoquery2.recordcount-1 do
begin
checklistbox1.Items.Append(adoquery2.fieldbyname('mc').AsString);
adoquery2.Next;
end;
end;如果将:formname换成实际的表名称就可以了,高手们请帮忙!谢了!
var
itemname,itemid,formname:string;
i,formid:integer;
begin
itemname:=radiogroup1.Buttons[radiogroup1.ItemIndex].Caption;
if adoquery1.Locate('mingcheng',itemname,[loCaseInsensitive])=false then
begin
showmessage('找不到相应的子项目编号');
exit;
end; itemid:=adoquery1.FieldByName('zhangid').AsString;
formid:=adoquery1.FieldByName('zh').AsInteger;
// showmessage(inttostr(formid));
case formid of
1:formname:='jixie';
2:formname:='dianqi';
3:formname:='reli';
4:formname:='luyao';
5:formname:='jingzhi';
6:formname:='guandao';
7:formname:='xiaofang';
8:formname:='shuinuanqi';
9:formname:='kongtiao';
10:formname:='zidonghua';
11:formname:='fanghu';
12:formname:='zhineng';
13:formname:='feiyong';
end;
checklistbox1.Items.Clear;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Text:='select * from :formname where zjh =:par2';
//ADOQuery2.Parameters[0].Value:= formname;
ADOQuery2.Parameters[1].Value:= itemid;
adoquery2.Open;
// showmessage(inttostr(adoquery2.recordcount));
for i:=0 to adoquery2.recordcount-1 do
begin
checklistbox1.Items.Append(adoquery2.fieldbyname('mc').AsString);
adoquery2.Next;
end;
end;如果将:formname换成实际的表名称就可以了,高手们请帮忙!谢了!
解决方案 »
- dll调用问题
- sql火急!
- 一个可修改的画图程序,如何选定一条线???给点思路、方向都好!
- 时间查询问题,望高手赐教!!!!
- 飞信有电脑对手机发有条数限制吗?
- 我创建了一个SOUND.RC的资源的源文件,可是我用BRCC32 SOUND.RC却没有编译成.res 文件?为什么?郁闷中谢谢大家帮忙
- 在dbgrid中货币字段的值前加$符号(不通过编程)
- Delphi6怎样动态生成数据库文件,并添加表格
- 数据是什么时候真正写进数据库的?
- 关于dbcombobox问题(伴水--可以回答我吗?)
- 向word中追加内容,大家看看这个函数有什么问题?
- TControl为什么不能直接使用,非要重定义一个TMYCONTROL类型呢
// ADOQuery2.Parameters[0].Value:= formname;
ADOQuery2.Parameters[1].Value:= itemid;
如果将:formname换成实际的表名jixie就可以了
是怎么回事呢
用ADOtable应该是可以的!
---------------------------------------------------------------
可以用变量'select * from '+ formname +'';
在存儲過程中不能直接把表名、字段名當成參數。非用 exec 來執行一個語句字符串才行,
用 exec 有個不好的就是前面所定義的變量將無效。select * from aTable where aField=@aValue
select * from bTable where aField=@aValue
=>
create proc aProc
@tblName varchar(30),
@aValue varchar(30)
as
declare @sql varchar(1000)
declare @tblName varchar(30)
select @tblName=
select @sql='select * from '+@tblName+' where aField='+@aValue+' '
exec(@sql)
GO
三層結構,改了 ClientDataset.CommandText(在原有SQL語句後面加 where 語句) 然後再 Open,居然不會返回記錄,這是怎麼回事呀?原貼地址:
http://community.csdn.net/Expert/topic/4978/4978011.xml?temp=.4281275
'select * from '+ formname +'';成功了