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
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)
I have tested with the last version available for download, and the same thing happens.