小妹是初学者,编“用户管理”这项功能时,编译没错,运行就出现了'read of address 000000D2'!
怎么回事啊?涉及代码是: YHq.Close; //查出用户信息
YHq.SQL.Clear;
YHQ.SQL.Add('SELECT A.users as 用户名,B.qxm as 权限 FROM c_user AS A ');
YHQ.SQL.Add('INNER JOIN c_qxb AS B ON A.QXID=B.QXID');
YHQ.Open; //这是个ADOQUERY QXM_ADOQ:=TADOQuery.Create(nil); //动态创建ADOQuery控件
QXM_ADOQ.Connection:=DM.dbstudy_ADOConn;
QXM_ADOQ.SQL.Add('SELECT QXM FROM c_qxb');
QXM_ADOQ.Open;
while not QXM_ADOQ.Eof do
begin
QXCB.Items.Add(QXM_ADOQ.FieldValues['QXM']); //取出权限名字段
QXM_ADOQ.Next;
end;
QXM_ADOQ.Close;
FreeAndNil(QXM_ADOQ);
ShowYHInfo; //这是个函数
YHtable.Open; //单步到这,就出现那个框框了 其中
//编写用户信息函数
Procedure Txtgl_Form.ShowYHInfo;
begin
YHM.Text:=DBGrid1.Fields[0].Text;
YHM.Enabled:=false;
QXcb.ItemIndex:=QXCB.Items.IndexOf(DBGrid1.Fields[1].Text);
if YHM.Text<>YH then
begin
MM.Enabled:=false;
reMM.Enabled:=false; //YHM,MM,REMM都是编辑框的NAME
end
else begin
MM.Enabled:=true;
ReMM.Enabled:=true;
end;
end;我想实现的是:取出用户名和用户权限名(管理员或一般用户)
其中用户名在c_user表内,权限名在c_qxb内到底为什么出现那个错呢?哪位仁兄能帮我解答下,谢了
怎么回事啊?涉及代码是: YHq.Close; //查出用户信息
YHq.SQL.Clear;
YHQ.SQL.Add('SELECT A.users as 用户名,B.qxm as 权限 FROM c_user AS A ');
YHQ.SQL.Add('INNER JOIN c_qxb AS B ON A.QXID=B.QXID');
YHQ.Open; //这是个ADOQUERY QXM_ADOQ:=TADOQuery.Create(nil); //动态创建ADOQuery控件
QXM_ADOQ.Connection:=DM.dbstudy_ADOConn;
QXM_ADOQ.SQL.Add('SELECT QXM FROM c_qxb');
QXM_ADOQ.Open;
while not QXM_ADOQ.Eof do
begin
QXCB.Items.Add(QXM_ADOQ.FieldValues['QXM']); //取出权限名字段
QXM_ADOQ.Next;
end;
QXM_ADOQ.Close;
FreeAndNil(QXM_ADOQ);
ShowYHInfo; //这是个函数
YHtable.Open; //单步到这,就出现那个框框了 其中
//编写用户信息函数
Procedure Txtgl_Form.ShowYHInfo;
begin
YHM.Text:=DBGrid1.Fields[0].Text;
YHM.Enabled:=false;
QXcb.ItemIndex:=QXCB.Items.IndexOf(DBGrid1.Fields[1].Text);
if YHM.Text<>YH then
begin
MM.Enabled:=false;
reMM.Enabled:=false; //YHM,MM,REMM都是编辑框的NAME
end
else begin
MM.Enabled:=true;
ReMM.Enabled:=true;
end;
end;我想实现的是:取出用户名和用户权限名(管理员或一般用户)
其中用户名在c_user表内,权限名在c_qxb内到底为什么出现那个错呢?哪位仁兄能帮我解答下,谢了
解决方案 »
- Image控件上有几个Label标签,怎么把Image图片和文字一起保存为新的图片?
- 怎么取得正在 在 BGrid 输入的 内容
- 一个面试题,该怎么实现?
- 寻找数据库解密高手
- 各位高手,请帮帮小弟!!多谢各位光临!!
- 报错 ntdll.dll !如何解决,w2k+d5+access2000,在线等!
- 欢迎加入中国Delphi大联盟QQ群-(做最好的讨论,求助,资源共享 QQ群号码:1463857)
- 数据表、字段问题
- 请问哪有中文的日程安排插件下载for delphi 7的,急!!
- 救命啊,100分!
- delphi ShellExecute 打开网页 小问题
- delphi新手问题关于入门,在线等
再在這調用會出錯,
如果DBGrid1的DataSet 是 QXM_ADOQ 的話
QXM_ADOQ是动态创建的啊!
YHtable设置也与数据库连了,且tablename是我的用户表c_user
有什么问题么?谢谢!
不过还有些小问题,我先自己研究下,有不会的再告知大家!
谢谢大家指导!
其一:我删除、添加、修改完用户信息,dbgrid没有立刻刷新。在重新登陆时才显示刷新后的结果。我在代码里加了table.refreshi里也不对,dbgrid.refresh也不对。不清楚怎么改啦!!!
代码为:
begin
//YH_ADOQ.Delete; //由于ADOQuery没有查出表中所有的字段,故不能用这一语句
if YHtable.Locate('Users',DBGrid1.Fields[0].Text,[loCaseInsensitive]) then
try
YHtable.Delete;
MessageBox(handle,'用户删除成功!','成功',MB_OK or MB_ICONINFORMATION); YHtable.Close;
YHtable.Open; except
MessageBox(handle,'发生未知错误:用户删除失败!','错误',MB_OK or MB_ICONERROR);
end;
YHM.Text:='';
QXCB.ItemIndex:=-1;
MM.Text:='';
reMM.Text:='';
end;其二:权限名combobox里显示的字段名与我数据库里的字段相反!我数据库里:
0是一般用户 1是管理员。
可是操作时我选择管理员时,系统认成一般用户!!正好都反了...怎么回事呀?
检查了代码,查不出问题:
QXM_ADOQ:=TADOQuery.Create(nil); //动态创建ADOQuery控件
QXM_ADOQ.Connection:=DM.dbstudy_ADOConn;
QXM_ADOQ.SQL.Add('SELECT QXM FROM c_qxb');
QXM_ADOQ.Open;
if QXM_ADOQ.RecordCount>0 then
while not QXM_ADOQ.Eof do
begin
qxcb.Items.Add(QXM_ADOQ.FieldValues['qxm']); //选择框取得用户名表
QXM_ADOQ.Next;
end;
这两个问题请各位指点!!万分感谢!!