Combobox

Buenas noches experto, nuevamente acudo a usted por su concejo, mi problema ahora es con un combobox, ojo no es un datacombo ya que no lo tengo enlazado a ninguna tabla, solo cargue los valores que debe tener a través de la propiedad additem; en el agregue unos items para seleccionar y luego guardarlos en una base de datos, el proceso de actualización se realiza pero cuando reviso la tabla que debe afectar no muestra el valor que seleccione en el combobox más si todo lo demás, ¿cómo puedo hacer para que el texto que seleccione en el combobox se inserte en la base de datos?
Este es el código que utilice:
Private Sub cmdguardar_Click()
If txtCedula.Text = "" Then MsgBox "El Campo Cedula no Puede estar Vacio", vbInformation, "Aviso": txtCedula.SetFocus: Exit Sub
If txtLugar.Text = "" Then MsgBox "El Campo Lugar de Expedicion no Puede estar Vacio", vbInformation, "Aviso": txtLugar.SetFocus: Exit Sub
If txtNombres.Text = "" Then MsgBox "El Campo Nombres no Puede estar Vacio", vbInformation, "Aviso": txtNombres.SetFocus: Exit Sub
If txtApellidos.Text = "" Then MsgBox "El Campo Apellidos no Puede estar Vacio", vbInformation, "Aviso": txtApellidos.SetFocus: Exit Sub
If txtFecha.Text = "" Then MsgBox "El Campo Fecha de Nacimiento no Puede estar Vacio", vbInformation, "Aviso": txtFecha.SetFocus: Exit Sub
If Modificar = False Then
    With RSEmpleados
        .AddNew
              !Cedula = NuevoEmpleadoForm.txtCedula.Text
              !Lugar_Expedicion = NuevoEmpleadoForm.txtLugar.Text
              !Nombres = NuevoEmpleadoForm.txtNombres.Text
              !Apellidos = NuevoEmpleadoForm.txtApellidos.Text
              !Fecha_Nacimiento = NuevoEmpleadoForm.txtFecha.Text
              !Fecha_Ingreso = NuevoEmpleadoForm.txtIngreso.Text
                If IsNull(NuevoEmpleadoForm.txtRetiro) Then
                   !Fecha_Retiro = NuevoEmpleadoForm.txtRetiro.Text
              !sexo = NuevoEmpleadoForm.sexo.Text "este es el combo"
                End If
        .Update
        Limpiar
    End With
Else
   With RSEmpleados
        .Find "IdEmpleados='" & Val(NuevoEmpleadoForm.lblcodigo.Caption) & "'"
              !Cedula = NuevoEmpleadoForm.txtCedula.Text
              !Lugar_Expedicion = NuevoEmpleadoForm.txtLugar.Text
              !Nombres = NuevoEmpleadoForm.txtNombres.Text
              !Apellidos = NuevoEmpleadoForm.txtApellidos.Text
              !Fecha_Nacimiento = NuevoEmpleadoForm.txtFecha.Text
              !Fecha_Ingreso = NuevoEmpleadoForm.txtIngreso.Text
                If IsNull(NuevoEmpleadoForm.txtRetiro) Then
                   !Fecha_Retiro = NuevoEmpleadoForm.txtRetiro.Text
              !sexo = NuevoEmpleadoForm.sexo.Text "este es el combo"
                End If
        .UpdateBatch
   End With
End If
Habilitarcajas True
Habilitarbotones True, False
End Sub
Espero su ayuda y de antemano gracias.

1 Respuesta

Respuesta
1
en ves de estar utilizando eso, por que no mejor utilizas insert into?
Quedaría así:
RSEmpleados.open "insert into empleados (cedula,lugar_expedicion,nombres,apellidos,fecha_nacimiento,fecha_ingreso,sexo) values ("& txtcedula.text & "," & txtlugar.text & ",' " & txtnombres.text & " ',' " & txtapellidos.text..........  ", Cn, adOpenKeyset, adLockOptimistic
tu lo completas y lo pruebas esto debe estar dentro de
If modificar = false then
Estoy conectado a msn si necesitas más ayuda
Es buena tu idea, el problema es que se me dificulta un poco el manejar este tipo de código cuando son números, por favor mejor oriéntame sobre como puedo solucionar mi problema de esta forma.
De ante mano gracias por tu ayuda.
Lo que pasa amigo mio que el trabajar de la manera que tu estas trabajando por lo menos para mi no es la más efectiva, es como la describí, para seguir explicando y lo entiendas, La sintaxis para insertar datos en una tabla mediante una fila por vez es la siguiente:
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...)
VALUES ("valor1", "valor2", ...)
Ahora para los valores numéricos se ingresan sin ' ' cremillas simples, para los valores alfanuméricos o cadena de caracteres estos si van con cremillas simples, en visual basic se puede hacer concatenando los valores, a mi forma de pensar y de trabajar con esto es lo mejor que pude haber aprendido, por que en un principio también trabaje de esa manera pero nunca me daba los resultados que buscaba, por eso mismo te recomiendo que lo hagas, en serio yo te puedo ayudar a generar la cadena no tengo ningún problema solo hace falta que me mandes un mensaje y me digas estoy conectado.
Listo haremos lo que me indicas, dame un tiempo mientras organizo la cadena de esta forma, cualquier cosa me conectare al msn por las horas de la noche.
Gracias por su tiempo...
Ok me avisas cuando, de hecho estoy todos los días conectado ahora, desde mi empresa y desde mi casa así que si podemos hacer algo durante el día o la noche lo hacemos cuidate saludos
Buenas noches, disculpe por la demora pero es que tuve algunos problemas con internet, le comento que hice lo que me sugirió y me resulto el siguiente problema que no he podido solucionar, el mensaje de error es el siguiente: error (-2147217400) error de sintaxis falta operador en la expresión de consulta.
Este es el código que utilice:
Private Sub cmdguardar_Click()
Dim Qry As String
If txtCedula.Text = "" Then MsgBox "El Campo Cedula no Puede estar Vacio", vbInformation, "Aviso": txtCedula.SetFocus: Exit Sub
If txtLugar.Text = "" Then MsgBox "El Campo Lugar de Expedicion no Puede estar Vacio", vbInformation, "Aviso": txtLugar.SetFocus: Exit Sub
If txtNombres.Text = "" Then MsgBox "El Campo Nombres no Puede estar Vacio", vbInformation, "Aviso": txtNombres.SetFocus: Exit Sub
If txtApellidos.Text = "" Then MsgBox "El Campo Apellidos no Puede estar Vacio", vbInformation, "Aviso": txtApellidos.SetFocus: Exit Sub
If txtFecha.Text = "" Then MsgBox "El Campo Fecha de Nacimiento no Puede estar Vacio", vbInformation, "Aviso": txtFecha.SetFocus: Exit Sub
If Modificar = False Then
    With RSEmpleados
         Qry = "INSERT INTO Empleados " & "(Cedula,Lugar_Expedicion,Nombres,Apellidos,Fecha_Nacimiento,Fecha_Ingreso,Fecha_Retiro,sexo) VALUES('" & _
                                 Qry = Qry & txtNombres & "','" & _
                                 Qry = Qry & txtCedula & "'" & _
                                 Qry = Qry & txtLugar & "','" & _
                                 Qry = Qry & txtApellidos & "','" & _
                                 Qry = Qry & ",#" & txtFecha & "#,#" & _
                                 Qry = Qry & ",#" & txtIngreso & "#,#" & _
                                 Qry = Qry & ",#" & txtRetiro & "#,#" & _
                                 Qry = Qry & sexo.ListIndex & "','" & _
                                 Qry & Format(Date, "dd/mm/yyyy") & "')"
                                 Base.Execute Qry
    End With
Else
    With RSEmpleados
        Base.Execute "UPDATE Empleados Set Cedula = '" & txtCedula & "'" & _
                                         "', Lugar_Expedicion = '" & txtLugar & "'" & _
                                         "', Nombres = '" & txtNombres & "'" & _
                                         "', Apellidos = '" & txtApellidos & "'" & _
                                         "', Fecha_Nacimiento = #" & txtFecha & "#" & _
                                         "', Fecha_Ingreso = '" & txtIngreso & "'" & _
                                         "', Fecha_Retiro = #" & txtRetiro & "#" & _
                                         "', Sexo = '" & sexo.ListIndex & _
                                         " where IdEmpleados = '" & lblcodigo & "'"
   End With
End If
Habilitarcajas True
Habilitarbotones True, False
End Sub
Por favor oriénteme sobre como puedo solucionar este hinchón inconviente, estaré atento a su respuesta.
Gracias...
Private Sub cmdguardar_Click()
Dim QryInsert As String, QryUpdate As String
If txtCedula.Text = "" Then
MsgBox "El Campo Cedula no Puede estar Vacio", vbInformation, "Aviso": txtCedula.SetFocus: Exit Sub
If txtLugar.Text = "" Then
MsgBox "El Campo Lugar de Expedicion no Puede estar Vacio", vbInformation, "Aviso": txtLugar.SetFocus: Exit Sub
If txtnombres.Text = "" Then
MsgBox "El Campo Nombres no Puede estar Vacio", vbInformation, "Aviso": txtnombres.SetFocus: Exit Sub
If txtapellidos.Text = "" Then
MsgBox "El Campo Apellidos no Puede estar Vacio", vbInformation, "Aviso": txtapellidos.SetFocus: Exit Sub
If txtfecha.Text = "" Then
MsgBox "El Campo Fecha de Nacimiento no Puede estar Vacio", vbInformation, "Aviso": txtfecha.SetFocus: Exit Sub
If Modificar = False Then
    ' Aquí formulamos la instancia INSERT INTO y la igualamos a la variable QryInsert.
    QryInsert = "INSERT INTO Empleados (Cedula,Lugar_Expedicion,Nombres,Apellidos,Fecha_Nacimiento,Fecha_Ingreso,Fecha_Retiro,sexo) " & _
          "VALUES" & _
          " ('" & txtcelula.Text & "','" & _
          " '" & txtLugar.Text & "','" & _
          " '" & txtnombres.Text & "','" & _
          " '" & txtapellidos.Text & "','" & _
          " '" & txtfecha.Text & "','" & _
          " '" & txtingreso.Text & "','" & _
          " '" & txtretiro.Text & "','" & _
          " '" & sexo.Text & "')" 'doy por hecho que este es un combobox
    ' Luego como ya tenemos la variable Qry con los datos ingresados desde nuestro formulario,
' lo que tenemos que hacer es generar la consulta completa.
    ' Aquí lo que hacemos es abrir nuestro Recordset le asignamos la instancia que queremos que ejecute y
' le damos los parámetros como la conexión y la forma de lectura del mismo.
    ' * NOTA1: Cn es la conexion que tienes asignada *
    ' * NOTA2: La instancia INSERT INTO debes escribirla en el mismo orden, me explico,
    '          si tienes lo siguiente: INSERT INTO (Campo1,Campo2,Campo3,...) VALUES (Valor1,Valor2,Valor3,...)
    '          no puedes tener INSERT INTO (Campo1,Campo2,Campo3,...) VALUES (Valor3,Valor2,Valor1,...)
    ' Debes ser ordenado según los campos que estés ingresando en tu tabla, así es como debes ingresar los datos.
    '** si no lo tienes asi en la declaracion de variables debes setear siempre el recordset **
    ' Le quitas la cremilla a la linea de abajo.
    'Set RSEmpleados = New ADODB.Recordset
    RSEmpleados.Open QryInsert, Cn, adOpenKeyset, adLockOptimistic
Else
    ' Aquí hacemos lo mismo que en la instancia INSERT INTO, solo que aquí actualizaremos la información.
    QryUpdate = "UPDATE Empleados Set Cedula = '" & txtCedula.Text & "','" & _
                                      "Lugar_Expedicion = '" & txtLugar.Text & "','" & _
                                      "Nombres = '" & txtnombres.Text & "','" & _
                                      "Apellidos = '" & txtapellidos.Text & "','" & _
                                      "Fecha_Nacimiento = '" & txtfecha.Text & "','" & _
                                      "Fecha_Ingreso = '" & txtingreso.Text & "','" & _
                                      "Fecha_Retiro = #" & txtretiro.Text & "','" & _
                                      "Sexo = '" & sexo.Text & "'" & _
                                      " where IdEmpleados = '" & lblcodigo.Caption & "'"
    '** si no lo tienes asi en la declaracion de variables debes setear siempre el recordset **
    ' Le quitas la cremilla a la linea de abajo.
    'Set RSEmpleados = New ADODB.Recordset
    RSEmpleados.Open QryUpdate, Cn, adOpenKeyset, adLockOptimistic
End If
Habilitarcajas True
Habilitarbotones True, False
End Sub
-------------------------------------------------------------------------------------------------------------
Copia y pega desde la linea punteada hacia arriba, saludos espero te sirva, que estés bien
Nuevamente pido disculpas por el retraso para revisar la respuesta que me ha dado, sigo con los mismos problemas con el internet, estoy probando lo que me sugirió a ver como me va, por cualquier problema le estaré comentando.
Gracias por su ayuda...
Ok, cualquier cosa me contactas.
Buenas noches experto, ya revise lo que me explico y ahora me arroja el siguiente mensaje de error en la instrucción INSERT INTO, Error '424' en tiempo de ejecución: se requiere un objeto.
Este es el código:
Private Sub cmdguardar_Click()
Dim QryInsert As String, QryUpdate As String
If txtCedula.Text = "" Then MsgBox "El Campo Cedula no Puede estar Vacio", vbInformation, "Aviso": txtCedula.SetFocus: Exit Sub
If txtLugar.Text = "" Then MsgBox "El Campo Lugar de Expedicion no Puede estar Vacio", vbInformation, "Aviso": txtLugar.SetFocus: Exit Sub
If txtNombres.Text = "" Then MsgBox "El Campo Nombres no Puede estar Vacio", vbInformation, "Aviso": txtNombres.SetFocus: Exit Sub
If txtApellidos.Text = "" Then MsgBox "El Campo Apellidos no Puede estar Vacio", vbInformation, "Aviso": txtApellidos.SetFocus: Exit Sub
If txtFecha.Text = "" Then MsgBox "El Campo Fecha de Nacimiento no Puede estar Vacio", vbInformation, "Aviso": txtFecha.SetFocus: Exit Sub
If Modificar = False Then
Base.Execute QryInsert = "INSERT INTO Empleados (Cedula,Lugar_Expedicion,Nombres,Apellidos,Fecha_Nacimiento,Fecha_Ingreso,Fecha_Retiro,sexo) " & _
          "VALUES" & _
          " ('" & txtcelula.Text & "','" & _
          " '" & txtLugar.Text & "','" & _
          " '" & txtNombres.Text & "','" & _
          " '" & txtApellidos.Text & "','" & _
          " '" & txtFecha.Text & "','" & _
          " '" & txtIngreso.Text & "','" & _
          " '" & txtRetiro.Text & "','" & _
          " '" & sexo.Text & "')" 'doy por hecho que este es un combobox
Else
   QryUpdate = "UPDATE Empleados Set Cedula = '" & txtCedula.Text & "','" & _
                                      "Lugar_Expedicion = '" & txtLugar.Text & "','" & _
                                      "Nombres = '" & txtNombres.Text & "','" & _
                                      "Apellidos = '" & txtApellidos.Text & "','" & _
                                      "Fecha_Nacimiento = '" & txtFecha.Text & "','" & _
                                      "Fecha_Ingreso = '" & txtIngreso.Text & "','" & _
                                      "Fecha_Retiro = #" & txtRetiro.Text & "','" & _
                                      "Sexo = '" & sexo.Text & "'" & _
                                      " where IdEmpleados = '" & lblcodigo.Caption & "'"
End If
Habilitarcajas True
Habilitarbotones True, False
End Sub
Para la expresión UPDATE, no actualiza...
De ante mano gracias...
Amigo debes revisar si los nombres de los campos del formulario son los mismos, ese es el error que muestra no encuentra el objeto que se esta especificando en código fuente, si no actualiza al final de cada '","' agregale el espacio así '", "'
Buenas noches, ya he revisado de la forma que me indicaste y no he logrado descifrar cual es el problema, por favor si es posible, puedo enviarte una copia del proyecto a tu correo para que lo revises mejor y me puedas explicar lo que sucede. Estaré atento a tu respuesta, y de ser posible, dígame cual es su correo.
Nuevamente gracias...
Dale seria lo mejor yo te reviso la aplicación mandalo a mi mail [email protected] o [email protected] quedo atento a lo que me digas saludos
Listo ya se la envíe, gracias por su ayuda.
¿Te sirvió lo que te envíe?
Buenas noches, usted disculpe pero no he recibido nada, por favor reenvíen el comentario que me hizo.
Gracias...
Te reenvíe el mail saludos
Buenas noches experto, le agradezco su correo y la explicación pero aun sigo con problemas, no se que he hecho mal pero se me produce el siguiente error.
Instrucción SQL no validad; se esperaba 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.
En realidad ya no se que más hacer, hasta me atreví a variar el código que usted me envío para la instrucción INSERT INTO y colocar el siguiente:
Private Sub cmdguardar_Click()
Dim QryInsert As String, QryUpdate As String
If txtCedula.Text = "" Then MsgBox "El Campo Cedula no Puede estar Vacio", vbInformation, "Aviso": txtCedula.SetFocus: Exit Sub
If txtLugar.Text = "" Then MsgBox "El Campo Lugar de Expedicion no Puede estar Vacio", vbInformation, "Aviso": txtLugar.SetFocus: Exit Sub
If txtNombres.Text = "" Then MsgBox "El Campo Nombres no Puede estar Vacio", vbInformation, "Aviso": txtNombres.SetFocus: Exit Sub
If txtApellidos.Text = "" Then MsgBox "El Campo Apellidos no Puede estar Vacio", vbInformation, "Aviso": txtApellidos.SetFocus: Exit Sub
If txtFecha.Text = "" Then MsgBox "El Campo Fecha de Nacimiento no Puede estar Vacio", vbInformation, "Aviso": txtFecha.SetFocus: Exit Sub
If Modificar = False Then
Base.Execute QryInsert = "INSERT INTO Empleados " & "(Cedula,Lugar_Expedicion,Nombres,Apellidos,Fecha_Nacimiento,Fecha_Ingreso,Fecha_Retiro,sexo) VALUES('"
          QryInsert = QryInsert & txtCedula & "','"  'Cedula
          QryInsert = QryInsert & txtLugar & "','"  'Lugar de Expedicion
          QryInsert = QryInsert & txtNombres & "','"  'Nombres
          QryInsert = QryInsert & txtApellidos & "','"  'Apellidos
          QryInsert = QryInsert & ",#" & txtFecha & "#,#" 'Fecha de Nacimiento
          QryInsert = QryInsert & ",#" & txtIngreso & "#,#" 'Fecha de Ingreso
          QryInsert = QryInsert & ",#" & txtRetiro & "#,#" 'Fecha de Retiro
          sexo = sexo.ListIndex & "','" 'sexo
Tanto el que me envío como el que coloque más arriba sin ningún resultado, para el caso del UPDATE, sigue sin actualizar el recordset.
Disculpe tantas molestias pero en realidad ya no se que más hacer, por favor ayúdeme.
Pero que raro, si como te lo mande a mi me funciono de maravilla, ya te envíe nuevamente el código fuente.
Buenas noches, el ultimo correo que me envío sirvió de maravilla, solo me falta saber como hago para que la grilla se actualice cada vez que hago una UPDATE, es decir, en que parte del código fuente pongo el requery para que se refresque el recorset cuando se actualiza un registro.
Muchas gracias por su tiempo y colaboración, espero seguir contando con su ayuda en sucesivo.
En el evento form_unload ahí debes poner la carga del recorset, lo mismo que haces en el evento form_load.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas