Club Delphi  
    Paypal   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 28-09-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 20
waly2k1 Va por buen camino
Post Probá con...

Manejá el campo booleano con 0 o -1, en access -1, SQL Server 1
el campo de tipo bit. Depende si es 0 falso o distinto de 0 (1 o -1) es true
El error que te daba anteriormente se debe a que todas las opciones
de campos/arrays, colecciones, etc. comienzan en 0, a no ser que especifiques lo contrario,
lo cual en VB es posible, pero desconozco si en Delphi está permitido
Además si pones active := false a veces te da problema pq nunca lo abrió, a vos te fallaba directamente la consulta
no te traia nada con la condicion = 'No'

dicho de otra manera:

for i = 0 to query.Recordcount -1

si ponés solo .Recordcount es logico que te de error porque quieres
posicionarte en un registro inexistente ya q al arrancar en 0, pretendes
avanzar uno mas del ultimo y aborta la operacion.

Y no te rindas tan facil, ponele el pecho a las balas!!!

Código:
procedure prueba();
Var
   difAnt:real;
   i:integer;
   error:boolean;
begin
   query.SQL.Clear; 
   query.SQL.text := 'SELECT * FROM Datos WHERE Historico=-1';
   query.Open();
   while not query.Eof do
   begin
      MessageBox( Handle, PChar( 'WOW Tengo algo' ), PChar( '¡ A T E N C I O N !' ), MB_ICONWARNING + MB_OK + MB_APPLMODAL);

      query.next;
   end;
   query.close;
end;
Salu2

Última edición por waly2k1 fecha: 28-09-2007 a las 05:17:38.
Responder Con Cita
  #2  
Antiguo 28-09-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Poder: 20
fonx Va por buen camino
Tampoco waly2k1. Por un lado for i:=1 to query.recordcount es lo mismo que for i:=0 to query.recorcount-1, porque no utilizo el iterador i como índice de acceso a nada sino como contador de iteraciones, y en los dos casos es el mismo número de iteraciones.

El while not query.eof tampoco soluciona nada porque el caso de fallo es el siquiente, centraos en el caso de fallo:

CASO DE FALLO
Cuando quiero cerrar o liberar un query y tiene la propiedad EOF = true no puedo, me da el mensaje:

Project xxx.exe raised exception class EOleException with message 'El valor de BOF o EOF es True, o el actual registro se eliminó: la operación solicitada requiere un registro actual'

Si hago una consulta que no devuelve registros entonces query.EOF es true siempre, siempre, siempre, y entonces no puedo cerrar o liberar ese query. Si la consulta devuelve datos entonces estoy obligado a hacer un query.first o mover el registro actual del query para que query.EOF sea false. ¿Entendeis el fallo?
Responder Con Cita
  #3  
Antiguo 28-09-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Poder: 20
fonx Va por buen camino
Parece ser que puede q esté en lo cierto y es un bug del motor ADO del Delphi 5, y probablemente se solucionase con las actualizaciones disponibles en la web:

http://info.borland.com/devsupport/delphi/downloads/

Pero no puedo saberlo porque los vínculos a los archivos de actualización que hay en esa página están rotos ...El Delphi Enterprise Update Pack lo pude conseguir aquí en la oficina, pero el Update Pack 2, que es el que actualiza el motor ADO, pues no se de donde lo puedo sacar. ¿Alquien me lo puede facilitar? Solo son 1,7Mb que en un email se pueden enviar sin problema...les mandé un mail a Borland España a ver si ellos pueden conseguirmelo.

El Update Pack 2 es el archivo d5adoupdate2.exe, por si a alguien le suena en su disco duro.

Última edición por fonx fecha: 28-09-2007 a las 11:05:55.
Responder Con Cita
  #4  
Antiguo 28-09-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 20
waly2k1 Va por buen camino
Reinstala ADO

lo que podes hacer es reinstalar ADO, mediante los MDAC q los bajas de la pagina de Microsoft, en caso de que estes seguro de tu problema.

Me hace ruido que el error de cierre es porque nunca lo abrio ya que no podes preguntar por ='No' ya que es un formato de 'muestra', internamente almacena un Nro en el campo booleano.

Te da .eof si no trajo registros, pero si la consulta falló no te da nada y no podés hacer referencia al query como intentas hacerlo.

Al .recordcount no lo podés hacer ya que este te da un nro. por ej 5 cuando tenes 5 registros, pero si comienza en 0 va el for de 0 a 4 (.recordcount-1) y en total si son 5. y no de 1 a 5, ya que la posicion 5 No Existe.

Saludos y espero despejar un poco tus dudas
Responder Con Cita
  #5  
Antiguo 28-09-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Cita:
Empezado por waly2k1 Ver Mensaje
Te da .eof si no trajo registros, pero si la consulta falló no te da nada y no podés hacer referencia al query como intentas hacerlo.
El query como objeto existe, aun si no devuelve ningún resultado la consulta...

Cita:
Al .recordcount no lo podés hacer ya que este te da un nro. por ej 5 cuando tenes 5 registros, pero si comienza en 0 va el for de 0 a 4 (.recordcount-1) y en total si son 5. y no de 1 a 5, ya que la posicion 5 No Existe.
Aquí creo que andas algo confundido... Un TDataSet no lo puedes recorrer mediante algo como Record[Index], este se recorre mediante los métodos First, Next, Prior y Last...

Así que el loop de fonx: for I := 1 to RecordCount do es correcto, ya que es un equivalente a while not Eof do...


Saludos...
Responder Con Cita
  #6  
Antiguo 02-10-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Poder: 20
fonx Va por buen camino
Efectivamente mis sospechas eran correctas. Es un fallo del motor ADO, se soluciona con el d5adoupdate2.exe, que es el Update Pack 2. Gracias a todos por la colaboración. El delphi 5 está un poco anticuado pero si alguien pasa por este fallo espero q le sirva este hilo
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
[Pregunta] Cerrar o destruir ventana Kpoch API de Windows 2 27-04-2007 19:26:48
problemas al actualizar por segunda vez @-Soft Tablas planas 2 07-09-2006 19:53:22
Sincronizar DBLookupComboBox con Tquery al hacer locate en la tabla ronalg Conexión con bases de datos 1 27-05-2006 15:58:06
consulta en sus propiedades de Tquery jorgito Conexión con bases de datos 9 31-01-2006 15:57:35
consulta en sus propiedades de Tquery jorgito Conexión con bases de datos 1 20-01-2006 23:06:32


La franja horaria es GMT +2. Ahora son las 20:43:17.


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