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 12-08-2015
viaraSOFT.com viaraSOFT.com is offline
Miembro
 
Registrado: may 2006
Ubicación: Ciudad Quesada
Posts: 13
Poder: 0
viaraSOFT.com Va por buen camino
problema de posicionamiento en tabla

Hola amigos estoy implementando zeoslib en Delphi XE y resulta que tengo una tabla con códigos numéricos del 1 al 16, mi problema es que cuando hago tabla.first para posicionarme al inicio y empezar a recorrerla, el componente zeos por alguna razón que no entiendo se posiciona en el segundo registro de la tabla, después accesa el primero, después el tercero y así sucesivamente. Ejemplo: cuando despliego la lista de códigos me queda: 2,1,3,4,5,6,... en vez de 1,2,3,4,5,6,...

Ya he intentando re-indexar y hacer vacum a dicha tabla en el pgAdmin pero igual me la recorre de esta forma tan extraña. Anteriormente usaba el componente de PostgresDAC de MicroOlap y no tenía ese problema. Agradezco cualquier ayuda que me puedan brindar!
Responder Con Cita
  #2  
Antiguo 12-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero qué sql estás ejecutando?
Tú decides el orden. En tu caso será algo así:
Código SQL [-]
select * from mitabla order by codigo
Responder Con Cita
  #3  
Antiguo 13-08-2015
viaraSOFT.com viaraSOFT.com is offline
Miembro
 
Registrado: may 2006
Ubicación: Ciudad Quesada
Posts: 13
Poder: 0
viaraSOFT.com Va por buen camino
Gracias Casimiro! yo estoy recorriendo la tabla con un ciclo porque no estoy utlizando un dblist si no un objeto lista corriente. El código es sencillo:
Código Delphi [-]
tabla.First;
while not (tabla.EOF) do begin
     lista.Items.Add(tabla.FieldByName(codig).AsString);
     tabla.Next;
end;

Última edición por ecfisa fecha: 13-08-2015 a las 03:34:06. Razón: Etiquetas [delphi][/delphi]
Responder Con Cita
  #4  
Antiguo 13-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Definitivamente coincido con Casimiro, el problema es el orden
Como insertaste los registros?
Como los recuperas? En el codigo de ejemplo que es "Tabla"?

Hablas de un objeto lista corriente y no un, ¿ dblist ?

Que es un "objeto lista corriente"? Yo interprete TList, o TList<T>
Como se llena este objeto lista corriente? como insertas los registros?
Responder Con Cita
  #5  
Antiguo 13-08-2015
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 51
Poder: 16
elaguna Va por buen camino
Qué tal.

¿Has probado con un TZQuery?
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
  #6  
Antiguo 13-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Quitas el componente tabla y pones un componente query. En su sentencia select pones lo que te he escrito antes, y aprovechando tu código, quedaría así:
Código Delphi [-]
query.First;
while not (query.EOF) do begin
     lista.Items.Add(query.FieldByName(codig).AsString);
     query.Next;
end;

Cita:
Empezado por viaraSOFT.com Ver Mensaje
Gracias Casimiro! yo estoy recorriendo la tabla con un ciclo porque no estoy utlizando un dblist si no un objeto lista corriente. El código es sencillo:
tabla.First;
while not (tabla.EOF) do begin
lista.Items.Add(tabla.FieldByName(codig).AsString);
tabla.Next;
end;
Responder Con Cita
  #7  
Antiguo 13-08-2015
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Para completar un poco...En Bases de datos Sqls, Al hacer un "tabla.insert", no se guarda al final de tabla. Esto se hace por eficiencia, no tiene sentido irse al final de la tabla para insertar y después volver a donde se estaba.
Se busca un hueco de un registro eliminado (por ejemplo) y se inserta allí mismo.


En Paradox y demás BBDD de escritorio, el "tabla.Append" sí lo inserta al final de la tabla. El "tabla.insert" lo hace donde pueda.

Te recomiendo usar un tZQuery de esos con el sql : "select codig from tabla order by codig" y que hagas una rutina que usarás más de lo que crees, sobre todo si la aplicación es multiusuario.
Código Delphi [-]
procedure CampoALista (campo, tabla : string; Lista : TStrings);
begin 
   {crear el zquery, asignar el transaction y base de datos}
   zqry.sql.text := Format ('select %s from %s order by %s', [campo, tabla, campo]);
   zqry.Open() ; // ya está en el primer registro.
   while not zqry.eof() do begin 
      lista.Add(zqry.FieldbyName(campo). asstring));
      zqry.next();
   end;
   zqry.Free();
end;

Ahora la puedes llamar:
Código Delphi [-]
Form1.combobox1.items.Clear;
CampoALista( 'codig', 'nombretabla', Form1.combobox1.items )

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 13-08-2015
viaraSOFT.com viaraSOFT.com is offline
Miembro
 
Registrado: may 2006
Ubicación: Ciudad Quesada
Posts: 13
Poder: 0
viaraSOFT.com Va por buen camino
Muchas gracias amigos ya logré resolver el problema mediante la propiedad "sortedfields" del TZTable, le establecí el campo codigo y autompáticamente me seteó la propiedad "IndexFieldNames" = codigo Asc y listo ahora si me despliega el TList debidamente ordenado, gracias por la ayuda! Adjunto unas imágenes para ilustrar el problema y la solución usando esta propiedad por si a alguno algún se topa con el mismo inconveniente.
Tabla.jpg Antes.jpg Despues.jpg
Responder Con Cita
  #9  
Antiguo 13-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepe Ver Mensaje
Saludos

> Doctor, doctor, todo el mundo me ignora.
>> ¡Que pase el siguiente!
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
posicionamiento web en php elcigarra PHP 13 26-01-2012 16:24:46
posicionamiento de imagenes yojanna C++ Builder 1 05-11-2005 09:24:02
Posicionamiento en un DBLooupCombobox killaton Conexión con bases de datos 2 07-03-2005 21:46:42
posicionamiento en dbedit raugadel Varios 1 28-04-2004 13:07:21
Posicionamiento en Grillas jfontane Varios 7 04-06-2003 17:13:58


La franja horaria es GMT +2. Ahora son las 13:28:18.


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