Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Evento Data

Evento Data
Artículo
Responder citando    Descargar mensaje  
Mensaje Evento Data 
 
Hola gente, después de bastante tiempo estoy intentando actualizar un pequeño programa que hice para uso personal, para lo cual me he planteado primero entender el uso del evento DATA y después, el uso de claves foráneas en la base de datos, me he bajado el ejemplo que puso hace un tiempo Shordi para intentar comprender el uso, no tengo error al correr el formulario, pero sí lo obtengo en los datos que muestra el grid, en todos aparece la palabra False, entiendo (o al menos es lo que creo) se trata de un error de valor, pero en lo concreto no logro entender que hago mal, si alguien puede ver el código y entiende donde me equivoco, agradezco me lo indiquen. También pongo una captura de pantalla con el resultado del formulario de muestra.

Gracias de antemano


' gambas class file

Private cx As New Connection
Private rs As Result
Private id As Integer

Public Sub Form_Open()
  Dim sql As String
    
  'PROVEEDORES
  cmbRELACION.Add("Contacto")
  cmbRELACION.Add("Cliente")
  cmbRELACION.Add("Proveedor")
  cmbRELACION.Add("Cliente/Proveedor")

  'PROVEEDORES
  cmbPOSICIONFISCAL.Add("Consumidor final")
  cmbPOSICIONFISCAL.Add("Exento")
  cmbPOSICIONFISCAL.Add("Responsable inscripto")

  'DISEÑO DEL GRID DE PERSONAS FISICAS
  With tbPERSONASFISICAS
  .Header = tbPERSONASFISICAS.Horizontal
  .Grid = True
  .Rows.Count = 0
  .Columns.Count = 15
  .Header = True
  .Columns[0].Title = "" 'ID
  .Columns[0].Width = 0
  .Columns[1].Title = "" 'Relación
  .Columns[1].Width = 0
  .Columns[2].Title = "" '>> Apellido, Nombre
  .Columns[2].Width = 400
  .Columns[3].Title = "" 'Domicilio
  .Columns[3].Width = 0
  .Columns[4].Title = "" 'Código Postal
  .Columns[4].Width = 0
  .Columns[5].Title = "" 'Localidad
  .Columns[5].Width = 0
  .Columns[6].Title = "" 'Provincia
  .Columns[6].Width = 0
  .Columns[7].Title = "" 'País
  .Columns[7].Width = 0
  .Columns[8].Title = "" '>> Telefono1
  .Columns[8].Width = 150
  .Columns[9].Title = "" '>> Telefono2
  .Columns[9].Width = 150
  .Columns[10].Title = "" 'email
  .Columns[10].Width = 0
  .Columns[11].Title = "" 'website
  .Columns[11].Width = 0
  .Columns[12].Title = "" 'cuil cuit
  .Columns[12].Width = 0
  .Columns[13].Title = "" 'cbu
  .Columns[13].Width = 0
  .Columns[14].Title = "" 'posicion fiscal
  .Columns[14].Width = 0
  End With
  
  cx = Mconex.conectar()
  sql = "select IDPERSONAFISICA as ID from PERSONAFISICA"
  rs = cx.Exec(sql)
  cx.Commit

End

Public Sub Form_Activate()
  
  tbPERSONASFISICAS.Rows.Count = rs.Count
  
End

Public Sub tbPERSONASFISICAS_Data(Row As Integer, Column As Integer)
  
  rs.MoveTo(Row)
  tbPERSONASFISICAS.Data.Text = Str(rs[tbPERSONASFISICAS.Columns[Column].Text])
  
End

 


captura_de_pantalla_2020_04_05_15_32_34



 
imagomundi - Ver perfil del usuario Enviar mensaje privado  
imagomundi [ Domingo, 05 Abril 2020, 19:45 ]
 


Evento Data
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Evento Data 
 
Por lo que veo, estás intentando llenar el gridview con una consulta a la base de datos que sólo recoge el campo ID, que por otra parte tienes escondido en la visualización del grid (tiene anchura 0 dicha columna, por lo tanto no se muestra). Entonces, el resto de celdas no contienen datos o éstos se interpretan como False.

SELECT IDPERSONAFISICA AS ID FROM PERSONAFISICA


Normalmente la consulta debe devolver el mismo número de campos que quieres mostrar en el grid (o alguno más, como los que tienes ocultos).
Algo así:

SELECT *  FROM PERSONAFISICA


Devolvería todos los registros de todos los campos/columnas. Como consejo a la hora de crear la base de datos, normalmente los campos se suelen definir en minúscula sin caracteres especiales, salvo el guión bajo si quieres poner nombres compuestos. En la sintaxis SQL, aunque no es estrictamente necesario, lo único que va en mayúscula son las palabras clave, como SELECT y FROM, etc.


Y por cierto, no sé por qué tienes la propiedad .Title de cada columna con texto vacío, pudiendo haber puesto lo que tienes comentado como título del encabezado.

Intenta con una consulta que devuelva los valores correspondientes a las columnas (campos en la BD).

Saludos



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Domingo, 05 Abril 2020, 22:29 ]
Responder citando    Descargar mensaje  
Mensaje Re: Evento Data 
 
Alberto: Coincido con lo que te dice Jesús de la SQL. Dejo un fragmento de código de como manejar el evento data.
Para los nombres de los campos podes usar una String[] o una Collection. que te ayudara  ahacer código mas sencillo.

Dim con As Connection
Dim tbl As Table
Dim stxFld As New String[]

tbl = con.Tables[tb]

 For Each fld In tbl.Fields
    stxFld.Add(fld.Name)
 Next  

If resShow.Available Then
  resShow.MoveTo(Row)
  xFld = stxFld[Column]
  
  GridView1[Row, Column].Text = resShow[xFld]

  ' Para dar un color levemente distinto a cada fila respecto a la anterior
  If (Row Mod 2) = 0 Then
    GridView1[Row, Column].Background = Color.TextBackground
  Else
    GridView1[Row, Column].Background = Color.Background
  Endif
  
Endif
GridView1.Refresh

End
 

Saludos.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Lunes, 06 Abril 2020, 02:04 ]
Mostrar mensajes anteriores:    
 
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


 



 

cron