Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2007
LordSarevok LordSarevok is offline
Miembro
 
Registrado: abr 2007
Posts: 16
Poder: 0
LordSarevok Va por buen camino
Una duda con TADODataSet

Hola a todos, estoy haciendo una aplicacion que usa una base de datos en acces (no tengo mas remedio que usarla) e investigando como insertar/obtener datos de la bd me encontre con este objeto, pero algo debo hacer mal ya que si al hacer un select, este no devuelve ningun resultado, salta una excepcion a la hora de hacer el close.

Esto lo puedo evitar haciendo un count de la consulta antes, pero me parece una chapuza y por eso me paso por aqui porque no doy con otra solucion.

La linea de conexion no os la voy a soltar porque es larguisima, pero todo va ok salvo ese caso que os comento, os pongo el codigo.

Código:
 this->ADOConnection1->Connected=true;  
 this->ADODataSet1->Connection=this->ADOConnection1;
 this->ADODataSet1->ConnectionString=this->ADOConnection1->ConnectionString;
 this->ADODataSet1->CommandText="Select * from tabla";
 this->ADODataSet1->Active=true;
 this->ADODataSet1->Open();
 while (this->ADODataSet1->Eof!=true)
  {
     this->ADODataSet1->FieldByName("nombre")->AsString);
     this->ADODataSet1->Next();
  }
this->ADODataSet1->Close(); //Aqui da el error
El error viene a ser que con eof==true no puede hacer el close, cosa que no acabo de entender ya que una consulta se recorre hasta el final.

Si estais pensando porque no uso TADOQuery es porque no me ha hecho falta, con este objeto puedo hacer insert,update, delete y select sin problemas, salvo el que os comento claro esta.

Gracias a todos.
Responder Con Cita
  #2  
Antiguo 04-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se de C ++ ni de builder, pero me parece raro que se abra la consulta y se cierre de inmediato.?
Para que recorrer toda la tabla con eof, si la vas a cerrar enseguida, no tendria que estar en otro procedimiento el cierre?
Bueno la verdad, no se, es solo un comentario.
Saludos
Responder Con Cita
  #3  
Antiguo 04-06-2007
LordSarevok LordSarevok is offline
Miembro
 
Registrado: abr 2007
Posts: 16
Poder: 0
LordSarevok Va por buen camino
Hago el open para abrir la consulta, la recorro hasta eof y dentro del while esta el next que te hace avanzar en el recorrido, cuando llegas al final salgo del bucle y hago el close. Y es al hacer ese close, con eof==true cuando da el fallo.
Responder Con Cita
  #4  
Antiguo 04-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Te repito de esto no se, pero, que pasaria si elimino del next el close.?
Y cierro en otro evento.
Saludos
Responder Con Cita
  #5  
Antiguo 04-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por curiosidad, esto:
Código Delphi [-]
this->ADODataSet1->Active=true;
this->ADODataSet1->Open();
En delphi significan lo mismo, o es uno u otro, para que los dos?
Saludos
Responder Con Cita
  #6  
Antiguo 04-06-2007
LordSarevok LordSarevok is offline
Miembro
 
Registrado: abr 2007
Posts: 16
Poder: 0
LordSarevok Va por buen camino
Eso es un ejemplo de como hago el recorrido, en realidad es una funcion a la que le paso por parametro la consulta y devuelve el TADODataSet para procesarlo a parte, va a una lista o a un stringgrid o a donde sea y al acabar hago el close, ese no es el codigo exacto de la aplicacion, pero con ese ejemplo me ocurre lo mismo.

Lo que no sabia es que el active y el open hacian lo mismo, voy a probar a quitar uno, gracias :P.
Responder Con Cita
  #7  
Antiguo 04-06-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Y cual es el mensaje de error que te da?

Con esto se te podría ayudar un poco más...


Saludos...
Responder Con Cita
  #8  
Antiguo 04-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Si no dices el error que da, poco podemos hacer.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Edit en TADODataSet scooterjgm Conexión con bases de datos 2 10-04-2006 09:46:36
Trabajando con TADODataset Novato Conexión con bases de datos 2 08-10-2005 23:57:27
Duda Delphius Varios 5 02-06-2005 07:40:29
TADODataSet VS TADOQuery Mauro.NET Conexión con bases de datos 1 24-05-2005 19:39:57
objeto TADODataSet Nidia H. Ochoa OOP 2 06-07-2004 22:48:12


La franja horaria es GMT +2. Ahora son las 02:24:12.


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