主题:treeview操作删除数据库记录的问题请教
wangchj
[专家分:0] 发布于 2006-07-25 15:49:00
数据库中的记录通过treeview进行显示,在treeview中选择一条记录,然后点击删除按钮,希望的效果是treeview和数据库中的数据同时删除。下面的代码为什么不能实现这个功能呢?请各位前辈给予指点一下,谢谢!!
procedure Tyhglform.BitBtn2Click(Sender: TObject);
var
rt:integer;
tmpQuery:TQuery;
selected:string;
begin
selected:=treeview1.Items.Item[treeview1.selected.absoluteindex].Text;
if (selected=username) then
begin
Application.MessageBox('不能删除当前系统用户!','系统提醒',mb_ok);
exit;
end
else
begin
rt:=Messagedlg('你确定要删除用户'+selected+'?',mtwarning,[mbyes,mbno],0);
if rt=mrno then
exit
else
begin
tmpQuery:=TQuery.Create(self);
tmpquery.DatabaseName:='xxgl';
tmpQuery.SQL.Clear;
tmpQuery.SQL.Add('delete * from operator');
tmpQuery.SQL.Add('where name='''+TLabel(TreeView1.Selected.data).Caption+'''');
tmpQuery.ExecSQL;
TreeView1.Selected.Delete;
tmpQuery.Free;
end;
end;
end;
回复列表 (共11个回复)
沙发
wealthy [专家分:1840] 发布于 2006-07-25 16:15:00
procedure Tyhglform.BitBtn2Click(Sender: TObject);
var
rt:integer;
tmpQuery:TQuery;
selected:string;
begin
selected:=treeview1.Items.Item[treeview1.selected.absoluteindex].Text;
if (selected=username) then
begin
Application.MessageBox('不能删除当前系统用户!','系统提醒',mb_ok);
exit;
end
else
begin
rt:=Messagedlg('你确定要删除用户'+selected+'?',mtwarning,[mbyes,mbno],0);
if rt=mbyes then//注意这里,直接按下确定就删除好了,不要否了,再否无意义了
begin
tmpQuery:=TQuery.Create(self);
tmpquery.DatabaseName:=xxgl;//注意这里,DatabaseName要定义好哦
tmpQuery.SQL.Clear;
tmpQuery.SQL.Add('delete * from operator');
tmpQuery.SQL.Add('where name='''+TLabel(TreeView1.Selected.data).Caption+'''');
tmpQuery.ExecSQL;
TreeView1.Selected.Delete;
tmpQuery.Free;
end;
end;
end;
板凳
wangchj [专家分:0] 发布于 2006-07-25 16:37:00
谢谢楼上的,我用您给的代码运行时系统提示如下:
Project xxgl.exe raised exception class EDBEngineError with message 'Invalid
user of keyword.
Token:*
Line number:1'.Process stopped.Use Step or Run to continue.
请问是语句问题还是数据库设置问题?谢谢
3 楼
wealthy [专家分:1840] 发布于 2006-07-25 16:49:00
你看看,我的代码和你的基本一样的,只是改了数据库连接方法和代码编排顺序而已.
我不知你是点样连接数据库的
tmpquery.DatabaseName:='xxgl';
我是用xxgl连接数据库的,
请你改为你的连接数据库方法如tmpquery.DatabaseName:=******;
4 楼
wangchj [专家分:0] 发布于 2006-07-25 16:53:00
如果将连接数据库方法修改为tmpquery.DatabaseName:=xxgl;
系统会提示:Undeclared identifier: 'xxgl'呀??
5 楼
wealthy [专家分:1840] 发布于 2006-07-25 17:00:00
就是这里出错了,请改你原来连接方法.tmpquery.DatabaseName:='xxgl'
6 楼
wangchj [专家分:0] 发布于 2006-07-25 17:17:00
修改过的,修改成tmpquery.DatabaseName:='xxgl'的话
就会提示:
Project xxgl.exe raised exception class EDBEngineError with message 'Invalid
user of keyword.
Token:*
Line number:1'.Process stopped.Use Step or Run to continue.
检查了几遍还是找不到问题所在,头都大了。
我的operator表定义如下:
name A 20 *
password A 20
right A 10
以name为关键词应该没问题呀?
7 楼
wealthy [专家分:1840] 发布于 2006-07-25 17:24:00
表是无问题的关键是'xxgl'
你的'xxgl'点定义来的,贴出来看看.
你改成这个试试:
tmpquery.DatabaseName:='c:\data\*.*'//在''内加入你的数据表所在目录
8 楼
wangchj [专家分:0] 发布于 2006-07-25 17:36:00
在EDB Administrator中定义的xxgl如下:
type=standard
defult driver=paradox
enable bcd=true
path=E:\学习资料\delphi程序\小程序\信息查询
9 楼
wealthy [专家分:1840] 发布于 2006-07-25 20:51:00
哦:
将 tmpQuery.SQL.Add('delete * from operator');
改为tmpQuery.SQL.Add('delete from operator');
10 楼
wangchj [专家分:0] 发布于 2006-07-26 08:47:00
[em28][em28]非常感谢楼上的,问题得以解决,能不能麻烦您解释一下,为什么
这种数据库定义就不能用delete * from operator.
delete * from operator和delete from operator和什么区别吗?
谢谢!!
我来回复