Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Como Detectar Primary Key En Tabla?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Detectar Primary Key En Tabla? 
 
buenas, en el programa infodatabasesql quiero agregarle que muestre si el campo seleccionado es primary key o no.

e buscado y no he tenido resultados, tampoco se como funciona bien table.primarykey

alguna orientación?
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Detectar Primary Key En Tabla? 
 
Table.Primarykey te devuelve un string[] con los nombres e los campos que forman la clave primaria.
Sencillo.

   
 




===================
No podemos regresar
 
última edición por shordi el Viernes, 15 May 2015, 21:12; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Detectar Primary Key En Tabla? 
 
shordi escribió: [Ver mensaje]
Table.Primarykey te devuelve un string[] con los nombres e los campos que forman la clave primaria.
Sencillo.

   


jajaj que burro soy no me daba cuenta, yo creia que devolvia un string(sinceramente falta info en las ayudas por esto me pasa esto)

 5511

 Dim campo As Field
  Dim tabla As Table
  Dim CamposPK As String[]
  Dim NomCampo As String
  
  QueTablas = ListaCampos.Current.Text
  SentenciaSQL = "select " & QueTablas & " from " & NombreTabla
  txtSql.Text = SentenciaSQL
  
  For Each tabla In Conexion.Tables
       If tabla.Name = NombreTabla Then
         CamposPK = tabla.PrimaryKey
         For Each NomCampo In CamposPK
           Print NomCampo
         Next

         For Each campo In tabla.Fields
          
                    
           If campo.Name = ListaCampos.Current.Text Then
              ' campo.Type
              LabLargo.Text = "Largo: " & campo.Length
              typeEs(campo.Type)
              
           Endif
        Next
     Endif
  Next
  
End

que te parece el codigo que agregue shordi?

toy salao programando    

 
         
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Viernes, 15 May 2015, 23:00; editado 1 vez 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Detectar Primary Key En Tabla? 
 
al final quedo asi mostrando un icono cuando es primary key


Public Sub RegistrosCampos()
  Dim campo As Field
  Dim tabla As Table
  Dim CamposPK As String[]
  Dim NomCampo As String

  
  QueTablas = ListaCampos.Current.Text
  SentenciaSQL = "select " & QueTablas & " from " & NombreTabla
  txtSql.Text = SentenciaSQL
  
  For Each tabla In Conexion.Tables
       If tabla.Name = NombreTabla Then
         CamposPK = tabla.PrimaryKey
         For Each campo In tabla.Fields
           If campo.Name = ListaCampos.Current.Text Then
               For Each NomCampo In CamposPK
                 If NomCampo = campo.Name Then
                    PicbPK.Visible = True
                 Else
                    PicbPK.Visible = False
                 Endif

               Next
              LabLargo.Text = "Largo: " & campo.Length
              typeEs(campo.Type)
              
           Endif
        Next
     Endif
  Next
  
End


 9988

Print tabla.PrimaryKey   cuando puse esto y me dio este resultado:

(String[] 0xa405fa4)

era obvio que retornaba un string[]  y no un string  (un array de cadena y no una cadena)

pero no me daba cuenta jajaj
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Viernes, 15 May 2015, 22:37; editado 3 veces 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Detectar Primary Key En Tabla? 
 
Tepongo unos comentarios:

Public Sub RegistrosCampos()  'Èsta función supongo que se dispara al hacer click en el la lista de campos
  Dim campo As Field
  Dim tabla As Table
  Dim CamposPK As String[]
  Dim NomCampo As String
  
  QueTablas = ListaCampos.Current.Text  'Quetablas supongo que es una variable privada. No la necesitas, que ya tienes el valor del control listacampos (a parte de eso el nombre es confuso QueCampo sería más correcto)
  SentenciaSQL = "select " & QueTablas & " from " & NombreTabla  ' Esto es precipitado. con ello sólo puedes hacer una consulta de un solo campo. Deberías coleccionar primero todos los campos que el usuario quiere ver antes de construir la sentencia
  txtSql.Text = SentenciaSQL
  
  For Each tabla In Conexion.Tables  '¿para qué recorrer todas las tablas si ya sabemos de cuál estamos hablando?
       If tabla.Name = NombreTabla Then  
         CamposPK = tabla.PrimaryKey  '¿para qué crear una variable que contiene información que ya tenemos?
         For Each campo In tabla.Fields  '¿Para qué recorrer todos los campos... etc. etc.?
        
        If campo.Name = ListaCampos.Current.Text Then
               For Each NomCampo In CamposPK     'desde aquí....
                 If NomCampo = campo.Name Then
                    PicbPK.Visible = True
                 Else
                    PicbPK.Visible = False
                 Endif
               Next                                                'hasta aquí, es demasiado código para cosas que el lenguaje ya te da resueltas
              LabLargo.Text = "Largo: " & campo.Length
              typeEs(campo.Type)
              
           Endif
        Next
     Endif
  Next
  
End

 

En resumen, la función que te pone el largo, el tipo y el icono si es clave primaria, podría quedar así:


Public Sub RegistrosCampos()

  PicbPK.visible= (conexion.tables[listatablas.current.text].primarykey.find(listacampos.current.text) > -1)
  LabLargo.Text = "Largo: " & campo.Length
  typeEs(campo.Type)

end
 

Más aún, yo la eliminaría por completo y pondría en el evento click de listacampos las tres líneas de código. Luego, una vez que tuviese claro qué campos, no sólo uno, quiero ver en la ejecución de la sentencia SQL crearía la sentencia y la ejecutaría.
 




===================
No podemos regresar
 
última edición por shordi el Sabado, 16 May 2015, 10:11; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Detectar Primary Key En Tabla? 
 
Aclarar aquí, que yo, cuando me enfrento a un problema así, primero hago cosas como las que tú has hecho. Lo llamo "Diseccionar" el problema, y lo divido en tantas partes y con tantas redundancias como tú lo has hecho. Luego, una vez que funciona viene la labor de poda y optimización que, por un lado es una maravilla (¡mira he reducido 100 líneas a sólo 10!) y por otro una depresión (¡Toda la mañana trabajando para al final haber escrito sólo 10 líneas!)... pero es lo que hay.

Lo más difícil de todo es la simpleza, la concisión y la pulcritud del código.

Lo más importante es que funcione. Si el tuyo funciona, es válido... el nivel de exigencia de todo lo demás lo marcas tú.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Detectar Primary Key En Tabla? 
 
Excelente aporte shordi, excelentes conceptos, muy instructivo.

el código es de un aprendiz, el objetivo mio siempre es comprender como funcionan las clases, en este caso todo lo referido a clases sobre bases de datos
como ser la clase table, field etc.

jaja si supieran el motivo por el cual me inspire para hacer un programa que te mostrara la estructura y datos de una base sqlite.

el motivo fue que cuando hacia pruebas de crear tablas en gambas y quería corregirlas no podía obtener la sentencia para copiarla y pegarla del gambas
de la tabla maestra sqlite_master. Buen podría guardar la sentencia en un txt antes de ejecutarla pero en fin ese fue el motivo por el cual estoy programando infodatabasesql.

estoy metido de lleno en base de datos sqlite para poder hacer el programa del taller a medida y cumpla con todas mis necesidades.
también me doy cuenta que saber sobre base de datos es casi imprescindible para un programador pues casi todo programa necesita una base de datos de algo.
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Detectar Evento En Formulario Creado ... v3ctor General 3 Viernes, 27 Junio 2014, 16:18 Ver último mensaje
vuott
No hay nuevos mensajes SQLite Y La Primary Key. tincho Bases de Datos 1 Lunes, 25 Julio 2016, 17:29 Ver último mensaje
jguardon
No hay nuevos mensajes ¿Como Detectar El Evento Clear En Un DirBox? v3ctor General 2 Jueves, 24 Noviembre 2016, 18:24 Ver último mensaje
shordi
No hay nuevos mensajes Como Detectar Evento Click En Notify-send v3ctor Mundo Linux 0 Miercoles, 08 Agosto 2018, 11:32 Ver último mensaje
v3ctor
 

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