Not sure about ado, however for many issues such as transactions,
ensuring that procedures dont get executed the second time etc.. we
always close and free our queries manually. Something in the component
code is trying to execute it or unprepare it.... still bad code. :-)
Dave O'Brien wrote:
Application... (Using DBGo)
begin
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(TfrmLogin, frmLogin);
if frmLogin.ShowModal = mrOK then
begin
seID := 0 ;
datamod.ADOQuery.SQL.Text := 'Select seID from Security...' ;
datamod.ADOQuery.Open ;
try
if not datamod.adoQuery.eof then
seID := datamod.ADOQuery.FieldByName('seID').AsInteger
else
ShowMessage('Invalid Username/Password') ;
finally
datamod.ADOQuery.Close ;
end ;
if seID <> 0 then
Application.Run ;
end ;
end.
With the above concept code I am getting a strange error.
"Access violation at address 00490742 in module'test.exe'. Read of
address 00C628C8"
The error occurs if the login is cancelled, does not occur if the login
is OK'd but the username/password is not found, so it has nothing to do
with "Running" the app.
If I change the end of the file to:
if seID <> 0 then
Application.Run ;
end
else
datamod.ADOQuery.SQL.Text := 'Anything but a blank string...' ;
end.
It now exits fine...
Any idea why I have to assign some text to the query or the app bombs on
exit? There are multiple TADOQuery's in the data module, so why don't I
have to assign something to each of them? Assigning a value only to that
query at design time also resolves the problem.
Cheers,
Dave.
_______________________________________________
Delphi mailing list
[email protected]
http://ns3.123.co.nz/mailman/listinfo/delphi
_______________________________________________
Delphi mailing list
[email protected]
http://ns3.123.co.nz/mailman/listinfo/delphi