Hola, tengo una BD en Access que estoy actualizando desde un form, todos los datos se actualizan menos los que contienen, el estado, ciudad y pais, son combobox que lleno mediante consulta a las tablas de la BD en Access.
Tengo este código:
Agradezco la ayuda.
---------------------------------------------------------------
Private Sub AgregarCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
' trata de abrir la conexión
conex.Open()
' Inicializo el objeto Command
comando.Connection = conex
comando.CommandType = CommandType.Text
'consulta para traer el último registro del ID_Cliente
sql1 = "SELECT* FROM Clientes WHERE ID_Cliente = (SELECT MAX(ID_Cliente)From Clientes)"
comando.CommandText = sql1
readr1 = comando.ExecuteReader() ' llamamos a la función reader
If readr1.HasRows Then ' si al leer en la columna ID_Cliente hay filas
Do While readr1.Read() ' lee hasta el último registro
tbid.Text = readr1("ID_Cliente") 'si encontró algo en ID_Cliente lo deposita en el textbox
tbnombrecliente.Text = readr1("Nombre") 'si encontró algo en Nombre lo deposita en el textbox
Loop
End If
readr1.Close() ' se cierra el reader
agregarpaises()
agregartipodepago()
Catch ex As Exception
If Err.Number = 5 Then
MsgBox("No se pudo encontrar el archivo de la base de datos", MsgBoxStyle.Exclamation, "Carga de aplicación")
End
Else
MsgBox(Err.Description, MsgBoxStyle.Exclamation, "Carga de aplicación; AgregarCliente")
End If
End Try
End Sub
-----------------------------------------------------------------
Private Sub agregarpaises()
comando.CommandType = CommandType.Text
'consulta para agregar los países al combobox país
sql1 = "SELECT Nombrepais FROM Tablapais"
comando.CommandText = sql1
readr1 = comando.ExecuteReader() ' llamamos a la función reader
If readr1.HasRows Then 'si hay filas lee
Do While readr1.Read() ' lee hasta el último registro
cbpais.Items.Add(readr1(0).ToString) 'si encontró algo en Nombrepais lo deposita en el combobox
Loop
End If
readr1.Close() ' se cierra el reader
End Sub
---------------------------------------------------------------------
Private Sub cbpais_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbpais.SelectedIndexChanged
'se ejecuta al seleccionar un país
Try
cbestado.Items.Clear() ' limpiamos el comboboxestado
comando.CommandType = CommandType.Text
'creamos la consulta
sql1 = "SELECT NombreEstado FROM Tablaestado where ID_Pais =@ID_Pais"
comando.CommandText = sql1
'dando valor a los parámetros
comando.Parameters.AddWithValue("@ID_Pais", cbpais.Text)
readr1 = comando.ExecuteReader() ' llamamos a la función reader
If readr1.HasRows Then ' si hay algo en las filas
Do While readr1.Read() ' lee hasta el último registro
cbestado.Items.Add(readr1(0).ToString) 'si encontró algo en Nombrepais lo deposita en el combobox
Loop
End If
readr1.Close() ' se cierra el reader
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
------------------------------------------------------------------------------------
Private Sub cbestado_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbestado.SelectedIndexChanged
' se ejecuta al seleccionar un estado
Try
cbciudad.Items.Clear() ' limpiamos el comboboxciudad
comando.CommandType = CommandType.Text
' creando la consulta
sql2 = "SELECT NombreCiudad FROM Tablaciudad where ID_Estado = '" & cbestado.Text & "'"
comando.CommandText = sql2
readr1 = comando.ExecuteReader() ' llamamos a la función reader
If readr1.HasRows Then ' si hay algo en las filas
Do While readr1.Read() ' lee hasta el último registro
cbciudad.Items.Add(readr1(0).ToString) 'si encontró algo en NombreCiudad lo deposita en el combobox
Loop
End If
readr1.Close() ' se cierra el reader
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
-----------------------------------------------------------------------------------------
Private Sub btninsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btninsertar.Click
' al dar clic en insertar
sql3 = "UPDATE Clientes SET " & _
"DIRECCION=@Direccion," & _
"TELEFONO =@Telefono," & _
"CIUDAD =@Ciudad," & _
"ESTADO =@Estado," & _
"PAIS =@Pais," & _
"CP =@CP," & _
"RFC =@RFC," & _
"TIPO_DE_PAGO =@TIPODEPAGO," & _
"NOMBRE_DE_CONTACTO =@NOMBREDECONTACTO," & _
"PUESTO_DE_CONTACTO =@PUESTODECONTACTO," & _
"TELEFONO_DE_CONTACTO =@TELEFONODECONTACTO," & _
"EMAIL_DE_CONTACTO =@EMAILDECONTACTO," & _
"NOTAS =@NOTAS " & _
"WHERE ID_Cliente =@ID_Cliente"
MsgBox(sql3)
' Asigno la instrucción consulta que se va a ejecutar
comando.CommandText = sql3
comando.Parameters.AddWithValue("@Direccion", tbdireccion.Text)
comando.Parameters.AddWithValue("@Telefono", tbtelefono.Text)
comando.Parameters.AddWithValue("@Ciudad", cbciudad.Text)
comando.Parameters.AddWithValue("@Estado", cbestado.Text)
comando.Parameters.AddWithValue("@Pais", cbpais.Text)
comando.Parameters.AddWithValue("@CP", tbcp.Text)
comando.Parameters.AddWithValue("@RFC", tbrfc.Text)
comando.Parameters.AddWithValue("@TIPODEPAGO", cbtipodepago.Text)
comando.Parameters.AddWithValue("@NOMBREDECONTACTO ", tbnomcto.Text)
comando.Parameters.AddWithValue("@PUESTODECONTACTO ", tbpuesto.Text)
comando.Parameters.AddWithValue("@TELEFONODECONTAC TO", tbtelefono2.Text)
comando.Parameters.AddWithValue("@EMAILDECONTACTO" , tbemail.Text)
comando.Parameters.AddWithValue("@NOTAS", tbnotassobrecontacto.Text)
comando.Parameters.AddWithValue("@ID_Cliente", CInt(tbid.Text))
Try
comando.ExecuteNonQuery()
MsgBox("Actualización exitosa", MsgBoxStyle.Information, "Actualizar resgistro")
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Exclamation, "Actualizar registro")
End Try
End Sub
----------------------------------------------------------------------------------