FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
GetFieldNames no trabaja apropiadamente bajo dbExpress?,o el problema será Firebird?
Hola,
Alguién sabe como obtener, usando dbExpress en Delphi 2007, la lista de campos de una tabla, exactamente en el mismo orden en que ellos están definidos en la tabla ?. Veamos, el método GetFieldNames devuelve la lista de campos de la tabla; pero, no necesariamente en el orden en el cual están definidos. En mi caso, el orden es vital porque se trata de un algoritmo que llena una tabla creando dinámicamente los queries requeridos (Insert, Update, etc) y cuyos datos provienen de otra aplicación, la cual los manda en el el orden en el que los campos fueron creados en la Base de Datos. Esta operación se aplica sobre numerosas tablas. Ahora bien, esto funcionaba perfectamente bajo BDE; pero con dbExpress y Firebird se está presentando el problema. No me queda claro si es un error en el método a nivel de dbExpress o si el problema es el driver a Firebird?. La solución debe funcionar independientemente del motor de Base de Datos que se esté usando Alguién puede aportar una solución ? |
#2
|
||||
|
||||
Nunca he utilizado Firebird, pero en SQL Server hay una tabla que se llama sysobjects y otra que se llama syscolumns. Que son tablas que almacenan toda la información referente a campos y tablas en toda la base de datos. Tal vez Firebird tenga algo similar y solo habría que hacer una consulta a esas tablas.
__________________
|
#3
|
|||
|
|||
Gracias; pero la idea es una solución general
Cita:
Muchas gracias por el aporte; pero, necesito una solución general; es decir, algo que no dependa del motor de base de datos que se esté usando. En últimas, la falla de driver Firebird no sería tan crítica porque simplemente cambiaría de motor y no tendría que codificar nada extra; pero, la preocupación grande la tengo es porque si el problema es con dbExpress se perdería la capacidad de trabajar rutinas genéricas y tocaría codificar individualmente para más de 70 tablas, una locura !!. Muchos saludos |
#4
|
|||
|
|||
Confirmado. Es un problema de dbExpress
Hola,
Después de hacer un seguimiento al código de implementación de dbExpress he podido determinar la causa del problema y es definitivamente un error de dbExpress, no del driver. Inicialmente, la lista de campos es obtenida correctamente; pero, antes de devolverla a la rutina que llama, el código de dbExpress relaiza un ordenamiento. Supongo que lo hicieron para satisfacer otros servicios de la rutina; pero no se percataron que en el caso de los campos de la tabla, el oden debe ser el que existe en la Base de Datos. Voy a verificar si no hay ningún reporte en CodeGear y si no lo hay se los enviaré. Lo bueno para mí es que como el código original funciona puedo escribir un parche. |
#5
|
||||
|
||||
¡Hola Rolando!
Hace tiempo que no te dejabas ver. Normalmente, al hablar de un método, es muy aconsejable indicar la clase a la cual pertenece. No me queda claro si te refieres a TSQLConnection.GetFieldNames, a TDataSet.GetFieldNames o a TFields.GetFieldNames. Supongo que te refieres al primero. Voy a echarle una mirada rápida (en Delphi 7)... ...Así, de bote pronto, pareciera un asunto del controlador (driver) de dbExpress. Podrías ilustrarme en qué lugar del código está ese ordenamiento que mencionas. Siempre es de mi interés todo lo que tenga que ver con la VCL, y últimamente, por trabajar en Magia Data, me interesa todo lo relacionado a dbExpress y otros componentes de acceso a datos. Un meta-abrazo. Al González. |
#6
|
|||
|
|||
Yo también supongo que se refiere a TSQLConnection. La revisión en Delphi 7 te va a llevar a pensar que Rolando se ha equivocado, pero no, en Delphi 2007, por extraño que parezca han puesto
cosa que realmente no entiendo el porqué. ISList es un objeto temporal y sus elementos se asignan inmediatamente después a la lista original List que se proporciona a GetFieldNames, de manera que no alcanzo a ver cuál podría ser la necesidad de ordenar la lista. Bye |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Hay beneficio en migrar BDE a DBExpress bajo esta metodolgía ? | rolandoj | Conexión con bases de datos | 10 | 30-08-2007 20:08:07 |
Delphi 5.0 trabaja con Firebird ó MySQL? | ingechile | Conexión con bases de datos | 2 | 24-11-2004 21:52:41 |
Conectar Firebird bajo entornos Windows | santiago14 | Firebird e Interbase | 3 | 22-07-2004 11:25:04 |
Crear Base de Datos en Firebird bajo Linux red hat 9 | Choclito | Firebird e Interbase | 1 | 19-07-2004 08:40:50 |
conectar Firebird bajo entorno windows | djavier22 | Firebird e Interbase | 2 | 05-07-2004 20:10:07 |
|