Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-02-2005
Holderhek Holderhek is offline
Miembro
 
Registrado: feb 2005
Posts: 17
Poder: 0
Holderhek Va por buen camino
Problema con un TADOQuery

Hola

Lo que pasa es que tengo un programa que hago consultas a cada rato y relleno cosas en tiempo de ejecucion. Entonces no quiero ocupar Componentes que linkeen a componentes del dbGo para que se carguen automaticamente los datos.

Prefiero recorrer los resultados yo y agregarlos como yo quiero.

Bueno, mi problema es el siguiente; como hago consultas a cada rato, si agrego un componente TADOQuery (En diseño) y al ocuparlo surge el problema de tener que hacer otra consulta, y para esto, necesitare otro TADOQuery (Si hago una consulta dentro de otra no puedo ocupar el mismo TADOQuery).

Por ejemplo:

Código:
Query1.Close;
   Query1.SQL.Text:='SELECT * FROM Tabla';
   Query1.Open;
   For i:=0 to Query1.RecordCount-1 do
   begin
     Query2.Close;
     Query2.SQL.Text:='SELECT * FROM Tabla2 WHERE ID='+Query1.Fields[0].AsString;
     Query2.Open;
     For j:=0 to Query2.RecordCount-1 do
     begin
   	//
     end;
   end;
Para realizar ese tipo de consultas, necesito dos TADOQuery. Y como hago varias consultas, (El Usuario puede buscar, o ver items con ciertos filtros, etc) puede pasar que se ocupe el mismo TADOQuery y un procedure lo cierre mientras que otro lo esta viendo.

Ahora mi problema no es ete, mi problema es el siguiente:
Puse un TADOConnection seteado para la base de datos (Access)
Y en el codigo puse esto:
Código:
procedure TForm1.Abrir(...);
   var
    Query1: TADOQuery;
   begin
     Query1.Connection: ADOConnection1;
     Query1.Close;
     Query1.SQL.Text:='...';
     Query1.Open;
   end;
y al ejecutarlo me da un error de EAccessViolation
Cita:
Project Project1.exe raised an exception class EAccessException with message 'Access violation at address C38B0000. Read of address C38B0000'.
Entonces, quisiera saber si alguien me puede explicar que paso, y las propiedades que deben tener el TADOConnection y el TADOQuery que yo cree, o si esto definitivamente no se puede y tengo que pensar en otra forma para hacerlo. (Ocupo Delphi 2005).

Bueno, gracias por su tiempo.

Saludos

Última edición por Holderhek fecha: 02-02-2005 a las 16:38:02.
Responder Con Cita
  #2  
Antiguo 02-02-2005
Avatar de unoccio
unoccio unoccio is offline
Registrado
 
Registrado: feb 2005
Posts: 5
Poder: 0
unoccio Va por buen camino
El problema es que estás definiendo un objeto Query1 y no lo estás creando.
una forma segura de trabajar cuando se crean objetos es así:

var
Query1: TADOQuery;
begin
Query1:= TADOQuery.Create(nil);//ponele el owner que quieras
try
try
Query1.Connection:= ADOConnection1;
Query1.Close;
Query1.SQL.Text:='...';
Query1.Open;
except
...//procesamiento de errores.
end;
finally
Query1.Close;
Query1.Free;//no te olvides de liberar la MEM!!!,
end;
end;
Responder Con Cita
  #3  
Antiguo 02-02-2005
Holderhek Holderhek is offline
Miembro
 
Registrado: feb 2005
Posts: 17
Poder: 0
Holderhek Va por buen camino
Hola

Muchas gracias, ahora funciona.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


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


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
Copyright 1996-2007 Club Delphi