[DUG] Strange access error on application close...
Rohit Gupta
r.gupta at xtra.co.nz
Wed Aug 9 12:32:02 NZST 2006
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
> Delphi at ns3.123.co.nz
> http://ns3.123.co.nz/mailman/listinfo/delphi
>
>
>
More information about the Delphi
mailing list