Hola club, en mi aplicación usando la tecnología datasnap, estaba utilizando para los ABM un método que incrementaba los códigos de manera automática. Para dicho cometido lo que hacia era los siguiente:
Código Delphi
[-]
function ObtenerCodigo(vTabla, vCodigo: String): string;
var
vSQLConeccion : TSQLConnection;
vQuery : TSqlQuery;
vResult: variant;
begin
vSQLConeccion := TSQLConnection.Create(nil);
vQuery := TSqlQuery.Create(nil);
try
vSQLConeccion.LoginPrompt := False;
vSQLConeccion.connectionname:= 'mssqlprueba';
vSQLConeccion.LoadParamsFromIniFile(ChangeFileExt(Application.ExeName, '.ini'));
vSQLConeccion.DriverName := 'MSSQL';
vSQLConeccion.Open; <------linea del error
with vQuery do
begin
Close;
SQLConnection := vSQLConeccion;
SQL.Add('Select Max('+ vCodigo +') As CodigoMax From '+ vTabla);
Open;
if FieldByName('CodigoMax').Value = null then
vResult := IntToStr(1)
else
vResult := FieldByName('CodigoMax').AsVariant + Variant(01);
Result := vResult;
end;
vQuery.Close;
vSQLConeccion.Close;
finally
vSQLConeccion.Free;
vQuery.Free;
end;
end;
Lo que hago es crear un SQLConnection, mediante un archivo .ini cargaba las configuración del mismo. Luego, creaba un SQLQuery lo conectaba al SQLConnection y bueno es resto como se ve es una sentencia de tipo Select con un Max() al campo código pasado como parámetro. Los parámetros son el nombre de la tabla y el nombre de campo.
Esta función andaba perfecto, hasta que hice una prueba en donde realizaba excesivas peticiones que era ejecutar listados con RBuilder, esto lo hacia a modo de Tester. Al ejecutar muchos listados y luego hacer una inserción, al pasar por la linea del Open me sale el sig error:
Cita:
Project Cliente.exe raised exception class TDBXError with message 'DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, or of the wrong version.'.
|
Solo cuando ejecuto excesivamente listados. No se que sucederá internamente para producir este error en los driver de la DBExpress. Alguien sabe de que otra manera puedo hacer asignación automática de claves en una aplicación de 3 capas datasnap.
Saludos.