none
Problema al pasar datos entre formularios bases de datos distintas RRS feed

  • Pregunta

  • Hola a todos y gracias de antemano por su ayuda. Este es el caso que tengo:

    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

            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
            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 Conecciones diferentes: Myconn() y Myconn2()
    He intentado con da.dispose etc, pero no he logrado hacerlo. Agradezco la ayuda. 
    '-------------------------------------
    ' 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
    '*************************************


    SoyContacto

    viernes, 5 de junio de 2020 17:06

Todas las respuestas

  • Hola

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma me gustaría saber si esta haciendo esto por capas o todo en los respectivos forms?

     

     

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte.

    Gracias por usar los foros de MSDN.

     

     

    Eric Ruiz

     

    --------------------------------------------------------------------------

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 5 de junio de 2020 19:28
    Moderador
  • Hola Eric, gracias por tu respuesta. Soy novata en .net te comento, las funciones están en módulos separados a los cuales llamo desde los respectivos formularios:

    FillTable y Seleccion (1-2) están en un módulo (UsableSelect) y

    las conexiones las hago desde los módulos: PublicVariable y DB

    Gracias y quedo atento a cualquier inquietud


    SoyContacto

    viernes, 5 de junio de 2020 19:48