Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2015
D1360666 D1360666 is offline
Miembro
 
Registrado: mar 2008
Posts: 53
Poder: 17
D1360666 Va por buen camino
mostrar datos de un campo de bd

Hola estoy desarrollando una app en Delphi, el cual cargo las tablas de diferentes bases de datos, principalmente Access.
Tengo 3 ListBox.
En el primero cargo las tablas que existen en la base de datos, seleccionando la tabla muestro en el listbox 2 los campos que contiene.
En el listbox 3 quiero cargar los datos del campo (Nombre, Tipo de dato y tamaño).
Estoy teniendo problemas con el tercer paso.

La app es para exportar tablas a una bd nueva para hacer migración a un sistema nuevo.

Desde ya agradezco la ayuda.

Saludos.
Diego.-
Responder Con Cita
  #2  
Antiguo 28-12-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
La clase TField tiene todo lo que necesitas

Como realizas el paso 2? Como listas los campos de una tabla?
Responder Con Cita
  #3  
Antiguo 28-12-2015
D1360666 D1360666 is offline
Miembro
 
Registrado: mar 2008
Posts: 53
Poder: 17
D1360666 Va por buen camino
segunda parte

primero las tablas las llamo a cn.gettablenames(lstTablas.items,false)
donde CN es la conexion a la base y llamo todas las tablas pasando la lista donde va mostrar el resultado.

Segundo.
En el evento click de la lista me creo una variable String: Tabla.
Seteo la tabla seleccionada en la variable.
Luego en un TTABLE cargo la tabla seleccionada y llamo al metodo table.GetFieldNames(lstCampos.items) cargando lstCampos(listbox) que es donde muestro los campos de la tabla seleccionada.
Responder Con Cita
  #4  
Antiguo 28-12-2015
D1360666 D1360666 is offline
Miembro
 
Registrado: mar 2008
Posts: 53
Poder: 17
D1360666 Va por buen camino
paso 3

Yo quiero habiendo seleccionado el campo de la tabla en el listbox 2 que me cargue el tipo de dato y el tamaño del campo
Responder Con Cita
  #5  
Antiguo 28-12-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
Cita:
Luego en un TTABLE cargo la tabla seleccionada y...
Haces esto mismo, y luego Table.FieldByName(nombre). Esto te devuelve un objeto TField, del cual te van a interesar las propiedades: DataType, Precision, Size, Name, etc
Responder Con Cita
  #6  
Antiguo 29-12-2015
D1360666 D1360666 is offline
Miembro
 
Registrado: mar 2008
Posts: 53
Poder: 17
D1360666 Va por buen camino
consulta

Muchas gracias por el aporte Agustin.
Intenté hacerlo y me funciona solamente me está complicando pasar la propiedad Datatype(Tfield) a String para mostrarlo.
Parece algo sencillo pero me ha dado errores a la hora de querer convertirlo.
A la vez en las propiedades de Datatype me aparecen una lista de propiedades de todos los tipos que maneja el delphi.
Tendré que verificar que tipo de dato es primero para mostrar el tipo recorriendo esa lista de datatypes?
Responder Con Cita
  #7  
Antiguo 29-12-2015
Avatar de Osorio
Osorio Osorio is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 251
Poder: 22
Osorio Va por buen camino
Puedes hacer algo como

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  f: TField;
  tipo: String;
begin
    case f.DataType of
      ftUnknown:  tipo:= 'ftUnknown';
      ftString:   tipo:= 'ftString';
      ftSmallint: tipo:= 'ftSmallint';
      ftInteger:  tipo:= 'ftInteger';
      ftWord:     tipo:= 'ftWord';
    end;
    {
    ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, // 5..11
    ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, // 12..18
    ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, // 19..24
    ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, // 25..31
    ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, // 32..37
    ftFixedWideChar, ftWideMemo, ftOraTimeStamp, ftOraInterval, // 38..41
    ftLongWord, ftShortint, ftByte, ftExtended, ftConnection, ftParams, ftStream, //42..48
    ftTimeStampOffset, ftObject, ftSingle); //49..51
     }
end;
Responder Con Cita
  #8  
Antiguo 29-12-2015
D1360666 D1360666 is offline
Miembro
 
Registrado: mar 2008
Posts: 53
Poder: 17
D1360666 Va por buen camino
consulta

Muchas gracias Osorio!!
Fué la solución que me anduvo para la conversión.
Muchas gracias estimado.
Saludos a todos los que me dieron una mano, cualquier cosa en lo que pueda colaborar a las ordenes.
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
Mostrar 3 registro de un campo MAXIUM Tablas planas 5 27-09-2005 17:52:13
Mostrar campo fkLookup NickName Conexión con bases de datos 2 05-07-2005 03:50:29
mostrar la suma de un campo ebeltete SQL 2 04-09-2004 01:43:48
Mostrar un campo integer acrophet Conexión con bases de datos 4 19-08-2004 11:33:20
Problema al mostrar un campo DanielAlexander Impresión 13 08-01-2004 17:44:47


La franja horaria es GMT +2. Ahora son las 17:45:02.


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