Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error al crear adoquery en webservices corriendo en Windows Server 2008 (https://www.clubdelphi.com/foros/showthread.php?t=83448)

mario_2000 19-06-2013 20:20:27

Error al crear adoquery en webservices corriendo en Windows Server 2008
 
Buenos días.

Tengo un webservice hecho en Delphi 7 que se conecta a una base de datos de SQL Server 2005, utilizando los componentes ADO. Cuando lo ejecuto en Windows Server 2003, de 32 o 64 bits, lo hace perfectamente.

Recientemente, tuve que instalarlo en un Windows Server 2008 R2 Standard de 64 bits. Pero no me funciona.

Resulta que tengo una función que construye dinámicamente los adoquery, les asigna la conexion, el sql, los ejecuta y luego los destruye), y en la línea marcada se genera un access violation:

Try
Result := True;
Log.Add('Q1. Creando Query',5,3);
//Procedimiento Log almacena strings en un stringlist y cada n cantidad de
//lineas las graba a un archivo de texto, que funciona como bitácora.
//Este procedimiento se utiliza en otras partes del sistema y no presenta
//problemas
Query := TADOQuery.Create(nil); //<-- access violation al invocar simplemente la creación del adoquery
Log.Add('Q2. Asignando Conexion,5,3);
Query.ConnectionString := sConn;
Log.Add('Q3. Sin Chequeo Parámetros,5,3);
Query.ParamCheck := False;
Log.Add('Q4. Asignando SQL,5,3);
Query.SQL.Add(Sql);
Log.Add('Q5. Ejecutando,5,3);
Query.Active := True;

//Se hacen otros procesos
//
//

FreeAndNil(Query);
except
on E: Exception do begin
Log.Add('Crear_Consulta --> Error : ' + E.Message + ' => ' + E.ClassName,5,3);
FreeAndNil(Query);
end;
end;

Cada vez que ejecuto el procedimiento se levanta la excepción y me graba en la bitácora los mensajes

Q1. Creando Query
Crear_Consulta --> Error: No se puede encontrar el módulo especificado=> EOleSysError

Alguien sabe que puede estar pasando para que corra en Windows Server 2003 y no lo haga en Windows Server 2008? Será algún asunto de configuración del Sistema Operativo?

Muchas gracias y saludos a todos los colegas.

potlanos 21-06-2013 14:29:22

hola, has encontrado solución?

me pasa lo mismo, me da errores al crear los adoquery, pero mi caso es de pasar de delphi 6 a delphi xe2.. en el 6 me corre sin ningun problema, pero en xe2 me da el mismo error que a ti.

gracias y saludos.

orodriguezca 21-06-2013 16:01:22

Verifica en todo el código de la aplicación que no se este destruyendo "accidentalmente" el objeto que contiene el código que eleva la excepción (el que nos estas mostrando).

Algo similar me ocurrió en una aplicación que estuvo funcionando perfectamente durante años en Windows XP y falló cuando se actualizaron los PC's con Windows 7; al revisar encontré que estaba destruyendo erróneamente uno de los DataModule. Ahora lo que no entiendo es por qué sí funcionaba en Windows XP si el código estaba malo.

potlanos 21-06-2013 16:03:49

exacto.. lo encontre.

Código Delphi [-]
var
   pcComputer : PWideChar;
   dwCSize    : DWORD;
   aa : string;
begin
   dwCSize := MAX_COMPUTERNAME_LENGTH + 1;
   GetMem( pcComputer, dwCSize );
   try
      if Windows.GetComputerName( pcComputer, dwCSize ) then begin
              aa := pccomputer;
             Result := aa;
          end;
   finally
      FreeMem( pcComputer );
   end;

este es el trozo de código que no se que libera que en delphi xe2 da error despues, y en cambio en delphi 6 no.

la función me devuelve el nombre de la maquina. La he cambiado por otra y listo.


Gracias y Saludos.

mario_2000 21-06-2013 22:18:22

Muchas gracias por tu respuesta Potlanos. Voy a realizar las pruebas correspondientes y les comento el resultado.

Saludos y buen día.

mario_2000 21-06-2013 22:20:01

Cita:

Empezado por orodriguezca (Mensaje 462577)
Verifica en todo el código de la aplicación que no se este destruyendo "accidentalmente" el objeto que contiene el código que eleva la excepción (el que nos estas mostrando).

Algo similar me ocurrió en una aplicación que estuvo funcionando perfectamente durante años en Windows XP y falló cuando se actualizaron los PC's con Windows 7; al revisar encontré que estaba destruyendo erróneamente uno de los DataModule. Ahora lo que no entiendo es por qué sí funcionaba en Windows XP si el código estaba malo.

Gracias también a ti mi estimado orodriguezca. Voy a revisar este detalle que comentas.

Saludos y buen día.


La franja horaria es GMT +2. Ahora son las 07:19:53.

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