1. Abro el FORM1 (Archivo de clientes) y lleno el DataGrid con las funciones: Seleccion y Filltable (uso la variable "design"de esta funciòn para llenar uno u otro datagrid), uso el Valor "CliPic" para llenar los datos del DGV
Código:
Seleccion("SELECT F_CLI.* FROM F_CLI order by CODCLI")
Filltable(DgClientesAr, "CliPic")
2. Desde el FORM1 abro el FORM2 (Edición de clientes) para editar el registro seleccionado en el primero. Al modificar el registro y actualizar llamo de nuevo la funcion FillTable para refrescar los datos del DataGrid, aquí no hay inconvenientes.
3. Desde el FORM2 abro el FORM3 (Archivo de códigos postales) y lleno el datagrid de este último usando tambien la variable "design" con el valor "PosPic"
Cuando aplico el campo seleccionado, este se traslada correctamente al FORM2
Código:
Dim Frm As New FrmCodigosPosAr
AddOwnedForm(Frm)
Seleccion2("SELECT CODPOS, POBPOS, PROPOS FROM F_POS")
Filltable(Frm.DG, "PosPic") ' Llenamos el DG del archivo de Códigos postales
Frm.ShowDialog()
El problema: Al tratar de actualizar los datos del FORM1 (si abro el form3 desde el form2), el datagrid toma los datos del datagrid del FORM3 y me reporta error por las columnas.
La información para el FORM1 Y FORM2 Las tomo usando MyConn y la del FORM3 la tomo desde Myconn2 (Están ubicadas en dos bases de datos diferentes, para ello uso dos conexiones diferentes: Myconn() y Myconn2()
He intentado con da.dispose etc, pero no he logrado hacerlo. Agradezco la ayuda.
Código:
'-------------------------------------
' Funciones usadas para llenar los diferentes DataGrid
'------------
' FillTable
'------------
Public Sub Filltable(ByVal dtgrd As Object, ByVal design As String)
Dim publictable As New DataTable
Try
da.SelectCommand = cmd
da.Fill(publictable)
dtgrd.DataSource = publictable
Select Case design ' USAMOS "design" para llenar uno u otro DataGrid
Case "PosPic" ' Archivo Codigos postales
dtgrd.Columns(0).headertext = "Código"
dtgrd.Columns(1).headertext = "Población"
dtgrd.Columns(2).headertext = "Provincia"
' el ancho de las columnas
dtgrd.Columns(0).Width = 60
dtgrd.Columns(1).Width = 220
dtgrd.Columns(2).Width = 220
Case "CliPic" ' Archivo de clientes
dtgrd.Columns(0).HeaderText = "Cod"
dtgrd.Columns(2).HeaderText = "CC/NIT"
dtgrd.Columns(3).HeaderText = "Nombre Fiscal"
dtgrd.Columns(4).HeaderText = "Nombre comercial"
dtgrd.Columns(5).HeaderText = "Domicilio"
dtgrd.Columns(9).HeaderText = "Teléfono"
dtgrd.Columns(11).HeaderText = "Movil"
' Los demàs no se muestran
dtgrd.Columns(1).Visible = False
dtgrd.Columns(6).Visible = False
dtgrd.Columns(7).Visible = False
' ....
End Select
Catch ex As Exception
MsgBox("Error al cargar: " & ex.Message, MsgBoxStyle.Information)
End Try
da.Dispose()
End Sub
' -----------------
' Funciones Selección
' -----------------
Public Sub Seleccion(ByVal sql As String)
Try
con.Open()
With cmd
.Connection = con
.CommandText = sql
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Emilio 2020 | TPV")
End Try
con.Close()
da.Dispose()
End Sub
'-------------------------------------
Public Sub Seleccion2(ByVal sql As String)
Try
con2.Open()
With cmd
.Connection = con2
.CommandText = sql
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Emilio 2020 | TPV")
End Try
con2.Close()
da2.Dispose()
End Sub
'-------------------
Module publicvariable
Public con As OleDb.OleDbConnection = Myconn()
Public con2 As OleDb.OleDbConnection = Myconn2()
End Module
'------------------------
Module DB
Public Function Myconn() As OleDb.OleDbConnection
Return New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\3122019.mdb")
End Function
Public Function Myconn2() As OleDb.OleDbConnection
Return New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\General.mdb")
End Function
End Module
'*************************************