none
Como llamar a un form desde dos datagridview?? RRS feed

  • Pregunta

  • Hola Tengo un problema llamo a un frmNuevoProveedor con datos llenos del proveedor seleccionado haciendo dobleclick en un dgvProveedor del frmProveedor... Tengo un FrmNuevoProducto con dgvProducto el cual al hacer dobleclick llama me llena los campos con los datos del producto hasta ahi todo bien...

    El problema esta cuando lleno los mismos datos del producto en los diferentes campos desde un dgvDetalleProducto que tengo en FrmProducto doy doble click en el datagrid este llama al FrmNuevoProveedor y no me llena nada.... 

    tengo este codigo en el FrmNuevoProveedor para que cuando llame del frmproveedor se llenen los datos:

     Public Sub New()
    
            InitializeComponent()
    
        End Sub
    
        Public Sub New(ByVal _Codigo As String)
    
            Codigoproveedor = _Codigo
            InitializeComponent()
    
        End Sub
    
        Private Sub FrmNuevoProveedor_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            txtidproveedor.ReadOnly = True
            dtpfecha.Visible = False
    
            dgvproducto.AutoGenerateColumns = False
    
            If String.IsNullOrEmpty(Codigoproveedor) Then
    
                txtidproveedor.Text = Proveedor.CodigoProveedor
    
            Else
    
                Dim _proveedor As ProveedorEntity = CType(Proveedor.Buscar(Codigoproveedor), ProveedorEntity)
    
                If _proveedor IsNot Nothing Then
    
                    FECHADateTimePicker.Visible = False
                    dtpfecha.Visible = True
    
                    txtidproveedor.Text = _proveedor.CODIGO_PROVEEDOR
                    txtempresa.Text = _proveedor.EMPRESA
                    dtpfecha.Text = _proveedor.FECHA
                    txtdireccion.Text = _proveedor.DIRECCION
                    txtruc.Text = _proveedor.RUC
                    txtmastelefono.Text = _proveedor.TELEFONO
                    txtmasmovil.Text = _proveedor.CELULAR
                    txtmasnumerocuenta.Text = _proveedor.NUMERO_DE_CUENTA
                    txtcorreo.Text = _proveedor.CORREO
                    txtobservacion.Text = _proveedor.OBSERVACIONES
    
                    dgvproducto.DataSource = Producto.BuscarProducto(Codigoproveedor)
    
                End If
    
            End If
    
        End Sub

    Ojala puedan ayudarme un poco..

    Gracias y saludos

    sábado, 15 de junio de 2013 11:40

Todas las respuestas

  • El problema esta cuando lleno los mismos datos del producto en los diferentes campos desde un dgvDetalleProducto que tengo en FrmProducto doy doble click en el datagrid este llama al FrmNuevoProveedor y no me llena nada

    desde FrmProducto como estas pasando los datos al frmNuevoProveedor ?

    o sea quieres pasarlo a la misma instancia de un forma ya abierto, o es que creas una nueva instancia de frmNuevoProveedor y la muestras con Show() ?

    porque si tanto FrmProducto como frmProveedor apuntan a la misma instancia de frmNuevoProveedor requieres de la misma instancia para que se muesteren en el mismo form

    sino seran instancias de frmNuevoProveedor separadas, abriras dos forms distintos

    si la ides es desde dos for impactar a uno solo podrias usar

    [WinForms] Verificar si el form esta abierto

    para localizar la instancia ya abierta y enviar los datos a esa misma instancia del form frmNuevoProveedor

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    sábado, 15 de junio de 2013 12:03
  • Hola respondiendo a tus preguntas hice unas imagenes para entender mejor

    Me explique un poco mal..

    este es el frmProveedor:

    y este es el codigo:

     Private Sub Editar()
    
            Dim codigo As String = CStr(dgvProveedor.CurrentRow.Cells(0).Value)
    
            Dim frm As New FrmNuevoProveedor(codigo)
    
            frm.ShowDialog()
    
            UpdGrilla()
    
        End Sub
    
        Private Sub UpdGrilla()
    
            dgvProveedor.DataSource = Proveedor.CargarGrilla
    
        End Sub
    
        Private Sub dgvProveedor_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvProveedor.CellDoubleClick
    
            Editar()
    
        End Sub

    y este codigo esta en FrmNuevoProveedor:

     Private Codigoproveedor As String
    
        Public Sub New()
    
            InitializeComponent()
    
        End Sub
    
        Public Sub New(ByVal _Codigo As String)
    
            Codigoproveedor = _Codigo
            InitializeComponent()
    
        End Sub
    
        Private Sub FrmNuevoProveedor_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            txtidproveedor.ReadOnly = True
            dtpfecha.Visible = False
    
            dgvproducto.AutoGenerateColumns = False
    
            If String.IsNullOrEmpty(Codigoproveedor) Then
    
                txtidproveedor.Text = Proveedor.CodigoProveedor
    
            Else
    
                Dim _proveedor As ProveedorEntity = CType(Proveedor.Buscar(Codigoproveedor), ProveedorEntity)
    
                If _proveedor IsNot Nothing Then
    
                    FECHADateTimePicker.Visible = False
                    dtpfecha.Visible = True
    
                    txtidproveedor.Text = _proveedor.CODIGO_PROVEEDOR
                    txtempresa.Text = _proveedor.EMPRESA
                    dtpfecha.Text = _proveedor.FECHA
                    txtdireccion.Text = _proveedor.DIRECCION
                    txtruc.Text = _proveedor.RUC
                    txtmastelefono.Text = _proveedor.TELEFONO
                    txtmasmovil.Text = _proveedor.CELULAR
                    txtmasnumerocuenta.Text = _proveedor.NUMERO_DE_CUENTA
                    txtcorreo.Text = _proveedor.CORREO
                    txtobservacion.Text = _proveedor.OBSERVACIONES
    
                    dgvproducto.DataSource = Producto.BuscarProducto(Codigoproveedor)
    
                End If
    
            End If
    
        End Sub

    esta es la imagen:

    y Al dar dobleclik en el dgvProdcuto que esta en el FrmNuevoProveedor me llena los campos con los detalles del producto es en el mismo frmNuevoProveedor....

    con este codigo:

     Private Sub dgvproducto_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvproducto.CellDoubleClick
    
            Codigoproducto = CStr(dgvproducto.CurrentRow.Cells(1).Value)
    
            Dim _producto As ProductoEntity = CType(Producto.TraerProducto(Codigoproducto), ProductoEntity)
    
            FECHADateTimePicker.Visible = False
            dtpfecha.Visible = True
    
            txtidproducto.Text = _producto.CODIGO_PRODUCTO
            txtdescripcion.Text = _producto.DESCRIPCION_PRODUCTO
            dtpfecha.Text = _producto.FECHA
            txtmarca.Text = _producto.MARCA
            txttipo.Text = _producto.TIPO
            txtpreciocompra.Text = _producto.PRECIO_DE_COMPRA
            txtprecioventa.Text = _producto.PRECIO_DE_VENTA
            cbxiva.Text = _producto.IVA
            txtstock.Text = _producto.STOCK
            txtmaterial.Text = _producto.Material
    
        End Sub

    Hasta ahi todo bien...

    Ahora lo que quiero hacer es que desde FrmProducto:

    La imagen la pondre en una nueva respuesta ya que no me deja colocar mas de dos imagenes......

    Al dobleclick en un producto llame al FrmNuevoProveedor con los datos del producto..

    el problema esta que debo colocar el codigo en el load del FrmNuevoProveedor donde ya esta el codigo para atraer al proveedor desde el FrmProveedor y si coloco el codigo para atraer el producto no me llena nada...

    Espero ahora que se entiendo un poco mejor la idea...

    Gracias y saludos..

    sábado, 15 de junio de 2013 13:35
  • Esta es la imagen correspondiente al FrmProducto...

    sábado, 15 de junio de 2013 13:36
  • Al dobleclick en un producto llame al FrmNuevoProveedor con los datos del producto..

    pero si es un producto, porque llamas al form de nombre NuevoProveedor ? no deberias ser NuevoProducto

    el problema esta que debo colocar el codigo en el load del FrmNuevoProveedor donde ya esta el codigo para atraer al proveedor desde el FrmProveedor

    creo que te esta faltando crear un nuevo formulario, proque no es el mismo que ya tienes el que debes utilizar

    frmProveedor invoca a frmNuevoProveedor, pero desde el grid de productos deberias invocar a otro form distinto que sea frmNuevoProducto, ese form falta que lo crees

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 15 de junio de 2013 14:40
  • Hola Leandro la cuenstion es que yo creo los productos en el mismo frmNuevoProveedor y siempre que llamo a un proveedor el datagrid se llena solo con los productos que corresponden a ese proveedor y en el FrmProducto visualizo todos los productos creados entoces crei que podria llamar al FrmNuevoProveedor que en realidad vendria a ser FrmNuevoProveedoryProducto...Entonces si es que no se puede hacer lo que necesito podria crear un tabcontrol donde crearia dos pestañas en una pondria el datagrid que tengo para ver los productos segun el proveedor y enla segunda pestaña crearia un datagrid para llamar a todos los productos existentes y al dar dobleclick en uno que llene los campos...

    No se si estara bien lo que he pensado o que me recomiendas basado a tu experiencia???

    Gracias y saludos...

    sábado, 15 de junio de 2013 22:18
  • mm la verdad esta algo rebuscado, no veo nada intuitivo el poner tabs para mostrar datos filtrados por proveedor y otro sin filtro

    las repsonsabilidades no son las mismas por lo que no veo wue se puedan mezclar

    una cosa es listar los productos del proveedor y otra es un producto en si mismo de forma unitaria

    igualmente no me queda claro que ganarias con ese segundo tab para listar los productos, si la idea es editar o crear uno nuevo deberias mostrar los textbox y el resto de los controles para poder completar los datos, es por eso que mencione un nuevo forma de alta de productos que lanzarias al realizar doble click en en el grid que liste productos

    por supuesto si realizas un click en el form de proveedores cuando se de de alta el nuevo producto deberias lanzar la accion para actualizar los datos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 15 de junio de 2013 23:26
  • Hola la verdad tenia el formNuevoProducto pero lo cambie por otro frm ya que en el frmNuevoProveedor modifique como lo en la imagen 2...

    y como tengo FrmProducto pense que se podia llamar al frmnuevoproveedor para visualizar los datos y asi poderlos modificar pero bueno creo que deberia solo cambiar el frmproducto por otro frm que tengo que crear asi solo me quedaria con el frmnuevoproveedor en el cual se crea el proveedor y los productos igualmente gracias..

    No se si seria mucha molestia pedirte unos consejos para mi proyecto sobre que me faltaria o cambiaria....

    gracias y saludos

    domingo, 16 de junio de 2013 0:53