在程序中加入了一个DataModule,在DataModule上加入一个adoquery,设置好后,在别的窗体引用,为什么会出错
with DataModule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from 管理员表 where 用户='''+combobox1.text+'''');
open;
if FieldByName('密码').AsString=edit1.Text then
begin
frm_main.Show;
frm_dl.Hide;
end;
end;
with DataModule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from 管理员表 where 用户='''+combobox1.text+'''');
open;
if FieldByName('密码').AsString=edit1.Text then
begin
frm_main.Show;
frm_dl.Hide;
end;
end;
^^^^^^^
1 要写全
2 在DataModule中要能访问edit.text,换句话,DataModule要包含frm_main的单元。----这不是循环包含了么?
对!所以建议你在DataMoudel写一个函数比如:procedure DataModule1.EXECSQL(s:string);
begin
with DataModule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
end;然后再frm_main的单元中调用:
with DataModule1 do
begin
EXECSQL('select * from 管理员表 where 用户='''+combobox1.text+'''');
if ADOQuery1.FieldByName('密码').AsString=edit1.Text then
begin
frm_main.Show;
frm_dl.Hide;
end;
end;
if FieldByName('密码').AsString=edit1.Text then
也会出错,所以前面最好加上判断。
这句中掉了一个单引号:应为:用户=''''.....
并且要判断是否记录为空