Foros del Web » Programación para mayores de 30 ;) » .NET »

Abrir Formulario desde DataGridView

Estas en el tema de Abrir Formulario desde DataGridView en el foro de .NET en Foros del Web. Holas de nuevo, tengo un lio desde hace mucho, y no he podido solucionarlo. tengo un DataGridView, en el cual ingreso un codigo en la ...
  #1 (permalink)  
Antiguo 24/07/2010, 06:22
Avatar de Ausberto  
Fecha de Ingreso: octubre-2005
Mensajes: 27
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo Abrir Formulario desde DataGridView

Holas de nuevo, tengo un lio desde hace mucho, y no he podido solucionarlo.
tengo un DataGridView, en el cual ingreso un codigo en la primera celda le doy enter y me busca el producto que corresponde y su precio, todo lo hace bien,
el problema esta cuando abro otro formulario desde la primera celda con la tecla (f4) lo hace bien busco un producto segun descripcion, y me encuentra su codigo lo capturo y vuelvo al DgView a la primera celda con el codigo capturado le doy enter y no me ejecuta nada, necesariamente debo volver a digitar o escribir todo el codigo capturado para darle enter y siga funcionando, ademas el cierre del formulario donde busco es muy lento, me podrian ayudar???
este es el codigo que tengo:
Este codigo es del Datagridview
Código:
Private Sub Grilla_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Grilla.CellEndEdit

        Select Case e.ColumnIndex
            Case 0
                
                cod = Grilla.Rows(Grilla.CurrentRow.Index).Cells(0).Value
                MyCom.CommandText = "Select * From t_productos where idpro = " & "'" & cod & "'" & " and estado = 'Activo'"
                MyCom.Connection = Conn
                MyCom.CommandType = CommandType.Text

                MyData.SelectCommand = MyCom
                MyData.Fill(MyDs)
                If MyDs.Tables(0).Rows.Count > 0 Then
                    Rs = MyDs.Tables(0).Rows(0)
                    Grilla.Rows(Grilla.CurrentRow.Index).Cells(1).Value = Rs("nombre")
                    Grilla.Rows(Grilla.CurrentRow.Index).Cells(2).Value = Rs("precio")
                    Grilla.Rows(Grilla.CurrentRow.Index).Cells(7).Value = Rs("unidad")
                    unid = Rs("unidad")
                    prec = Rs("precio")
                    Equi = Rs("equiva")
                    MyDs.Clear()
                    MyDs.Dispose()
                    MyData.Dispose()
                    SendKeys.Send("{UP}")
                    SendKeys.Send("{TAB}")
                    SendKeys.Send("{TAB}")
                    SendKeys.Send("{TAB}")
                Else
                    MsgBox("El articulo No Existe o esta Inactivo", MsgBoxStyle.Critical)
                    SendKeys.Send("{UP}")
                End If
            Case 3
                If IsDate(Grilla.Rows(Grilla.CurrentRow.Index).Cells(3).Value) Then
                    SendKeys.Send("{UP}")
                    SendKeys.Send("{TAB}")
                Else
                    SendKeys.Send("{UP}")
                End If
                Fec = Grilla.Rows(Grilla.CurrentRow.Index).Cells(3).Value

            Case 4
                util = CDbl(Grilla.Rows(Grilla.CurrentRow.Index).Cells(4).Value)
                cost = prec / (1.0 + (util / 100.0))
                Grilla.Rows(Grilla.CurrentRow.Index).Cells(5).Value = cost
                SendKeys.Send("{UP}")
                SendKeys.Send("{TAB}")
                SendKeys.Send("{TAB}")
            Case 5
                cost = Grilla.Rows(Grilla.CurrentRow.Index).Cells(5).Value
                util = ((prec - cost) / cost) * 100.0
                Grilla.Rows(Grilla.CurrentRow.Index).Cells(4).Value = Format(util, "#.00")
                SendKeys.Send("{UP}")
                SendKeys.Send("{TAB}")
            Case 6
                If IsNumeric(Grilla.Rows(Grilla.CurrentRow.Index).Cells(6).Value) Then
                    If Equi = 2 Then
                        MyCom.CommandText = "select * from t_equivale where idpro = " & "'" & cod & "'"
                        MyCom.Connection = Conn
                        MyCom.CommandType = CommandType.Text
                        MyData.SelectCommand = MyCom
                        MyData.Fill(MyDs)
                        FEquivale.bt1.Text = MyDs.Tables(0).Rows(0).Item("uni1").ToString
                        FEquivale.bt2.Text = MyDs.Tables(0).Rows(0).Item("uni2").ToString
                        FEquivale.bt3.Text = MyDs.Tables(0).Rows(0).Item("uni3").ToString
                        NomFormu = Me.Name
                        FEquivale.ShowDialog()
                                    
                    End If

                    sal = Grilla.Rows(Grilla.CurrentRow.Index).Cells(6).Value
                    cost = Grilla.Rows(Grilla.CurrentRow.Index).Cells(5).Value
                    subt = cost * (sal + depo)
                    Grilla.Rows(Grilla.CurrentRow.Index).Cells(8).Value = subt
                    SendKeys.Send("{UP}")
                    SendKeys.Send("{TAB}")
                    SendKeys.Send("{TAB}")
                    SendKeys.Send("{TAB}")

                Else
                    SendKeys.Send("{UP}")
                End If
                
            

        End Select
        MyDs.Clear()
        MyDs.Dispose()

    End Sub
y Este otro para buscar en otro formulario
Código:
Private Sub Grilla_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Grilla.KeyDown
        If e.KeyCode = Keys.F4 Then
            NomFormu = Me.Name
            FBuscaArt.ShowDialog()
            Grilla.Rows(Grilla.CurrentRow.Index).Cells(0).Value = VarIdPro
            cod = VarIdPro
            prec = VarPrePro
            Grilla.Focus()
            Grilla.Rows(Grilla.CurrentRow.Index).Cells(0).Selected = True

        End If
    End Sub
Espero su ayuda
  #2 (permalink)  
Antiguo 24/07/2010, 06:29
Avatar de TheAlkaline  
Fecha de Ingreso: enero-2010
Ubicación: Lima - Peru
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Abrir Formulario desde DataGridView

Creo que es por el evento de tu grilla "Grilla_CellEndEdit" al parecer no lo reconoce como tal cuando haces la busqueda en tu form de busqueda, podrias utilizar el Keypress validando que sea enter para que se realice la validacion y tu consulta que llena tus celdas.
  #3 (permalink)  
Antiguo 24/07/2010, 07:45
Avatar de Ausberto  
Fecha de Ingreso: octubre-2005
Mensajes: 27
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Abrir Formulario desde DataGridView

Creo que me as entendido mal o me explique mal ???. eso me funciona todo bien, el uniko problema es que despues de abrir otro formulario desde las celdas del datagrid me busca un producto segun una descripcion dada, y cuando lo cierro capturando ese valor en una variable lo hace muy LENTOOOOOOOOOOO, y me captura ese codigo enla celda que kiero, pero por mas enter que le doy no me busca nada
de igual manera en otros formularios abriendo otro formulario de busqueda sobre otros al cerrar lo hace muy lento parpadeando ????
como pudiera solucioanr eso, lo cierro asi

me.close
me.dispose

  #4 (permalink)  
Antiguo 24/07/2010, 08:44
Avatar de TheAlkaline  
Fecha de Ingreso: enero-2010
Ubicación: Lima - Peru
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Abrir Formulario desde DataGridView

Pues si te entendi tienes dos problemas no?. la lentitud al realizar la busqueda y capturar la variable y la otra que es que cuando ya capturaste la variable en tu celda al dar enter deberia pasar lo mismo como si digitaras el codigo sin realizar la busqueda en el form de busqueda.

Para lo primero de la lentidud seria bueno que pongas el codigo de la busqueda en FBuscaArt talvez en la consulta esta el problema.

Para la otro es lo que dije arriba, cuando escribes en la celda y presionas enter se cargan los demas datos verdad?, pero cuando obtienes el codigo mediante tu busqueda no pasa eso, y sospecho que porque cuando obtienes el codigo mediante tu form de busqueda y luego presionas enter no lo reconoce como el evento CellEndEdit.
  #5 (permalink)  
Antiguo 24/07/2010, 09:04
Avatar de Ausberto  
Fecha de Ingreso: octubre-2005
Mensajes: 27
Antigüedad: 18 años, 6 meses
Puntos: 0
Sonrisa Respuesta: Abrir Formulario desde DataGridView

la busqueda no es lenta sino cuando cierro el formulario capturando la variable y poniendolo a la celda de datagridview, est es el codigo:
Código:
Private Sub Grilla_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Grilla.KeyDown
        If e.KeyCode = Keys.F4 Then
            NomFormu = Me.Name
            FBuscaArt.ShowDialog()
            Grilla.Rows(Grilla.CurrentRow.Index).Cells(0).Value = VarIdPro
            cod = VarIdPro
            prec = VarPrePro
            Grilla.Focus()
            Grilla.Rows(Grilla.CurrentRow.Index).Cells(0).Selected = True

        End If
    End Sub
repito la consulta para buscar el articulo no es lenta, sino al cerrar y capturar para ponerlo al datagrid

Última edición por Ausberto; 24/07/2010 a las 09:31

Etiquetas: datagridview, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:14.