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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2013
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Unhappy GetTableNames de dbExpress falla en Delphi 2007 ?

Hola a todos,

Estoy intentabdo pasar a dbExpress una herramienta para administrar tablas de Bases de Datos, la cual hice hace años con BDE; pero, cuandi intento ejecutar ek método GetTableNames de dbExpress este me saca un access violation.

Primero los pongo en contexto.

La herramienta que hice con BDE trabaja en general perfectamente bien; se me conecta a múltiples motores de bases de datos, y entre otras muchas cosas me permite importar archivos de texto y copiar tablas entre motores diferentes. Sin embargo, me he topado con un problema : En el BDE no estoy pudiendo trabajar bien con campos BCD; concretamente resulta que en mis nuevas aplicaciones la mayoría de las tablas usan campos DECIMAL(18,2).

Cuando empecé a hacer esas aplicaciones, principalmente por ese detalle, migré a dbExpress y traté de migrar también la herramienta; pero, no pude por lo de GetTableNames. En ese entonces por falta de tiempo no investigué más. Ahora, se me volvió crítico lo de poder pasar información entre tablas de múltiples motores de Bases de Datos; pero, sobre todo de Firebird que es el motor que más uso.

Por lo tanto necesito una de dos cosas : O poder usar GetTableNames con dbExpress o conseguir una herramienta que sea capaz de pasar tablas entre bases de datos; pero con dos condiciones :

1. Que soporte campos DECIMAL(18,2)
2. Que trabaje vía Web

GetTableNames lo estoy usando en Delphi 2007 y las pruebas con Firebird 2.0.3

El segmento de código es :

Código Delphi [-]
Function TdmConexiones.LeeNombresDeTablas:String;
Var
   TheList:             TStringList;
Begin
     TheList := Nil;
     Try
        TheList := TStringList.Create;
        MiDB.TableScope := [tsTable];
        MiDB.GetTableNames(TheList);
        LeeNombresDeTablas := TheList.Text;
     Finally
        TheList.Free;
     End;
End;

Vale anotar que el componente MiDB ya a abierto la conexión a la base de datos y llega a ese punto (verificado con depurador), sin problemas; así que el access violation no es por ahí.

Lei en alguna parte, con otro motor de Base de Datos, que hay que agregarle un parámetro más a GetTableNames porque está sobrecargado y que ese parámetro es el nombre del esquema. Si es eso, cual sería ese parámetro para el caso de Firebird ?
Responder Con Cita
  #2  
Antiguo 03-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rolandoj.

No he usado Delphi 2007, pero encontré esta referencia que tal vez te podría servir: GetTableName not being called in Delphi 2007

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 04-09-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.409
Poder: 22
fjcg02 Va camino a la fama
Buenas,
no sé si te valdrá, pero yo en Delphi 7 utilizo esto, que funciona a la perfección.

Un saludo
Código Delphi [-]
tablas:= TStringList.Create;
SQLConnection1.Connected:= True;

// tablas de la bbdd
SQLConnection1.GetTableNames(tablas,false);
ListBox1.Items.Assign(tablas);

// tablas del sistema
SQLConnection1.GetTableNames(tablas,true);
ListBox2.Items.Assign(tablas);

// Procedimientos
SQLConnection1.GetProcedureNames(tablas);
ListBox5.Items.Assign(tablas);


tablas.Free;
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #4  
Antiguo 09-09-2013
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Unhappy Muchas gracias; pero, el problema con GetTableNames sigue

Hola a todos,

Ante todo, una gran disculpa por la demora en contestar. Recientemente cambié de cliente de correo y como no estoy acostumbrado al nuevo no me percaté del aviso de ClubDelphi de que ya habían contestado mi pregunta.

Ahora, fjcg02, tú usas lo mismo que yo. Eso ya lo había probado porque el méyodo está sobrecargado y acepta diversas combinaciones de parámetros; así que probé a ver si trabajab con alguna combinación. De hecho, según el código fuente, False es el default si ese parámetro SystemTables no se especifica (como el ejemplo que puse)

ecfisa, el enlace que pones es a un problema diferente; pero, me dió una idea. Revié y no encontré llamadas a GetTableNames de dbX en los fuentes de Delphi 2007. Las llamadas que existen corresponden a las versiones de GetTableNames en ADO, BDE e IBX. Por qué ?. Es raro. Entonces como recupera el propio dbx los nombres de las tablas y los campos cuando está en modo de diseño ?. Será que GetTableNames tiene errores y están usando otro método. ?

Cambio entonces la pregunta : Alguién ha usado GetTableNames de dbx con Delphi 2007 ?

Bueno, y hay que agregar, si le funcionó, con cual Update de Delphi 2007 ?

Agradezco mucho si alguién puede confirmar esto.
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
delphi 2007 dbexpress y Oracle 10 XE jaimeh Conexión con bases de datos 1 07-12-2010 22:04:27
Falla en dbExpress de Delphi 2007 con Firebird para campos BCD rolandoj Conexión con bases de datos 4 26-03-2010 16:08:58
Delphi 2007 + dbExpress + MySQL totote Conexión con bases de datos 2 28-12-2007 14:09:20
Firebird + DBExpress + Delphi 2007 diegofhernando Conexión con bases de datos 9 31-08-2007 01:19:27
Como conectar DBexpress en delphi 2007 kokud Conexión con bases de datos 2 19-06-2007 14:51:12


La franja horaria es GMT +2. Ahora son las 11:25:37.


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