freeandnil(adoquery1);
最后这句去掉看看还报地址错误吗,
你得断点查询,地址错误一般是找不到数据库的对应数据。我以前也经常碰到,要不有可能是
定位错误 with form2.Create(nil) do 这个是什么意思看不懂,我给你我们的代码你参考下吧
function runsql(qu:Tquery;str:string):string;
begin
qu.close;
qu.sql.clear;
qu.sql.add(str);
qu.ExecSQL;
end;
function runsql2(qu:Tquery;str:string):string;
begin
qu.close;
qu.sql.clear;
qu.sql.add(str);
qu.open;
END;
//账号密码的时间限制
//--------------------------------------------------------------------------------------------------
runsql2(dm.passquery,'select * from password where uidname="' +trim(edit1.text)+ '"');
runsql2(query1,'select getdate() as dat');
if dm.passquery.FieldByName('stop').asstring='Y' then
begin
showmessage('你的账号已经冻结');
application.Terminate;
end;
IF LENGTH(DM.PASSQuery.FieldByName('PASSWORDS').ASSTRING)<6 THEN
BEGIN
showmessage('你的密码长度不足六位!请修改你的密码,否则你的账号将被冻结!');
runsql(query2,'update password set stop="Y" where uidname="'+trim(edit1.text)+'"');
END;
if ((query1.FieldByName('dat').AsDateTime-dm.passquery.FieldByName('C_date').AsDateTime)>dm.passquery.fieldbyname('u_day').AsInteger) AND (DM.passquery.FieldByName('U_DAY').ASINTEGER<>0) then
begin
showmessage('你的账号已经过期');
runsql(query2,'update password set stop="Y" where uidname="'+trim(edit1.text)+'"');
application.Terminate;
end;
if dm.passquery.FieldByName('uidname').asstring=DM.passquery.FieldByName('passwords').asstring then
begin
showmessage('你的密码与用户名相同,请立即更改密码!');
runsql(query2,'update password set stop=''Y'' where uidname="'+trim(edit1.text)+'"');
end
else if ((query1.FieldByName('dat').AsDateTime)-dm.passquery.FieldByName('C_date').AsDateTime>dm.passquery.FieldByName('u_day').AsInteger-10) AND (DM.passquery.FieldByName('U_DAY').ASINTEGER<>0) then
begin
showmessage('你的账号离到期不超过10天,请尽快更改你的密码,否则你的账号将被冻结!');
end;
query2.Close;
query2.Params.Clear;
query2.SQL.Text := 'update password set l_date=:l_date where uidname="'+edit1.text+'"';
query2.Params.ParamByName('l_date').AsDateTime := query1.FieldByName('dat').AsDateTime;
query2.ExecSQL;
追问freeandnil(adoquery1);
这个去掉了 还是报错啊
追答那就需要断点查询 你F7到哪一行报错的?