Visual Basic.NET - Guardar y actualizar registros con el mismo boton

 
Vista:
Imágen de perfil de Jesus Rene

Guardar y actualizar registros con el mismo boton

Publicado por Jesus Rene (4 intervenciones) el 02/03/2016 10:24:04
Estoy usando este codigo para guardar y actualizar registros a la base de datos con un solo boton.
Mi duda esta en 'comprobamos si existe el codigo no se como optener el id_proveedor
para usarlo en la sentencia update proveedores SET ..... WHERE id_proveedor = '& id_proveedor &'
en su lugar tengo puesto el codigo y me funciona a medias ya que si cambio el codigo este no se actualiza si no que crea un nuevo registro :C
De antemano les doy las gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
        Try
            If txtCodigo.Text = "" Then
                'Verificamos que haya un codigo
                MsgBox("Proporcione un codigo")
                txtCodigo.Focus()
            ElseIf txtNombre.Text = "" Then
                'Verificamos que haya un nombre
                MsgBox("Proporcione un Nombre")
                txtNombre.Focus()
                'comensamos con todo el menjurge para guardar
            Else
                'comprobamos si existe el codigo
                Dim mDt As DataTable
                Dim mDa As New MySqlDataAdapter
                Dim Cmd As New MySqlCommand
                With Cmd
                    .CommandType = CommandType.Text
                    .CommandText = "Select * From proveedores WHERE id_empresa=?id_empresa AND codigo=?codigo"
                    .Parameters.AddWithValue("?id_empresa", id_emp)
                    .Parameters.AddWithValue("?codigo", Me.txtCodigo.Text)
                    .Connection = con
                    .Connection.Close()
                End With
                mDa.SelectCommand = Cmd
                mDt = New DataTable
                mDa.Fill(mDt)
                If mDt.Rows.Count <= 0 Then
                    'si no se guarda como nuevo :D
                    Dim Cmdg As New MySqlCommand
                    With Cmdg
                        .CommandType = CommandType.Text
                        .CommandText = "insert into proveedores VALUES(?id_proveedor,?id_empresa,?codigo,?nombre,?direccion,?colonia,?codigo_postal,?ciudad,?estado,?pais,?telefono1,?telefono2,?telefono3,?rfc,?email,?limitecredito,?plazopago,?nombrec1,?puestoc1,?telefonoc1,?extc1,?nombrec2,?puestoc2,?telefonoc2,?extc2,?nombrec3,?puestoc3,?telefonoc3,?extc3,?estatus)"
                        .Parameters.AddWithValue("?id_proveedor", "0")
                        .Parameters.AddWithValue("?id_empresa", id_emp)
                        .Parameters.AddWithValue("?codigo", Me.txtCodigo.Text)
                        .Parameters.AddWithValue("?nombre", Me.txtNombre.Text)
                        .Parameters.AddWithValue("?direccion", Me.txtDireccion.Text)
                        .Parameters.AddWithValue("?colonia", Me.txtColonia.Text)
                        .Parameters.AddWithValue("?codigo_postal", Me.txtCodigoPostal.Text)
                        .Parameters.AddWithValue("?ciudad", Me.cbCiudad.SelectedValue)
                        .Parameters.AddWithValue("?estado", Me.cbEstado.SelectedValue)
                        .Parameters.AddWithValue("?pais", Me.cbPais.SelectedValue)
                        .Parameters.AddWithValue("?telefono1", Me.txtTelefono1.Text)
                        .Parameters.AddWithValue("?telefono2", Me.txtTelefono2.Text)
                        .Parameters.AddWithValue("?telefono3", Me.txtTelefono3.Text)
                        .Parameters.AddWithValue("?rfc", Me.txtRFC.Text)
                        .Parameters.AddWithValue("?email", Me.txtEmail.Text)
                        .Parameters.AddWithValue("?limitecredito", Me.txtLimiteCredito.Text)
                        .Parameters.AddWithValue("?plazopago", Me.txtPlazoPago.Text)
                        .Parameters.AddWithValue("?nombrec1", Me.txtNombrec1.Text)
                        .Parameters.AddWithValue("?puestoc1", Me.txtPuestoc1.Text)
                        .Parameters.AddWithValue("?telefonoc1", Me.txtTelefonoc1.Text)
                        .Parameters.AddWithValue("?extc1", Me.txtExtc1.Text)
                        .Parameters.AddWithValue("?nombrec2", Me.txtNombrec2.Text)
                        .Parameters.AddWithValue("?puestoc2", Me.txtPuestoc2.Text)
                        .Parameters.AddWithValue("?telefonoc2", Me.txtTelefonoc2.Text)
                        .Parameters.AddWithValue("?extc2", Me.txtExtc2.Text)
                        .Parameters.AddWithValue("?nombrec3", Me.txtNombrec3.Text)
                        .Parameters.AddWithValue("?puestoc3", Me.txtPuestoc3.Text)
                        .Parameters.AddWithValue("?telefonoc3", Me.txtTelefonoc3.Text)
                        .Parameters.AddWithValue("?extc3", Me.txtExtc3.Text)
                        .Parameters.AddWithValue("?estatus", "1")
                        .Connection = con
                        .Connection.Open()
                        .ExecuteNonQuery()
                        .Connection.Close()
                        .Connection.Dispose()
                    End With
                    MsgBox("Guardado con exito")
                    For Each c As Control In gbDatContEmpProveedor.Controls
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbDatContProveedor1.Controls
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbDatContProveedor2.Controls()
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbDatContProveedor3.Controls()
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbDatGrlsProveedor.Controls()
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbLimiteCredito.Controls()
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbSaldosCredito.Controls()
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    For Each c As Control In gbUltimos.Controls()
                        If TypeOf c Is TextBox Then
                            c.Text = "" ' eliminar el texto
                        End If
                    Next
                    txtCodigo.Focus()
                Else
                    'si existe se actualiza
                    'Si hay id se pregunta si desea actualizar la informacion
                    If (MsgBox("El Registro Existe Desea Actulizar?", MsgBoxStyle.YesNo, "Guardando...")) = MsgBoxResult.Yes Then
                        'Si Responde que si Actualizamos
                        Dim Cmdu As New MySqlCommand
                        With Cmdu
                            .CommandType = CommandType.Text
                            .CommandText = "UPDATE proveedores SET codigo = ?codigo, nombre = ?nombre, direccion = ?direccion, colonia = ?colonia, codigo_postal = ?codigo_postal, ciudad = ?ciudad, estado = ?estado, pais = ?pais, telefono1 = ?telefono1, telefono2 = ?telefono2, telefono3 = ?telefono3, rfc = ?rfc, email = ?email, limitecredito = ?limitecredito, plazopago = ?plazopago, nombrec1 = ?nombrec1, puestoc1 = ?puestoc1, telefonoc1 = ?telefonoc1, extc1 = ?extc1, nombrec2 = ?nombrec2, puestoc2 = ?puestoc2, telefonoc2 = ?telefonoc2, extc2 = ?extc2, nombrec3 = ?nombrec3, puestoc3 = ?puestoc3, telefonoc3 = ?telefonoc3, extc3 = ?extc3, estatus = ?estatus WHERE codigo='" & txtCodigo.Text & "'"
                            .Parameters.AddWithValue("?codigo", Me.txtCodigo.Text)
                            .Parameters.AddWithValue("?nombre", Me.txtNombre.Text)
                            .Parameters.AddWithValue("?direccion", Me.txtDireccion.Text)
                            .Parameters.AddWithValue("?colonia", Me.txtColonia.Text)
                            .Parameters.AddWithValue("?codigo_postal", Me.txtCodigoPostal.Text)
                            .Parameters.AddWithValue("?ciudad", Me.cbCiudad.SelectedValue)
                            .Parameters.AddWithValue("?estado", Me.cbEstado.SelectedValue)
                            .Parameters.AddWithValue("?pais", Me.cbPais.SelectedValue)
                            .Parameters.AddWithValue("?telefono1", Me.txtTelefono1.Text)
                            .Parameters.AddWithValue("?telefono2", Me.txtTelefono2.Text)
                            .Parameters.AddWithValue("?telefono3", Me.txtTelefono3.Text)
                            .Parameters.AddWithValue("?rfc", Me.txtRFC.Text)
                            .Parameters.AddWithValue("?email", Me.txtEmail.Text)
                            .Parameters.AddWithValue("?limitecredito", Me.txtLimiteCredito.Text)
                            .Parameters.AddWithValue("?plazopago", Me.txtPlazoPago.Text)
                            .Parameters.AddWithValue("?nombrec1", Me.txtNombrec1.Text)
                            .Parameters.AddWithValue("?puestoc1", Me.txtPuestoc1.Text)
                            .Parameters.AddWithValue("?telefonoc1", Me.txtTelefonoc1.Text)
                            .Parameters.AddWithValue("?extc1", Me.txtExtc1.Text)
                            .Parameters.AddWithValue("?nombrec2", Me.txtNombrec2.Text)
                            .Parameters.AddWithValue("?puestoc2", Me.txtPuestoc2.Text)
                            .Parameters.AddWithValue("?telefonoc2", Me.txtTelefonoc2.Text)
                            .Parameters.AddWithValue("?extc2", Me.txtExtc2.Text)
                            .Parameters.AddWithValue("?nombrec3", Me.txtNombrec3.Text)
                            .Parameters.AddWithValue("?puestoc3", Me.txtPuestoc3.Text)
                            .Parameters.AddWithValue("?telefonoc3", Me.txtTelefonoc3.Text)
                            .Parameters.AddWithValue("?extc3", Me.txtExtc3.Text)
                            .Parameters.AddWithValue("?estatus", "1")
                            .Connection = con
                            .Connection.Open()
                            .ExecuteNonQuery()
                            .Connection.Close()
                            .Connection.Dispose()
                        End With
                        MsgBox("Registro Actualizado")
                        Me.Refresh()
                        For Each c As Control In gbDatContEmpProveedor.Controls
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbDatContProveedor1.Controls
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbDatContProveedor2.Controls()
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbDatContProveedor3.Controls()
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbDatGrlsProveedor.Controls()
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbLimiteCredito.Controls()
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbSaldosCredito.Controls()
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        For Each c As Control In gbUltimos.Controls()
                            If TypeOf c Is TextBox Then
                                c.Text = "" ' eliminar el texto
                            End If
                        Next
                        txtCodigo.Focus()
                        'Si no Pues no XD
                    End If
                End If
            End If
        Catch ex As Exception
            MsgBox("Excepción en tiempo de ejecución: " & ex.Message) 'Ocurrió un error durante se procesaba.
            con.Close()
        End Try
    End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Guardar y actualizar registros con el mismo boton

Publicado por Richard Rodriguez (2 intervenciones) el 16/03/2016 21:03:01
Estimado Jesús, te comento como hago yo el proceso de insertar y/o actualizar (insert/update).
Antes que nada utilizo un solo botón que lo llamo "Grabar" para insertar y/o actualizar algún registro, además de eso uso un botón "Nuevo" y otro "Modificar" para habilitar los textbox y demás controles que estime necesario y ambos botones hacen lo mismo pero la única diferencia es que cuando hago click en el botón Nuevo, asigno el valor "N" a la variable "Proceso" osea queda así: Proceso="N" y si hago click en el botón Modificar kedaria así Proceso="M" y con esto ya se que proceso es el que va a ejecutar el botón Grabar.
Entonces en el botón Grabar la instrucción seria:

1
2
3
4
5
If Proceso="N" then
    Insert into tabla. ..........
Else
    Update set tabla......
Endif

Alguna duda me escribes correo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar