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 Temas de Hoy

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



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 09:10:38.


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