none
Como regresar a un form con campos llenos con datos de un cliente???? RRS feed

  • Pregunta

  • hola tengo un problema resulta que cuando ingreso al formulario para visualizar los datos un cliente y cuando doy dobleclick en un datagridview para visualizar los datos de la factura que me compro me abre el form para ver los detalles de la factura hasta ahi no hay problema:

     pero cuando regreso al form donde estan datos de los clientes resulta que me muestra todos los campos vacios:

    pero deberia aparecer lleno

    gracias y saludos

    domingo, 28 de abril de 2013 15:51

Todas las respuestas

  • hola

    estas realizando alguna accion que se acoie con el form de detalle que abres ?

    quizas  te adjuntas al close de ese formularios, y eos hace que quiera recargar algo que no trae registros

    no se como es que abres ese form de detalle, si es con Show() o ShowModal()

    pero podrias poner un breakpoint en el codigo para ver que suce despeus que lo cierras, porque claramente estas ejecutando algun otro codigo cuando esto sucede


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 28 de abril de 2013 16:48
  • hola gracias por responder:

    tengo este codigo para abrir el form para ver los detalles de la factura:

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            
    
            If (IdCliente <> String.Empty) Then
    
                TraerCliente(IdCliente)
            End If
    
        End Sub
    
    
        Public Property IdCliente As String
    
        
        Public Sub TraerCliente(ByVal IdCliente As String)
            Try
                Using cnx As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True")
    
                    cnx.Open()
    
                    Dim SqlAction As String = "SELECT CODIGO_CLIENTES,CI_DEL_CLIENTE,FECHA,NOMBRE,APELLIDOS,DIRECCION,EDAD,PROFESION,SEXO,TELEFONO,CELULAR,CORREO_ELECTRONICO,OD_ESFERA,OD_CILINDRO,OD_EJE,OD_PRISMA,OD_ADICCION,OI_ESFERA,OI_CILINDRO,OI_EJE,OI_PRISMA,OI_ADICCION,DP,ALT,OBSERVACION_CLIENTE FROM Clientes WHERE CODIGO_CLIENTES= @Idcliente"
                    Dim cmd As New SqlCommand(SqlAction, cnx)
    
                    cmd.Parameters.AddWithValue("@Idcliente", CStr(IdCliente))
    
                    Dim dr As SqlDataReader = cmd.ExecuteReader()
    
                    If (dr.Read()) Then
                        CODIGO_CLIENTESTextBox.Text = dr.Item("CODIGO_CLIENTES").ToString
                        NOMBRETextBox.Text = dr.Item("NOMBRE").ToString
                        APELLIDOSTextBox.Text = dr.Item("APELLIDOS").ToString
                        CI_DEL_CLIENTEMaskedTextBox.Text = dr.Item("CI_DEL_CLIENTE").ToString
                        FECHADateTimePicker.Value = CDate(dr.Item("Fecha"))
                        DIRECCIONTextBox.Text = dr.Item("DIRECCION").ToString
                        TELEFONOMaskedTextBox.Text = dr.Item("TELEFONO").ToString
                        CELULARMaskedTextBox.Text = dr.Item("CELULAR").ToString
                        PROFESIONTextBox.Text = dr.Item("PROFESION").ToString
                        EDADTextBox.Text = dr.Item("EDAD").ToString
                        SEXOComboBox.Text = dr.Item("SEXO").ToString
                        CORREO_ELECTRONICOTextBox.Text = dr.Item("CORREO_ELECTRONICO").ToString
                        OD_ESFERATextBox.Text = dr.Item("OD_ESFERA").ToString
                        OD_CILINDROTextBox.Text = dr.Item("OD_CILINDRO").ToString
                        OD_EJETextBox.Text = dr.Item("OD_EJE").ToString
                        OD_PRISMATextBox.Text = dr.Item("OD_PRISMA").ToString
                        OD_ADICCIONTextBox.Text = dr.Item("OD_ADICCION").ToString
                        OI_ESFERATextBox.Text = dr.Item("OI_ESFERA").ToString
                        OI_CILINDROTextBox.Text = dr.Item("OI_CILINDRO").ToString
                        OI_EJETextBox.Text = dr.Item("OI_EJE").ToString
                        OI_PRISMATextBox.Text = dr.Item("OI_PRISMA").ToString
                        OI_ADICCIONTextBox.Text = dr.Item("OI_ADICCION").ToString
                        DPTextBox.Text = dr.Item("DP").ToString
                        ALTTextBox.Text = dr.Item("ALT").ToString
                        OBSERVACION_CLIENTETextBox.Text = dr.Item("OBSERVACION_CLIENTE").ToString
                    End If
                End Using
    
            Catch ex As Exception
                MessageBox.Show(String.Format("Error : {0}", ex.Message, "Ocurrio un error inesperado", MessageBoxButtons.OK, MessageBoxIcon.Error))
            End Try
    
            traerfactura()
    
        End Sub
    
    
        Sub traerfactura()
    
            Dim dt As New DataTable()
            Using conn As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True")
    
                Dim query As String = "select FECHA, CODIGO_FACTURA, FORMA_DE_PAGO, TOTAL, DEUDA from FACTURA WHERE CODIGO_CLIENTES = @idcliente"
    
                Dim cmd As New SqlCommand(query, conn)
                cmd.Parameters.AddWithValue("@idcliente", IdCliente)
                Dim da As New SqlDataAdapter(cmd)
                da.Fill(dt)
            End Using
    
            DataGridView1.DataSource = dt
    
        End Sub


    y este codigo es del form del detalle de la factura:

    Imports System.Data.SqlClient Public Class Form11 Dim conexion As New SqlConnection("Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True") Dim desc, suma, to_desc, i_va, b_impo, tot As Double Function codigofactura() Dim conexion As New SqlConnection("Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True") conexion.Open() Dim cmd As New SqlCommand("select ISNULL(Max(CODIGO_FACTURA),0) from FACTURA", conexion) Dim result As Integer = (cmd.ExecuteScalar()) conexion.Close() Return String.Format("{0:0000000}", result + 1) End Function Public Property Idfactura As String Private Sub Form11_Load(sender As Object, e As EventArgs) Handles MyBase.Load codigocombo() ComboBox1.DataSource = TraerClientes() ComboBox1.DisplayMember = "NombreCompleto" ComboBox1.ValueMember = "CODIGO_CLIENTES" ComboBox1.AutoCompleteCustomSource = LoadAutoComplete() ComboBox1.AutoCompleteMode = AutoCompleteMode.Suggest ComboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource EMPLEADOComboBox.DataSource = Traerempleados() EMPLEADOComboBox.DisplayMember = "EMPLEADO" EMPLEADOComboBox.ValueMember = "NombreCompleto" limpiar() limpiartotal() CAMBIOTextBox.ReadOnly = True DEUDATextBox.ReadOnly = True CODIGO_FACTURATextBox.ReadOnly = True DESCUENTOTextBox.ReadOnly = True BASE_IMPONIBLETextBox.ReadOnly = True IVATextBox.ReadOnly = True TOTALTextBox.ReadOnly = True SUMATextBox.ReadOnly = True CAMBIOTextBox.Enabled = True DEUDATextBox.Enabled = True DESCUENTOTextBox.Enabled = True BASE_IMPONIBLETextBox.Enabled = True IVATextBox.Enabled = True TOTALTextBox.Enabled = True SUMATextBox.Enabled = True VALORTextBox.Enabled = True TOTAL_DESCUENTOTextBox.Enabled = True If (Idfactura <> String.Empty) Then TraerFactura(Idfactura) End If End Sub Public Sub TraerFactura(ByVal Idfactura As String) Try Using cnx As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True") cnx.Open() Dim SqlAction As String = "SELECT CODIGO_FACTURA,CODIGO_CLIENTES,NOMBRE_COMPLETO,FECHA,FORMA_DE_PAGO,EMPLEADO,TOTAL_DESCUENTO,SUMA,DESCUENTO,BASE_IMPONIBLE,IVA,TOTAL,DEUDA FROM FACTURA WHERE CODIGO_FACTURA= @Idfactura" Dim cmd As New SqlCommand(SqlAction, cnx) cmd.Parameters.AddWithValue("@Idfactura", CStr(Idfactura)) Dim dr As SqlDataReader = cmd.ExecuteReader() If (dr.Read()) Then CODIGO_FACTURATextBox.Text = dr.Item("CODIGO_FACTURA").ToString ComboBox1.Text = dr.Item("NOMBRE_COMPLETO").ToString EMPLEADOComboBox.Text = dr.Item("EMPLEADO").ToString ComboBox3.Text = dr.Item("FORMA_DE_PAGO").ToString FECHADateTimePicker.Value = CDate(dr.Item("FECHA")) DESCUENTOTextBox.Text = dr.Item("DESCUENTO").ToString BASE_IMPONIBLETextBox.Text = dr.Item("BASE_IMPONIBLE").ToString IVATextBox.Text = dr.Item("IVA").ToString TOTALTextBox.Text = dr.Item("TOTAL").ToString TOTAL_DESCUENTOTextBox.Text = dr.Item("TOTAL_DESCUENTO").ToString SUMATextBox.Text = dr.Item("SUMA").ToString TextBox1.Text = dr.Item("CODIGO_CLIENTES").ToString DEUDATextBox.Text = dr.Item("DEUDA").ToString End If End Using Catch ex As Exception MessageBox.Show(String.Format("Error : {0}", ex.Message, "Ocurrio un error inesperado", MessageBoxButtons.OK, MessageBoxIcon.Error)) End Try traerdetallefactura() End Sub Sub traerdetallefactura() Dim dt As New DataTable() Using conn As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True") Dim query As String = "select CODIGO_PRODUCTO, DESCRIPCION_PRODUCTO,MARCA,CANTIDAD, PRECIO_DE_VENTA, IVA, TOTAL from DETALLE_FACTURA WHERE CODIGO_FACTURA = @idfactura" Dim cmd As New SqlCommand(query, conn) cmd.Parameters.AddWithValue("@idfactura", Idfactura) Dim da As New SqlDataAdapter(cmd) da.Fill(dt) End Using FACTURADataGridView.DataSource = dt End Sub Sub codigocombo() Dim string_conexion As String = "Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True" Dim sqlcon As New SqlConnection(string_conexion) sqlcon.Open() Dim da As SqlDataAdapter Dim ds As New DataSet da = New SqlDataAdapter("SELECT * FROM PRODUCTO", sqlcon) da.Fill(ds, "PRODUCTO") Dim dgccomboCodigo As DataGridViewComboBoxColumn = TryCast(FACTURADataGridView.Columns("CODIGO_PRODUCTO"), DataGridViewComboBoxColumn) dgccomboCodigo.DataSource = ds.Tables.Item("PRODUCTO") dgccomboCodigo.DisplayMember = "CODIGO_PRODUCTO" sqlcon.Close() End Sub Sub disabled() CAMBIOTextBox.Enabled = False DEUDATextBox.Enabled = False CODIGO_FACTURATextBox.Enabled = False DESCUENTOTextBox.Enabled = True BASE_IMPONIBLETextBox.Enabled = False IVATextBox.Enabled = False TOTALTextBox.Enabled = False SUMATextBox.Enabled = False VALORTextBox.Enabled = True TOTAL_DESCUENTOTextBox.Enabled = False End Sub Sub limpiartotal() TOTALTextBox.Text = "" End Sub Sub limpiar() CODIGO_FACTURATextBox.Text = codigofactura() ComboBox1.Text = "" EMPLEADOComboBox.Text = "" ComboBox3.Text = "" DESCUENTOTextBox.Text = "" BASE_IMPONIBLETextBox.Text = "" IVATextBox.Text = "" TOTALTextBox.Text = "$ 0.00" VALORTextBox.Text = "" TOTAL_DESCUENTOTextBox.Text = "" SUMATextBox.Text = "" DEUDATextBox.Text = "" TextBox1.Text = "" CAMBIOTextBox.Text = "" End Sub Private Sub FACTURADataGridView_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles FACTURADataGridView.CellEndEdit Try Dim Dt_Valor1, Dt_Valor2, Dt_valor3, Dt_Resultado, IVA, total, base_impo As Double Dim suma As Double If FACTURADataGridView.Columns(e.ColumnIndex).Name = "CANTIDAD" Or FACTURADataGridView.Columns(e.ColumnIndex).Name = "PRECIO_DE_VENTA" Then Dt_Valor1 = Convert.ToDouble(FACTURADataGridView.Rows(e.RowIndex).Cells("CANTIDAD").EditedFormattedValue) Dt_Valor2 = Convert.ToDouble(FACTURADataGridView.Rows(e.RowIndex).Cells("PRECIO_DE_VENTA").EditedFormattedValue) Dt_valor3 = Convert.ToDouble(FACTURADataGridView.Rows(e.RowIndex).Cells("IVA").EditedFormattedValue) Dt_Resultado = (Dt_Valor1 * Dt_Valor2) FACTURADataGridView.Rows(e.RowIndex).Cells("TOTAL").Value = Format(Dt_Resultado, "currency") suma = Sumar("TOTAL", Me.FACTURADataGridView) SUMATextBox.Text = Format(suma, "currency") total = Val(suma) TOTALTextBox.Text = Format(total, "currency") IVA = (Val(suma) * Val(Dt_valor3)) / 100 IVATextBox.Text = Format(IVA, "currency") base_impo = Val(suma) - Val(IVA) BASE_IMPONIBLETextBox.Text = Format(base_impo, "currency") End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Function Sumar(ByVal TOTAL As String, ByVal Dgv As DataGridView) As Double Dim total1 As Double = 0 For Each row As DataGridViewRow In FACTURADataGridView.Rows total1 = total1 + (row.Cells("TOTAL").Value) Next Return total1 End Function Private Sub FACTURADataGridView_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles FACTURADataGridView.CellValueChanged Dim conexion As New SqlConnection("Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True") Try If FACTURADataGridView.Columns(e.ColumnIndex).Name = "CODIGO_PRODUCTO" Then Dim combo As DataGridViewComboBoxCell = TryCast(FACTURADataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell) Dim valorinteger As String = combo.Value.ToString conexion.Open() Dim sqlstring As String = "SELECT * FROM PRODUCTO WHERE CODIGO_PRODUCTO= @CODIGO_PRODUCTO" Dim cmd As New SqlCommand(sqlstring, conexion) cmd.Parameters.AddWithValue("CODIGO_PRODUCTO", valorinteger) Dim reader As SqlDataReader = cmd.ExecuteReader() If reader.Read Then FACTURADataGridView.Rows(e.RowIndex).Cells("DESCRIPCION_PRODUCTO").Value = reader("DESCRIPCION_PRODUCTO") FACTURADataGridView.Rows(e.RowIndex).Cells("MARCA").Value = reader("MARCA") FACTURADataGridView.Rows(e.RowIndex).Cells("PRECIO_DE_VENTA").Value = reader("PRECIO_DE_VENTA") FACTURADataGridView.Rows(e.RowIndex).Cells("IVA").Value = reader("IVA") End If conexion.Close() End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub FACTURADataGridView_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles FACTURADataGridView.CurrentCellDirtyStateChanged If FACTURADataGridView.IsCurrentCellDirty Then FACTURADataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit) End If End Sub Public Function TraerClientes() As DataTable Try Using cnn As New SqlConnection("Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True") Dim sqlbuscar As String sqlbuscar = "SELECT CODIGO_CLIENTES, APELLIDOS + ' ' + NOMBRE As NombreCompleto FROM CLIENTES" Dim cmd As New SqlCommand(sqlbuscar, cnn) Dim da As New SqlDataAdapter(cmd) Dim dt As New DataTable() da.Fill(dt) Return dt End Using Catch ex As Exception Throw End Try End Function Public Function Traerempleados() As DataTable Try Using cnn As New SqlConnection("Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True") Dim sqlbuscar As String sqlbuscar = "SELECT NOMBRE + ' ' + APELLIDOS As NombreCompleto FROM EMPLEADOS" Dim cmd As New SqlCommand(sqlbuscar, cnn) Dim da As New SqlDataAdapter(cmd) Dim dt As New DataTable() da.Fill(dt) Return dt End Using Catch ex As Exception Throw End Try End Function Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged Using conn As New SqlConnection("Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True") conn.Open() Dim sql As String = "SELECT DEUDA FROM FACTURA WHERE CODIGO_CLIENTES = @id" Dim cmd As New SqlCommand(sql, conn) cmd.Parameters.AddWithValue("@id", Convert.ToString(ComboBox1.SelectedValue)) Dim DEUDA As String = (cmd.ExecuteScalar()) If (DEUDA > 0) Then MessageBox.Show(String.Format("El cliente tiene deuda: {0}", DEUDA)) End If End Using End Sub Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged TextBox1.Text = ComboBox1.SelectedValue.ToString() End Sub Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted TextBox1.Text = CStr(ComboBox1.SelectedValue) End Sub Public Function LoadDataTable() As DataTable Dim dt As New DataTable() Dim connectionstring As String = "Data Source=ashley;Initial Catalog=OpticaBarraquel;Integrated Security=True" Dim conn As New SqlConnection(connectionstring) Dim command As New SqlCommand() command.Connection = conn command.CommandText = "SELECT APELLIDOS + ' ' + NOMBRE As NombreCompleto FROM CLIENTES" Dim da As New SqlDataAdapter(command) da.Fill(dt) Return dt End Function Public Function LoadAutoComplete() As AutoCompleteStringCollection Dim dt As DataTable = LoadDataTable() Dim stringCol As New AutoCompleteStringCollection() For Each row As DataRow In dt.Rows stringCol.Add(Convert.ToString(row("NombreCompleto"))) Next Return stringCol End Function Private Sub ToolStripLabel1_Click(sender As Object, e As EventArgs) Handles ToolStripLabel1.Click Dim Frm2 As New Form2() Frm2.IdCliente = Idfactura Frm2.Show() Me.Hide()

    End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click limpiar() limpiartotal() End Sub Private Sub FACTURADataGridView_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles FACTURADataGridView.EditingControlShowing If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then DirectCast(e.Control, ComboBox).DropDownStyle = ComboBoxStyle.DropDown DirectCast(e.Control, ComboBox).AutoCompleteSource = AutoCompleteSource.ListItems DirectCast(e.Control, ComboBox).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest End If End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click Try Using conexion As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True") conexion.Open() Dim sql As String = "update FACTURA set CODIGO_FACTURA=@CODIGO_FACTURA,CODIGO_CLIENTES=@CODIGO_CLIENTES,NOMBRE_COMPLETO=@NOMBRE_COMPLETO,FECHA=@FECHA,EMPLEADO=@EMPLEADO,FORMA_DE_PAGO=@FORMA_DE_PAGO,TOTAL_DESCUENTO=@TOTAL_DESCUENTO,SUMA=@SUMA,DESCUENTO=@DESCUENTO,IVA=@IVA,BASE_IMPONIBLE=@BASE_IMPONIBLE,TOTAL=@TOTAL,VALOR=@VALOR,DEUDA=@DEUDA where CODIGO_FACTURA=@CODIGO_FACTURA" Using cmd As New SqlCommand(sql, conexion) cmd.Parameters.AddWithValue("@CODIGO_CLIENTES", TextBox1.Text) cmd.Parameters.AddWithValue("@CODIGO_FACTURA", CODIGO_FACTURATextBox.Text) cmd.Parameters.AddWithValue("@NOMBRE_COMPLETO", ComboBox1.Text) cmd.Parameters.AddWithValue("@FECHA", FECHADateTimePicker.Text) cmd.Parameters.AddWithValue("@EMPLEADO", EMPLEADOComboBox.Text) cmd.Parameters.AddWithValue("@FORMA_DE_PAGO", ComboBox3.Text) cmd.Parameters.AddWithValue("@TOTAL_DESCUENTO", TOTAL_DESCUENTOTextBox.Text) cmd.Parameters.AddWithValue("@SUMA", SUMATextBox.Text) cmd.Parameters.AddWithValue("@DESCUENTO", DESCUENTOTextBox.Text) cmd.Parameters.AddWithValue("@IVA", IVATextBox.Text) cmd.Parameters.AddWithValue("@BASE_IMPONIBLE", BASE_IMPONIBLETextBox.Text) cmd.Parameters.AddWithValue("@TOTAL", TOTALTextBox.Text) cmd.Parameters.AddWithValue("@VALOR", VALORTextBox.Text) cmd.Parameters.AddWithValue("@DEUDA", DEUDATextBox.Text) cmd.ExecuteNonQuery() End Using borrardetalles() Dim sqlgrid As String = "insert into DETALLE_FACTURA(CODIGO_FACTURA,CODIGO_PRODUCTO,DESCRIPCION_PRODUCTO,MARCA,PRECIO_DE_VENTA,CANTIDAD,IVA,TOTAL) VALUES(@CODIGO_FACTURA,@CODIGO_PRODUCTO,@DESCRIPCION_PRODUCTO,@MARCA,@PRECIO_DE_VENTA,@CANTIDAD,@IVA,@TOTAL)" Using cmd As New SqlCommand(sqlgrid, conexion) Me.FACTURADataGridView.AllowUserToAddRows = False For Each row As DataGridViewRow In FACTURADataGridView.Rows cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@CODIGO_FACTURA", CODIGO_FACTURATextBox.Text) cmd.Parameters.AddWithValue("@CODIGO_PRODUCTO", (row.Cells("CODIGO_PRODUCTO").Value)) cmd.Parameters.AddWithValue("@DESCRIPCION_PRODUCTO", (row.Cells("DESCRIPCION_PRODUCTO").Value)) cmd.Parameters.AddWithValue("@MARCA", (row.Cells("MARCA").Value)) cmd.Parameters.AddWithValue("@PRECIO_DE_VENTA", (row.Cells("PRECIO_DE_VENTA").Value)) cmd.Parameters.AddWithValue("@CANTIDAD", (row.Cells("CANTIDAD").Value)) cmd.Parameters.AddWithValue("@IVA", (row.Cells("IVA").Value)) cmd.Parameters.AddWithValue("@TOTAL", (row.Cells("TOTAL").Value)) cmd.ExecuteNonQuery() Next End Using End Using RestarProductos() Me.FACTURADataGridView.AllowUserToAddRows = True MessageBox.Show("VENTA ACTUALIZADA CON EXITO") Catch ex As Exception MessageBox.Show(ex.Message) End Try disabled() End Sub Public Sub RestarProductos() Try conexion.Open() Dim restar As String = "update producto set stock = stock - @cantidad where CODIGO_PRODUCTO= @Codigo" Dim cmd As New SqlCommand(restar, conexion) For Each row As DataGridViewRow In FACTURADataGridView.Rows Dim Codigo As String = CStr((row.Cells("CODIGO_PRODUCTO").Value)) Dim Cantidad As Integer = CInt(row.Cells("CANTIDAD").Value) cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@Codigo", Codigo) cmd.Parameters.AddWithValue("@cantidad", Cantidad) cmd.ExecuteNonQuery() Next conexion.Close() Catch ex As Exception MsgBox(ex.Message.ToString) End Try End Sub Sub borrardetalles() Try Using conexion As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True") conexion.Open() Using cmd As New SqlCommand() cmd.Connection = conexion cmd.CommandText = "delete from DETALLE_FACTURA WHERE CODIGO_FACTURA= @idfactura" cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@idfactura", CODIGO_FACTURATextBox.Text) cmd.ExecuteNonQuery() End Using End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim IVA, total, base_impo As Double Dim suma As Double Try Me.FACTURADataGridView.Rows.Remove(Me.FACTURADataGridView.CurrentRow) suma = Sumar("TOTAL", Me.FACTURADataGridView) SUMATextBox.Text = Format(suma, "Currency") total = Val(suma) TOTALTextBox.Text = Format(total, "Currency") IVA = (Val(suma) * 12 / 100) IVATextBox.Text = Format(IVA, "Currency") base_impo = Val(suma) - Val(IVA) BASE_IMPONIBLETextBox.Text = Format(base_impo, "Currency") limpiardescuento() If Me.FACTURADataGridView.RowCount = 1 Then disabled() limpiar() limpiartotal() End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Sub limpiardescuento() TOTAL_DESCUENTOTextBox.Text = "" DESCUENTOTextBox.Text = "" VALORTextBox.Text = "" DEUDATextBox.Text = "" CAMBIOTextBox.Text = "" End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click Dim IVA1, total1, base_impo1, suma, totdescue1, descue1 As Double If CDbl(TOTAL_DESCUENTOTextBox.Text) > 0 Then suma = Sumar("TOTAL", Me.FACTURADataGridView) SUMATextBox.Text = Format(suma, "Currency") total1 = Val(TOTAL_DESCUENTOTextBox.Text) TOTALTextBox.Text = Format(total1, "Currency") descue1 = Val(suma) - Val(total1) DESCUENTOTextBox.Text = Format(descue1, "Currency") IVA1 = (Val(total1) * 12 / 100) IVATextBox.Text = Format(IVA1, "Currency") base_impo1 = Val(total1) - Val(IVA1) BASE_IMPONIBLETextBox.Text = Format(base_impo1, "Currency") totdescue1 = Val(TOTAL_DESCUENTOTextBox.Text) TOTAL_DESCUENTOTextBox.Text = Format(totdescue1, "Currency") End If End Sub Private Sub TOTAL_DESCUENTOTextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TOTAL_DESCUENTOTextBox.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Sub cobro() Try Dim tot, va, deuda, cambio As Double tot = TOTALTextBox.Text va = Val(VALORTextBox.Text) If Val(tot) > Val(va) Then deuda = tot - va DEUDATextBox.Text = Format(deuda, "Currency") CAMBIOTextBox.Text = Format(cambio, "Currency") Else cambio = va - tot CAMBIOTextBox.Text = Format(cambio, "Currency") DEUDATextBox.Text = Format(deuda, "Currency") End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub VALORTextBox_TextChanged(sender As Object, e As EventArgs) Handles VALORTextBox.TextChanged cobro() End Sub End Class

    lo que esta en negrita es para cargar el detalle y hice en el boton atras este codigo que al principio me funciono pero ahora nose que paso que no me sale:

     Private Sub ToolStripLabel1_Click(sender As Object, e As EventArgs) Handles ToolStripLabel1.Click
    
            Dim Frm2 As New Form2()
            Frm2.IdCliente = Idfactura
            Frm2.Show()
            Me.Hide()
            
    
        End Sub

    gracias saludos



    domingo, 28 de abril de 2013 17:07
  • Hola leandro ya analice el codigo con un breakpoint resulta que el problema pasa por aqui:

    Private Sub ToolStripLabel1_Click(sender As Object, e As EventArgs) Handles ToolStripLabel1.Click
    
            Dim Frm2 As New Form2()
            Frm2.IdCliente = Idfactura
            Frm2.Show()
            Me.Hide()
            
    
        End Sub

    al parecer solo me abre el form2 con los datos llenos del cliente si el idclientes es igual al idfactura osea que si tengo un clientes con este codigo 000001 y una factura con el mismo numero 000001 se llenan los datos pero si el idfactura es diferente 000002 no se llenan...

    como puedo hacer para que se llenen los campos del form2 con los datos del cliente si la idfactura es diferente...

    gracias saludos

    domingo, 28 de abril de 2013 17:41
  • pero alli veo que usas

     Frm2.IdCliente

    porque le asignas a eso un Idfactura, como que conceptualmente eso esta mal, si defines una propiedad con el nombre idcliente asigna un id cliente

    sino define una propeidad de nombre correcto, eso es muy importante cuando desarrollas que las cosas contengan lo que definen

    ------

    si solo tienes la factura deberias recuperar a que cliente pertenece con una consulta a la db y ese valor asignarlo al Form2


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 28 de abril de 2013 18:33
  • Hola Leandro me podrias dar un ayuda es que como hago la consulta para que lleno los textbox con los datos del cliente y tambien el datagrid con sus respectivas facturas.. tendre que realizar un constructor nuevamente???? o relaciono las tablas la verdad no tengo idea de como hacerlo

    gracias y saludos

    domingo, 28 de abril de 2013 18:58
  • hola

    el tema es que no me queda claro de donde determinas el id del cliente

    es mas algo me confunde de als imagenes con el codigo

    en la imagen el Form2 tiene lsod atos del cliente y un grid de facturacion, pero el ToolStripLabel1_Click de donde sale ?

    alli no veo ningun menu, es mas haces referencia al click del datagridview

    si el form2 muestra cliente porque estas instanciando el form2 nuevamente ?


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 28 de abril de 2013 19:11
  • Hola el ToolStripLabel1_Click es para regresar del form de la factura con sus detalles al form2:

    y los he instanciado el form2 porq crei que deberia hacerlo de esa forma.

    y lo del id del cliente lo hago en el form2 que es donde tengo los textbox donde veo los datos del cliente:

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            
    
            If (IdCliente <> String.Empty) Then
    
                TraerCliente(IdCliente)
            End If
    
        End Sub
    
    
        Public Property IdCliente As String
    
        
        Public Sub TraerCliente(ByVal IdCliente As String)
            Try
                Using cnx As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True")
    
                    cnx.Open()
    
                    Dim SqlAction As String = "SELECT CODIGO_CLIENTES,CI_DEL_CLIENTE,FECHA,NOMBRE,APELLIDOS,DIRECCION,EDAD,PROFESION,SEXO,TELEFONO,CELULAR,CORREO_ELECTRONICO,OD_ESFERA,OD_CILINDRO,OD_EJE,OD_PRISMA,OD_ADICCION,OI_ESFERA,OI_CILINDRO,OI_EJE,OI_PRISMA,OI_ADICCION,DP,ALT,OBSERVACION_CLIENTE FROM Clientes WHERE CODIGO_CLIENTES= @Idcliente"
                    Dim cmd As New SqlCommand(SqlAction, cnx)
    
                    cmd.Parameters.AddWithValue("@Idcliente", CStr(IdCliente))
    
                    Dim dr As SqlDataReader = cmd.ExecuteReader()
    
                    If (dr.Read()) Then
                        CODIGO_CLIENTESTextBox.Text = dr.Item("CODIGO_CLIENTES").ToString
                        NOMBRETextBox.Text = dr.Item("NOMBRE").ToString
                        APELLIDOSTextBox.Text = dr.Item("APELLIDOS").ToString
                        CI_DEL_CLIENTEMaskedTextBox.Text = dr.Item("CI_DEL_CLIENTE").ToString
                        FECHADateTimePicker.Value = CDate(dr.Item("Fecha"))
                        DIRECCIONTextBox.Text = dr.Item("DIRECCION").ToString
                        TELEFONOMaskedTextBox.Text = dr.Item("TELEFONO").ToString
                        CELULARMaskedTextBox.Text = dr.Item("CELULAR").ToString
                        PROFESIONTextBox.Text = dr.Item("PROFESION").ToString
                        EDADTextBox.Text = dr.Item("EDAD").ToString
                        SEXOComboBox.Text = dr.Item("SEXO").ToString
                        CORREO_ELECTRONICOTextBox.Text = dr.Item("CORREO_ELECTRONICO").ToString
                        OD_ESFERATextBox.Text = dr.Item("OD_ESFERA").ToString
                        OD_CILINDROTextBox.Text = dr.Item("OD_CILINDRO").ToString
                        OD_EJETextBox.Text = dr.Item("OD_EJE").ToString
                        OD_PRISMATextBox.Text = dr.Item("OD_PRISMA").ToString
                        OD_ADICCIONTextBox.Text = dr.Item("OD_ADICCION").ToString
                        OI_ESFERATextBox.Text = dr.Item("OI_ESFERA").ToString
                        OI_CILINDROTextBox.Text = dr.Item("OI_CILINDRO").ToString
                        OI_EJETextBox.Text = dr.Item("OI_EJE").ToString
                        OI_PRISMATextBox.Text = dr.Item("OI_PRISMA").ToString
                        OI_ADICCIONTextBox.Text = dr.Item("OI_ADICCION").ToString
                        DPTextBox.Text = dr.Item("DP").ToString
                        ALTTextBox.Text = dr.Item("ALT").ToString
                        OBSERVACION_CLIENTETextBox.Text = dr.Item("OBSERVACION_CLIENTE").ToString
                    End If
                End Using
    
            Catch ex As Exception
                MessageBox.Show(String.Format("Error : {0}", ex.Message, "Ocurrio un error inesperado", MessageBoxButtons.OK, MessageBoxIcon.Error))
            End Try
    
    
        End Sub

    disculpa es que ya he comentado que no se casi nada de programacion... siento mucho el hecho de no poder entender como hago la operaciones...

    creo que ya he comentado en mas de una ocacion la razon por la cual estoy haciendo este proyecto....

    disculpa si estoy causando molestias solo quiero terminarlo para no molestar mas....


    domingo, 28 de abril de 2013 19:43
  • pero entonces no tienes que crear una nueva instancoa del form2, solo tienes que mostrar la que ya tenias

    si usas un new para crrar una variable del tipo Form2 ese es un nuevo form que estas generando

    lo que me pregunto cuando seelccionas en el form2 para abrir este form de detalle donde y como lo haces ? estas usando Me.Hide()

    porque si es asi solo deberias controlar el evento FormClosing desde el form2 para detectar el cierre y volver a mostra el form oculto


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 28 de abril de 2013 22:45