Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   Asignación automática de claves en datasnap (https://www.clubdelphi.com/foros/showthread.php?t=81427)

Jere_84 13-11-2012 22:04:02

Asignación automática de claves en datasnap
 
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.


La franja horaria es GMT +2. Ahora son las 07:29:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi