Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Recorrer Campos De Una Tabla [Solucionado]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Recorrer Campos De Una Tabla [Solucionado] 
 
Hola a todos, estoy haciendo pruebas con gambas y me he encontrado con problemas para recorrer los campos de una tabla, al final lo que he tenido que hacer es:

PUBLIC FUNCTION LlenarCampos(strTabla AS String) AS Boolean
  
  DIM tabla AS Variant, campo AS Variant
  
  lstCampos.Clear
  IF hConn.Tables.Exist(strTabla) = TRUE THEN    
    FOR EACH tabla IN hConn.Tables    'aquí está, tengo que reccorer todas las tablas hasta dar con la buscada.
      IF tabla.name = strTabla THEN
        FOR EACH campo IN tabla.fields  
          lstCampos.Add(campo.name & "[" & CStr(campo.type) & "]")
        NEXT    
      ENDIF
    NEXT    
  ELSE  
    Message("La tabla " & strTabla & " no existe.")
  ENDIF
  RETURN TRUE  
END


no tengo manera de hacer
mitabla = hconn.tables["nombretabla"]
ni nada que se le parezca, he probado con variants, con colecciones, accediendo por nombre y nada.
Alguien me puede ayudar en esto?
Por cierto uso la versión 2.13, que es la que viene en ubuntu y no me atrevo a actualizar yo solito...

saludos!
 



 
última edición por maikl el Sabado, 31 Octobre 2009, 01:21; editado 1 vez 
maikl - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Recorrer Campos De Una Tabla 
 
Lo que tienes que hacer es recorrer la colección de tablas

Tienes un ejemplo aquí
La clase connection

PUBLIC FUNCTION LlenarCampos(strTabla AS String) AS Boolean
  
  DIM tabla AS table, Campo as tablefields
  
  lstCampos.Clear
  IF hConn.Tables.Exist(strTabla) = TRUE THEN    
    FOR EACH tabla IN hConn.Tables    'aquí está, tengo que reccorer todas las tablas hasta dar con la buscada.
      IF tabla.name = strTabla THEN
        FOR EACH campo IN tabla.fields  (o bien for each campo in hconn.tables.fields)
          lstCampos.Add(campo.name & "[" & CStr(campo.type) & "]")
        NEXT    
      ENDIF
    NEXT    
  ELSE  
    Message("La tabla " & strTabla & " no existe.")
  ENDIF
  RETURN TRUE  
END


Conviene que leas el post de la clase connection porque explica muchas de estas cosillas.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Recorrer Campos De Una Tabla 
 
Lo estuve mirando pero lo que encontré no me funcionó, hay tipos de datos que no puedo definir y me temo que ya se porque, tengo la versión 2.1.13, puede ser que en esta versión el tema de db no esté muy acabado?
No se, pensaba que un cambio de 2.1.13 a 2.1.16 no tendria modificaciones tan "grandes" y que siendo una versión tan "alta" esto del trabajo con bd ya estaria superado.
Pero es que me da miedo compilar la versión nueva... Además voy con la nueva de ubuntu que aún no es oficial y no hay aún instrucciones de compilación.
A ver si sale la nueva versión en el repositorio o unas instrucciones actualizadas.
Saludos y muchas gracias por la respuesta.
Maikl
 



 
maikl - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Recorrer Campos De Una Tabla 
 
Yo no tengo la versión nueva. Trabajo con 2.7 y me funciona parfectamente.

La idea básica es que si cada elemento que lees de un bucle for each es del tipo adecuado puedes acceder a todas las propiedades del objeto.

Por ejemplo si estás recorriendo una colección de tablas pues que el objeto sea de tipo table y si estás recorriendo una colección de capos pues que el objeto sea de tipo tablefields. Pues aplicar eso mismo a indexes o cualquier otro objeto que sea enumerable.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Recorrer Campos De Una Tabla 
 
si si, correcto, pero yo no quiero recorrer la colección, eso es lo que hago para buscar la tabla solicitada, pero lo que quiero es acceder a una tabla en concreto.
El código que he puesto me funciona correctamente, pero verás que estoy recorriendo todas las tablas para obtener la quiero, y esto no me parece muy "lógico". Lo normal seria acceder a la tabla con algo como:
tabla = hConn.Tables["Clientes"]

Saludos
 



 
maikl - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Recorrer Campos De Una Tabla 
 
Hola a todos, después de mis peripecias con la compilación de la nueva versión de gambas (2.17) he conseguido que funcione de maner lógica

PUBLIC FUNCTION LlenarCampos(strTabla AS String) AS Boolean
  
  DIM tabla AS Table, campo AS Field
  
  lstCampos.Clear
  IF hConn.Tables.Exist(strTabla) = TRUE THEN    
    tabla = hConn.Tables[strTabla]   '<--- aquí está lo que queria conseguir y con la versión antigua no me dejaba
    ' FOR EACH tabla IN hConn.Tables    <--- Ya no hace falta recorrer en busca de la tabla
      'IF tabla.name = strTabla THEN       <--- Ni pizca de falta jeje
        FOR EACH campo IN tabla.fields  
          lstCampos.Add(campo.name & "[" & CStr(campo.type) & "]")
        NEXT    
      'ENDIF
    'NEXT    
  ELSE  
    Message("La tabla " & strTabla & " no existe.")
  ENDIF
  RETURN TRUE
  
END


Saludos!
 



 
maikl - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Hago Para Validar Dos Campos En Una M... jousseph General 12 Martes, 06 Julio 2010, 19:24 Ver último mensaje
jguardon
No hay nuevos mensajes Problema Al Crear Campos En Tabla soplo General 2 Martes, 25 Enero 2011, 20:26 Ver último mensaje
soplo
No hay nuevos mensajes Recorrer Varios Controles (Solucionado) Dani26 General 7 Miercoles, 21 Septiembre 2011, 22:50 Ver último mensaje
Dani26
No hay nuevos mensajes Consulta Mysql Donde Una Tabla Tiene Vario... aratar79 Bases de Datos 21 Domingo, 30 Septiembre 2012, 21:33 Ver último mensaje
aratar79
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron