Menu

#35 closing a query twice abort the program

open
nobody
None
5
2009-08-13
2009-08-13
No

Hi Everbody.
First congragulation for this EXCELENT product.
I´ve a problem and wish you can help me.
In the code below i wish to run the same query twice, just changing the parameter, after the qry.close when i run a qry.open it hans with a delphi excepion error. if i comment the close no abortion, but don´t rerun the query, because of delphis internal implementation.

program minitst;
{$APPTYPE CONSOLE}

uses
unix,SysUtils,Types,Classes,SqlExpr;

var
DB : TSqlConnection;
qry : TSqlQuery;

begin
DB := TSqlConnection.Create(nil);
DB.ConnectionName := 'ODBConnection';
DB.DriverName := 'OpenOdbc';
DB.VendorLib := 'c:\windows\system32\ODBC32.DLL';
DB.LibraryName := 'c:\windows\system32\dbxoodbc.dll';
DB.Params.Values['BlobSize'] := '-1';
DB.Params.Values['RowsetSize'] := '20';
DB.Params.Values['Trim Char'] := '1';
DB.Params.Values['Custom String'] := 'coNetPacketSize=8192;coLockMode=17;coBlobChunkSize=40960';
DB.GetDriverFunc := 'getSQLDriverODBC';
DB.Params.add('Database=scci');
DB.Params.add('User_Name=sa');
DB.Params.add('Password=progne');
DB.connected := true;
qry := TSqlQuery.create(nil);
qry.sqlConnection := DB;
qry.prepared := true;
qry.sql.add ('SELECT USUARIO,UIDUSUARIO FROM USUARIO WHERE USUARIO=:USUARIO');
Qry.ParamByname('usuario').asstring := 'supervisor';
Qry.open;
writeln(Qry.FieldByName('UIDUSUARIO').asinteger);
Qry.close;
Qry.ParamByname('usuario').asstring := 'clicio';
Qry.open;
writeln(Qry.FieldByName('UIDUSUARIO').asinteger);
Qry.Close;
end.

Aditional information :
- with other dbx drivers, interbase for instance, there is no problem.
- if i put the line : qry.sql.add ('SELECT USUARIO,UIDUSUARIO FROM USUARIO WHERE USUARIO=:USUARIO'); after the qry.close , it works again.

Environment:
Delphi 6 , windows xp and vista 3Gb ram , Intel Duarl core , ODBC Driver accessing MSSQL 2000 also no vista/xp

Discussion

  • Carlos Clicio

    Carlos Clicio - 2009-08-13

    I have forgot :

    the table usuario schema:

    show table usuario;
    USUARIO VARCHAR(20) Not Null
    PERF_PRIMARIO INTEGER Not Null
    PERF_SECUNDARIO INTEGER Nullable
    NOME VARCHAR(50) Nullable
    RG VARCHAR(20) Nullable
    CPF VARCHAR(14) Nullable
    SENHA VARCHAR(40) Nullable
    CODIMP INTEGER Nullable
    LOCALIMP VARCHAR(20) Nullable
    ENT_PRIMARIA INTEGER Not Null
    ENT_SECUNDARIA INTEGER Nullable
    ALT_USUARIO VARCHAR(20) Not Null
    ALT_DATA TIMESTAMP Nullable
    CO_SETOR VARCHAR(5) Nullable
    NO_SMTP_EMISSAO_E_MAIL VARCHAR(25) Nullable
    NO_E_MAIL_EMISSAO VARCHAR(80) Nullable
    NO_SENHA_E_MAIL_EMISSAO VARCHAR(40) Nullable
    DT_VALIDADE_USUARIO TIMESTAMP Nullable
    DT_ULTIMA_TROCA_SENHA TIMESTAMP Nullable
    NU_MAX_DIAS_TROCA_SENHA INTEGER Nullable
    IN_TROCA_SENHA_PROXIMO_LOGIN (BOOLEAN) CHAR(1) Nullable DEFAULT 'f'
    NU_MIN_DIAS_TROCA_SENHA INTEGER Nullable
    IN_DESATIVA_LOGS CHAR(1) Nullable DEFAULT 'F'
    DT_HORA_INICIO_ACESSO TIMESTAMP Nullable
    DT_HORA_FIM_ACESSO TIMESTAMP Nullable
    NU_TIMEOUT INTEGER Nullable
    IN_ACESSO_DIAS_NAO_UTEIS (BOOLEAN) CHAR(1) Nullable DEFAULT 'f'
    NU_CAIXA INTEGER Nullable
    UIDUSUARIO INTEGER Nullable
    CONSTRAINT INTEG_27:
    Foreign key (PERF_SECUNDARIO) References PERFIL (COD_PERFIL)
    CONSTRAINT INTEG_28:
    Foreign key (PERF_PRIMARIO) References PERFIL (COD_PERFIL)
    CONSTRAINT INTEG_29:
    Foreign key (ENT_SECUNDARIA) References ENTIDADES (COD_ENT)
    CONSTRAINT INTEG_30:
    Foreign key (ENT_PRIMARIA) References ENTIDADES (COD_ENT)
    CONSTRAINT INTEG_13:
    Primary key (USUARIO)

     
  • Carlos Clicio

    Carlos Clicio - 2009-08-13

    I have tested with the last version available for download, and the same thing happens.

     

Log in to post a comment.