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 30-03-2007
jona-182 jona-182 is offline
Registrado
 
Registrado: may 2006
Ubicación: Santa Fe, Santa Fe, Argentina
Posts: 8
Poder: 0
jona-182 Va por buen camino
Unhappy Ordenar datos en un DBGrid

Hola, tengo un problemita al mostrar algunos campos de una base de datos en un DBGrid. Estoy trabajando con una tabla Paradox 7, en realidad yo programo con borland c++ 6.0 pero siempre consulto en esta web porque me parece la mas completa, así que si pueden darme una orientación en delphi creo poder transportarla a c++. Mi problema es el siguiente: Estoy haciendo una aplicación para un negocio de comidas para llevar. Cada persona que reparte las comidas tiene una hoja con la lista de direcciones a las que tiene que llevar la comida, por lo que éstas poseen un orden específico. En mi aplicación tengo que mostrar estas planillas en la pantalla para que el usuario pueda ingresar la cantidad de comidas a llevar para cada direccion y luego poder imprimir las hojas. Hasta aquí todo bien pero surge un problema cuando intento cargar las direcciones en el DBGrid ordenandolas por su posición. Yo puedo hacerlo utilizando un TQuery pero el problema de este componente es que no me permite modificar los valores del DBGrid para que se modifiquen en la tabla paradox. Es por esto que intento hacerlo utilizando un TTable y es aquí donde el problema de ordenar los datos surge (quiero destacar que solo necesito ordenar los datos con respecto a un campo, en mi caso se llama "posicion"). Intenté utilizando los llamados "índices" pero realmente no pude lograr nada (soy bastante novato en esto) sin mencionar de que al modificar la tabla saltó un error de "Index out of Date" que no se a que se debe y que segun comentarios en esta web parece estar realacionado a algun tipo de corrupción en los datos de la tabla y que segun algunos sucede muy a menudo con las tablas paradox.
La verdad es que busqué muchísimo en los foros y encontré problemas similares pero no del todo resueltos... o bien yo no se interpretarlos. Pude ver que algunos lo solucionan usando componentes ADO... creo que un ADOTable puede ser... la verdad es que intenté usarlos pero no se como jeje... Bueno espero haber expresado mi problema correctamente. Cualquier ayuda o comentario que puedan hacer me sería de mucha utilidad. Desde ya muchas gracias!
Responder Con Cita
  #2  
Antiguo 30-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No deberías tener problemas con los índices. Sólo asegúrate de tener un índice primario además del índice secundario sobre el campo deseado y que este índice secundario tenga marcado el atributo Maintained.

Si ningún campo (o conjunto de campos) de tu tabla es propicio para ser índice primario (que no tenga valores repetidos), puedes agregar un campo autoincremental para ello; pero es fundamental que hay índice primario.

// Saludos
Responder Con Cita
  #3  
Antiguo 30-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Estoy con Roman. Revisa el tema de índices. Tu tabla debería tener clave primaria y en este caso un índice por posición.

El tema de ADO olvídalo; Para acceder a tablas Paradox vas bien con lo que tienes TTable/TQuery.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 30-03-2007
jona-182 jona-182 is offline
Registrado
 
Registrado: may 2006
Ubicación: Santa Fe, Santa Fe, Argentina
Posts: 8
Poder: 0
jona-182 Va por buen camino
Unhappy Sigo con problemas...

Antes que nada agradezco mucho sus respuestas Neftali y Roman!!! Ahora les comento un poquito mas sobre mi situación... Tengo una tabla paradox con la ubicación de cada dirección, en esta tabla tengo el campo "Clave" que es un número que utilizo como llave primaria, el campo "Posición" que es un número que utilizo para determinar la posicion en una determinada planilla de cada dirección, el campo "Direccion" que es un campo del tipo Alpha que define el nombre de la dirección a la que se entrega la comida, el campo "Planilla" que es otro campo de tipo Alpha que define que persona llevará la comida a la dirección correspondiente y por último el campo "Cantidad_viandas" que es un número que define la cantidad de viandas que se van a entregar en la dirección correspondiente. Como hay mas de 200 clientes (direcciones) las personas que reparten las comidas son mas de una, es decir que hay mas de una planilla y por consiguiente hay hay mas de una posicion iguales, es decir que tengo por ejemplo la dirección "Boulevard 2013" en la planilla "Juan Pérez" en la posición "3", y tengo otra dirección "San Martín 2084" en la planilla "Jorge Tango" tambión en la posición "3".. y estas posiciones pueden ser las mismas sin interferir porque estan en diferentes planillas. Por otra parte cada planilla esta dividida en dos secciones con un máximo de 32 direcciones por cada sección y éstas secciones son independientes entre sí, por lo que las posiciones por cada planilla pueden ser discontínuas... es decir puedo tener direcciones en la posición 1, 2, 3 y 4 y saltar a las posciciones 33, 34, 35... Y al mostrar estas direcciones utilizo dos DBGrid una asociada a un TTable con el filtro:

Código:
'Posicion <= 32 AND Planilla = ' + QuotedStr(Edit1.text);



y el otro DBGrid asociado a otro TTable con el filtro:



Código:
 'Posicion >= 32 AND Posicion <= 64 AND Planilla = ' + QuotedStr(Edit1.text);



Haciendo uso de una consulta con un Query yo haría en c++ algo como

Código:
 
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(" SELECT *FROM MiTabla WHERE(Posicion <= 32 AND Planilla = :Planilla) ORDER BY Posicion ");
Query1->ParamByName("Planilla")->AsString = Edit1->Text;
Query1->Open();
y a esto lo asociaría al primer DBGrid y consultaría la misma tabla con la otra condición en el WHERE y asociaría este otro Query con el segundo DBGrid, pero bueno como ya les comenté anteriormente no puedo utilizar esto Querys porque no me permiten modificar los datos de la tabla esde el DBGrid.
Intenté utilizando indices como me dijeron... lo que hice fue crear una llave primaria en el campo "Clave" y definir un indice con el nombre "Pos" en el campo "Posicion" con la propiedad "Manteined" seleccionada... y luego puse en la propiedad IndexName del TTable el nombre del índice Pos"... pero no me dió resultado... será que estoy haciendo algo mal? me falta algo?
Otra vez agradezco enormemente su ayuda!
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
Ordenar DBGrid por columnas Palmiro Conexión con bases de datos 6 25-03-2016 18:35:17
Ordenar Datos en DBGrid mediante un Click anghell77 Varios 2 20-05-2006 17:59:27
ordenar un DBGrid de mayor a menor jmlifi Varios 2 03-11-2005 16:36:34
ordenar datos del DBGrid! kage_01 Tablas planas 1 02-07-2005 03:42:28
Ordenar dbgrid jzk OOP 4 17-12-2004 13:45:45


La franja horaria es GMT +2. Ahora son las 20:37:36.


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