Data type mismatch errorr

134 views
Skip to first unread message

Jonas Villasana

unread,
Jan 28, 2015, 12:14:37 PM1/28/15
to publice...@googlegroups.com
buenas tardes, espero me puedan ayudar a resolver mi proble. estoy haciendo un programa de inventarios. tengo una tabla llamada empleados,  dicha tabla esta compuesta por nombre (texto), apellido(texto) y cedula(numerico), el campo cedula es un indice. perfecto
estoy programando el boton guardar con el siguiente codigo
SELECT EMPLEADOS
SET ORDER TO CEDULA
Seek ThisForm.TEXT3.Value 
IF !Found () 
Append Blank 
EndIF 
With ThisForm 
Replace NOMBRE With.TEXT1.Value
Replace APELLIDO With.TEXT2.Value
Replace CEDULA With.TEXT3.Value
ENDWITH 
al correr el programa me da el error "data type mismatch" justamente en el campo que es numerico.
lei que este error es porque el campo en la base de datos es numerico, y en el form es de campo texto, pueden decirme como modificar esto del form? gracias

Antonio.xt

unread,
Jan 28, 2015, 12:20:19 PM1/28/15
to publice...@googlegroups.com

Inicializa los 3 o los objetos que sean segun su tipo de dato.

Por ejemplo al TextBox de cedula asígnale 0 (cero) en la propiedad value, y a los otros dales este valor "". Esto puede ser en el Init del Form.

Irwin Rodriguez

unread,
Jan 28, 2015, 12:24:57 PM1/28/15
to publice...@googlegroups.com
Hola Jonas,

Intenta convirtiendo el contenido de la caja de texto de String a Numérico con la función VAL()

Ejemplo:

Replace CEDULA With VAL(ALLTRIM(.TEXT3.Value))

Saludos!!!

El 28 de enero de 2015, 13:20, Antonio.xt <puent...@gmail.com> escribió:

Inicializa los 3 o los objetos que sean segun su tipo de dato.

Por ejemplo al TextBox de cedula asígnale 0 (cero) en la propiedad value, y a los otros dales este valor "". Esto puede ser en el Init del Form.




--
Ing. Irwin Rodríguez
 
Consultor Informático
 
"Las ideas son fuerzas intangibles, pero tienen más poder que el cerebro físico de donde nacen. Tienen el poder de seguir viviendo, aún después de que el cerebro que las ha creado haya regresado al polvo"

NOTA: La información mostrada en este mensaje es de caracter Confidencial y está dirigida unicamente a los contactos señalados en el encabezado; si el lector de este correo no es el destinatario del mismo, se le notifica que cualquier copia o distribución queda totalmente prohibida. Si usted ha recibido este mensaje por error, por favor notifique inmediatamente al remitente por este mismo medio y bórrelo de su sistema.

Carlos Miguel FARIAS

unread,
Jan 28, 2015, 4:52:06 PM1/28/15
to Grupo Fox
Lo del tipo de dato se solucionaría si en el control del campo cedula del formulario, le asignas inicialmente un value igual 0
y El código lo cambiaría de:

SELECT EMPLEADOS
SET ORDER TO CEDULA
Seek ThisForm.TEXT3.Value 
IF !Found () 
   Append Blank 
EndIF 
With ThisForm 
   Replace NOMBRE With.TEXT1.Value
   Replace APELLIDO With.TEXT2.Value
   Replace CEDULA With.TEXT3.Value
ENDWITH 

a:

WITH THISFORM
   cNombre = .Text1.Value
   cApellido = .Text2.Value
   nCedula = .Text3.Value && si tienes problemas con el tipo, pon VAL(.Text3.Value)
ENDWITH
IF SEEK(nCedula, "Empleados", "Cedula")
   UPDATE Empleados SET nombre = cNombre, Apellido = cApellido WHERE cedula = nCedula
ELSE
   INSERT INTO Empleados (cedula, nombre, apellido) VALUES(nCedula, cNombre, cApellido)
ENDIF
 
porque:
En un entorno multiusuario, el append blank puede causar conflictos de clave duplicada (salvo buffers).
Para el sistema es menos proceso siempre.
El Seek como función, te evita:
a) seleccionar un área de trabajo (que luego deberías restaurar)
b) activar un índice, que luego deberías que desactivar
Aca las funciones de modificación de la bd se hacen con SQL, por lo que una migración futura a un SGBD externo prácticamente no se modifica.
Saludos: Miguel, La Pampa (RA)
Reply all
Reply to author
Forward
0 new messages