Solución para este error al guardar datos

Hola amigo vuelvo a molestarte, esta ves quiero que me ayudes con
este problema tengo en un formulario para el mantenimiento de una tabla
llamada carreras en donde tengo los campos id_fac,  id_carrera de tipo
integer y el campo nombre de tipo character el funcionamiento de este
formulario consiste primero en introducir una facultad esistente para
luego introducir una carrera nueva a esa facultad, en el evento
keypress de txtid_fac e introducido este codigo 
LPARAMETERS nKeyCode, nShiFtCtrl
if nKeyCode = 13 and thisform.txtid_fac.value = "*" then
select id_fac, nombre FROM facultad INTO CURSOR  bfacu
BROWSE
thisform.text2.controlsource ="bfacu.id_facu"
thisform.text2.controlsource = ""
thisform.txtid_fac.value = str(thisfrom.text2.value)
thisform.text1.controlsource = "bfacu.nombre"
thisform.refresh
thisform.txtid_fac.controlsource = ""
thisform.test1.controlsource = ""
thisform.txtid_carrera.setfocus()
thisform.refresh
end if
Pero
Cuando me dispongo a guardar con la sentencia sql inset into me da un
error que dice data type mismatch como puedo solucionar este error y
poder guardar los datos con éxito de antemano muchas gracias

1 respuesta

Respuesta
1
Si estas tratando de escribir en la Tabla "Carreras", entonces puede ser que el error sea ocasionado por el campo "Id_Fac" que es entero, pero el Cuadro de Texto "txtId_Fac" es de tipo carácter ya que utilizaste la función [STR()] para asignarle el valor. Debes quitarle el "STR" para que no lo convierta a texto.
Si no, dime cuál es el comando [INSERT...] que estas usando..
pues mira te dire que ya use el INSERT DE MUCHAS FORMAS
INSERT INTO CARRERAS VALUES(VAL(thisform.txtId_carrera.value), thisform.txtNombre.value ,VAL(thisform.txtId_fac))
¿También ya probé poniendo antes de val la instrucción INT y nada la verdad ya no se que hacer?
Creo que te falta considerar el Orden de los campos en la Tabla "Carreras". Si tu Tabla tiene los campos "Id_Fac", "Id_Carrera" y "Nombre" en ese orden entonces tu instrucción [INSERT..] debe meterlos en ese mismo orden o debes especificar los campos que le vas a meter.
** Para seguir el Orden de la Tabla
INSERT INTO Carreras VALUES (VAL(ThisForm.txtId_Fac.Value), ;
        VAL(ThisForm.txtId_Carrera.Value), ThisForm.txtNombre.Value)
** Para usar el Orden que quieras
INSERT INTO Carreras (Id_Carrera, Nombre, Id_Fac) VALUES ;
        (VAL(ThisForm.txtId_Carrera.Value), ThisForm.txtNombre.Value, ;
        VAL(ThisForm.txtId_Fac.Value))
Si aún así tienes problemas, intenta metiendo uno por uno para detectar cual es el que te esta mandando el error.
INSERT INTO Carreras (Id_Fac) VALUES (VAL(ThisForm.txtId_Fac.Value))
INSERT INTO Carreras (Id_Carrera) VALUES (VAL(ThisForm.txtId_Carrera.Value))
INSERT INTO Carreras (Nombre) VALUES (ThisForm.txtNombre.Value)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas