Evento Data


Objetivo: 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

Objetivo: 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

Perfil MP  
Objetivo: 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.

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.5727s (PHP: -64% SQL: 164%)
Consultas SQL: 44 - Debug off - GZIP Activado