Usuario
Como llamar a un form desde dos datagridview??

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
- Cambiado Enrique M. Montejo miércoles, 31 de julio de 2013 14:23 Windows Forms
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- Editado Leandro TuttiniMVP sábado, 15 de junio de 2013 12:27
-
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..
-
-
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 -
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...
-
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 -
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