回 帖 发 新 帖 刷新版面

主题:treeview操作删除数据库记录的问题请教

数据库中的记录通过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个回复)

沙发

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; 

板凳

谢谢楼上的,我用您给的代码运行时系统提示如下:
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 楼

你看看,我的代码和你的基本一样的,只是改了数据库连接方法和代码编排顺序而已.

我不知你是点样连接数据库的
tmpquery.DatabaseName:='xxgl';

我是用xxgl连接数据库的,

请你改为你的连接数据库方法如tmpquery.DatabaseName:=******;


4 楼


如果将连接数据库方法修改为tmpquery.DatabaseName:=xxgl;
系统会提示:Undeclared identifier: 'xxgl'呀??

5 楼

就是这里出错了,请改你原来连接方法.tmpquery.DatabaseName:='xxgl'

6 楼


修改过的,修改成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 楼

表是无问题的关键是'xxgl'
你的'xxgl'点定义来的,贴出来看看.
你改成这个试试:
tmpquery.DatabaseName:='c:\data\*.*'//在''内加入你的数据表所在目录

8 楼


在EDB Administrator中定义的xxgl如下:
type=standard
defult driver=paradox
enable bcd=true
path=E:\学习资料\delphi程序\小程序\信息查询

9 楼

哦:
将 tmpQuery.SQL.Add('delete * from operator');
改为tmpQuery.SQL.Add('delete from operator');

10 楼


[em28][em28]非常感谢楼上的,问题得以解决,能不能麻烦您解释一下,为什么
这种数据库定义就不能用delete * from operator.
delete * from operator和delete  from operator和什么区别吗?
谢谢!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册