Llenar un campo de una tabla mediante un combobox

Tengo 3 textbox y un combobox, necesito ingresar los datos que se coloquen en los textbox y el que se seleccione en el combobox en una tabla .
USE E:\Cuadratura\chile_express\digitados.DBF EXCLUSIVE
 APPEND BLANK
 replace OT With ThisForm.Text1.Value
 replace CANTIDAD With ThisForm.Text2.Value
 replace fecha With ThisForm.Text3.Value
 replace servicio With THISFORM.ComboBox1.Value
Todos funcionas bien excepto el combobox que me da error al tratar de capturar lo que se selecciono en el combobox.
¿Cómo puedo hacerlo?
De antemano muchas gracias

1 respuesta

Respuesta
1
Fíjate si el tipo de datos del campo de tu tabla y el de tu combobox son los mismos. Si no fuera así sería bueno saber qué error recibes.
Hola. Lo solucione en si.
El problema que tengo es que después de ingresar no carga el combobox debido a que no puede acceder a la base nuevamente. ¿Cómo lo soluciono?
No comprendo del todo tu problema:
El problema que tengo es que después de ingresar ¿?
- Los datos en los controles txtbox y combobox
- Los datos en la tabla de destino
No carga el combobox ¿?
- No se carga el origen de los datos.
- No se carga el dato seleccionado.
- ¿?
Debido a que no puede acceder a la base nuevamente ¿?
- ¿No puedes accededer a la tabla de origen del combobox?
- ¿No puedes acceder a la tabla de destino de los datos?
- ¿No puedes acceder a la Base de Datos Completa?
Espero puedas especificar un poco más tu problema para poder ayudarte.
OK, ahora todo está claro:
Tu combo box pierde la tabla de referencia por que al final de tu código utilizas la sentencia close tables. Esta instrucción cierra todas las tablas que tengas abiertas, incluida la del combobox, entonces te aparece un mensaje que dice desenlazando objeto ...
Además noto in probable inconveniente en tu forma de agregar el registro.
Te paso una sugerencia para que modifiques tu código:
if len(alltrim(thisform.text1.value)) = 0
    messagebox('ingrece codigo por favor')
 else
     if len(alltrim(thisform.text2.value)) = 0
        messagebox('ingrece rut deudor por favor')
    else
        if len(alltrim(thisform.text3.value)) = 0
            messagebox('ingrece fecha suscripción por favor')
        else
             * graba nuevo registro *
             * no necesitas abrir la tabla - el comando insert into la abre por ti *
             insert into digitados (ot, cantidad, fecha, servicio) ;
             values (thisform.text1.value, thisform.text2.value, thisform.combo1.value)
             * cierra tabla *
             use in digitados
              * configura objetos *
             thisform.text1.value=' '
             thisform.text2.value=' '
             thisform.text3.value=' '
        Endif
    Endif
Endif
thisform.text1.setfocus()
Si reemplazas tu código por el que te paso no tendrás problemas.
OBS: Te recomiendo que evites usar la cláusula Append Blank. Esto te va a generar otro inconveniente más adelante. Cuando quieras comenzar a utilizar los GRANDES BENEFICIOS de la INTEGRIDAD REFERENCIAL de la Base de Datos, descubrirás que debes utilizar índices estructurales (cdx) que te permitirán crear relaciones persistentes entre las tablas. Allí surgirá que si tu tabla tiene al menos 1 índice principal o candidato no admitirá valores repetidos para estos campos, ni siquiera cuando el valor del campo clave es 0 o está en blanco.
Es por ello que te sugiero que comiences a utilizar el comando insert into () en lugar de append blank. Ademas de ser mucho más seguro, realiza todo en un solo paso y te aseguras que ningún corte de energía eléctrica o apagadado incorrecto de la pc te deje colgado ningún registro en blanco.
Perdon por mi confsa explicacion.
No puedo accededer a la tabla de origen del combobox, debido a ello el combobox se borra del formulario y no puedo seguir ocupandolo.
Te adjunto el código que tengo puesto.
if len(alltrim(thisform.text1.value)) = 0
messagebox('INGRECE CODIGO POR FAVOR')
 ELSE
 if len(alltrim(thisform.text2.value)) = 0
messagebox('INGRECE RUT DEUDOR POR FAVOR')
ELSE
if len(alltrim(thisform.text3.value)) = 0
messagebox('INGRECE FECHA SUSCRIPCIÓN POR FAVOR')
ELSE
 USE E:\Cuadratura\chile_express\digitados.DBF EXCLUSIVE
 APPEND BLANK
 replace OT With ThisForm.Text1.Value
 replace CANTIDAD With ThisForm.Text2.Value
 replace fecha With ThisForm.Text3.Value
 replace servicio With THISFORM.Combo1.Value
 thisform.Text1.value=' '
 thisform.Text2.value=' '
 thisform.Text3.value=' '
Endif
Endif
Endif
close tables
thisform.text1.setfocus
En el transcurso del día voy respondiendo 4 veces la misma pregunta, esta es la quinta vez:
Te paso a continuación una explicación completa de cómo resolver tu problema:
Tu combo box pierde la tabla de referencia por que al final de tu código utilizas la sentencia close tables. Esta instrucción cierra todas las tablas que tengas abiertas, incluida la del combobox, entonces te aparece un mensaje que dice desenlazando objeto ...
Además noto in probable inconveniente en tu forma de agregar el registro.
Te paso una sugerencia para que modifiques tu código:
if len(alltrim(thisform.text1.value)) = 0
    messagebox('ingrece codigo por favor')
 else
     if len(alltrim(thisform.text2.value)) = 0
        messagebox('ingrece rut deudor por favor')
    else
        if len(alltrim(thisform.text3.value)) = 0
            messagebox('ingrece fecha suscripción por favor')
        else
             * graba nuevo registro *
             * no necesitas abrir la tabla - el comando insert into la abre por ti *
             insert into digitados (ot, cantidad, fecha, servicio) ;
             values (thisform.text1.value, thisform.text2.value, thisform.combo1.value)
             * cierra tabla *
             use in digitados
              * configura objetos *
             thisform.text1.value=' '
             thisform.text2.value=' '
             thisform.text3.value=' '
        Endif
    Endif
Endif
thisform.text1.setfocus()
Si reemplazas tu código por el que te paso no tendrás problemas.
OBS: Te recomiendo que evites usar la cláusula Append Blank. Esto te va a generar otro inconveniente más adelante. Cuando quieras comenzar a utilizar los GRANDES BENEFICIOS de la INTEGRIDAD REFERENCIAL de la Base de Datos, descubrirás que debes utilizar índices estructurales (cdx) que te permitirán crear relaciones persistentes entre las tablas. Allí surgirá que si tu tabla tiene al menos 1 índice principal o candidato no admitirá valores repetidos para estos campos, ni siquiera cuando el valor del campo clave es 0 o está en blanco.
Es por ello que te sugiero que comiences a utilizar el comando insert into () en lugar de append blank. Ademas de ser mucho más seguro, realiza todo en un solo paso y te aseguras que ningún corte de energía eléctrica o apagadado incorrecto de la pc te deje colgado ningún registro en blanco.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas