duda muchachos

139 views
Skip to first unread message

Oswal Noguera

unread,
Jun 21, 2017, 2:25:36 AM6/21/17
to Comunidad de Visual Foxpro en Español
por que me sale este error cuando voy a modificar algo de la tabla a traves de un formulario. ?

en la tabla
Ceduemple es Integer
fecha es date
FECHAentra es datetime
fechasal es datetime
NFALTAS ES CHARATERS

y hay esta las transformaciones para que no me de typemismasch cuando vaya a guardar o modificar en la tabla.
Sin título.png

Marcelo Barberis

unread,
Jun 21, 2017, 2:40:43 AM6/21/17
to publicesvfoxpro
yo lo primero que haria para saber que tipo de datos es usaria messagebox(vartype(this.txtCeduemple.value)) para saber si es texto o numero porque si es numero esta demas el val() ahora si es texto si esta bien pero antes confirmas si son los tipos de variables que tu crees que son
--
Marcelo Barberis Gutierrez
Sistemas Informaticos
Villa Montes - Bolivia
Telef.: +591-76830544

Oswal Noguera

unread,
Jun 21, 2017, 3:40:50 AM6/21/17
to publice...@googlegroups.com
si pero no solo en ceduemple me da eso me dan en todo 

Fidel Charny

unread,
Jun 21, 2017, 8:00:23 AM6/21/17
to Comunidad de Visual Foxpro en Español
1) Si un campo está liado a un cursor  o tabla por controlSource, no necesitas tomar el valor del control, sino de la tabla o cursor. De todos modos lo puedes tomar del control, pero ten en cuenta que el tipo de valor (type) será exactamente el del cursor o tabla.
2) Si los campos no están liados a un cursor o tabla y se asigna por Value, dependerá de cómo definiste el Value de cada control como inicio y también del FORMAT del control (para el caso de fechas)
3) Si un campo es datetime, no puedes usar CTOT() porque esa función intenta convertir un valor character en datetime.
4) Si un campo es numeric o integer, no puedes usar VAL(), porque esa función intenta convertir un valor chararter en numeric.
5) Si un campo o valor es character, no puedes utilizar STR() o TRANSFORM() sobre ese campo o valor.

Trata de leer la ayuda de Visual Fox.

Oswal Noguera

unread,
Jun 22, 2017, 4:10:10 AM6/22/17
to publice...@googlegroups.com
fidel, los campos no estan enlazado ni estoy usando el controlsource. vez estoy usando el evento value. uso esas funciones porque cuando le vaya a dar guardar no me de typemismacht vez. por que en la tabla de asistencia esos atributos estan colocados, como 
ceduemple : integer
horaentra: datatime
horasal:  datetime

entonces cuando yo quiero modificar ese registro y guardalo en la tabla, a traves de un formulario usando los botones de commandbutton. asi hermano
Sin título 3.png
Sin título1.png
Sin título2.png

ZeRoberto

unread,
Jun 22, 2017, 4:26:30 AM6/22/17
to publicesvfoxpro
Que motor de base de datos es?

Saludos

Oswal Noguera

unread,
Jun 22, 2017, 4:28:43 AM6/22/17
to Comunidad de Visual Foxpro en Español
es la misma base de dato que se utiliza en foxpro la cree aahi mismo si eso es lo que pregunto si no explicame. disculpen mi ignorancia. nwb me estoy pasando de bruto de pana.

ZeRoberto

unread,
Jun 22, 2017, 4:39:30 AM6/22/17
to publicesvfoxpro
Hay cosas que no entiendo porque pones CTOD() y porque pones VAL() si es VFP nativo y el campo es Fecha y Numerico deberias obviar esos comandos

Saludos

ZeRoberto

unread,
Jun 22, 2017, 4:46:23 AM6/22/17
to publicesvfoxpro
Deberias poner en el foro la linea de comandos donde te da el error, porque una imagen donde esta el codigo no nos ayuda mucho

Segun tu imagen

WITH Thisform
         INSERT INTO Asistencias (Fecha, Cedula, HoraEntra, HolaSale, Falta) VALUES(.txtFecha.Value, .txtCedula.Value, .txtHoraEntra.Value, .txtHoraSale.Value, .txtFalta.Value)
ENDWITH

Para esto los campos txtHoraEntra y txtHoraSale debente tener el tipo {//::}

De lo contrario seran campos textos

Saludos

ZeRoberto

unread,
Jun 22, 2017, 4:51:29 AM6/22/17
to publicesvfoxpro
Pero si usas tablas nativas porque mejor no usas

WITH Thisform
     SELECT Asistencias
     APPEND BLANK
     REPLACE Fecha WITH .txtFecha.Value,;
             Cedula WITH .txtCedula.Value,;
             HoraEntra WITH .txtHoraEntra.Value,;
             HolaSale WITH .txtHoraSale.Value,;
             Falta WITH .txtFalta.Value
ENDWITH

Saludos

ZeRoberto

unread,
Jun 22, 2017, 4:57:22 AM6/22/17
to publicesvfoxpro
No pongas txtCedulaEmple si solo tienes un solo campo llamado Cedula, simplemente txtCedula no te compliques mucho

Saludos


ZeRoberto

unread,
Jun 22, 2017, 5:00:49 AM6/22/17
to publicesvfoxpro
Ahora si tienes varios campos cedula entonces pon

CedEmp -- Cédula del Empleado
CedAmi -- Cédula del Amigo
CedAma -- Cédula del Amante
CedVec -- Cédula del Vecino
CedJef -- Cédula del Jefe

Fidel Charny

unread,
Jun 22, 2017, 7:50:05 AM6/22/17
to Comunidad de Visual Foxpro en Español
Oswald:
Esto si que no lo entiendo. Vas a permitir ingresar el horario y modificarlo a mano?. O sea, le pueden meter cualquier cosa al sistema. Incluso que un empleado vino mañana a las 0600 Hs?
De todos modos, si quieres que un control textbox trabaje con valores datetime, en el init de ese control pon:
this.Hours = 24
this.Value = {//::}

Luego
? VARTYPE(Thisform.txt_datetime.Value) --------> T.
O sea, puedes hacer directamente REPLACE horaEntra with thisform.txt_Datetime.Value, sin convertir nada.

Edwin Duran

unread,
Jun 22, 2017, 7:58:40 AM6/22/17
to Comunidad de Visual Foxpro en Español
Buen Dia

Cual es el propósito en que va a realizar esta pantalla, y que información va a generar. por que veo que la pantalla y es para un control de asistencias es muy vulnerable por que el usuario puede manipular las horas y fecha.

Zarlu

unread,
Jun 22, 2017, 12:04:07 PM6/22/17
to Comunidad de Visual Foxpro en Español
Buenos días Oswal Noguera!
 
De acuerdo a la primera imagen que mandaste....
 
Te sugiero que confirmes que el textbox  (txtCedulaemple) efectivamente tenga formato de caracter,
porque si tiene formato numérico y estás usando VAL() pues si te marcará error al quererlo ejecutar porque ya es numérico.
 
Ya reproduje la situación y así es cuando da el error.
 
Suerte y comentas para verificar lo demás
zarlu
Chetumal, Quintana Roo, México
 
 

Oswal Noguera

unread,
Jun 25, 2017, 9:11:48 PM6/25/17
to publice...@googlegroups.com
no lo que pasa que ese formulario lo va a manejar el administrador de la empresa o el jefe vez que podra manipular esa informarcion. nada mas es para el administrador esa funcion.

Oswal Noguera

unread,
Jun 25, 2017, 9:12:20 PM6/25/17
to publice...@googlegroups.com
estoy haciendo 2 menus uno que es el menu del administrador y el otro que es el de usuario.

Oswal Noguera

unread,
Jun 25, 2017, 9:13:52 PM6/25/17
to publice...@googlegroups.com
zarlu el txtcedulaemple en la tabla ese atributo esta en integer. vez y cuando lo escribo en un textboxt no debo transformalo, por que un textbox no es chararters ?.

HernanCano

unread,
Jun 25, 2017, 11:36:25 PM6/25/17
to Comunidad de Visual Foxpro en Español
Oswal:
Parece que tienes demasiadas confusiones. Vamos por partes:

¿Por qué aparece el error "El valor, tipo o contador del argumento de la función es inválido" en la línea 
CedE = val(This.txtCedulaEmple.Value) ?

La única posible explicación es que se está untilizando la función VAL() en un campo numérico, cuando sólo se usa para convertir de caracteres a numérico.

POR LO TANTO EL TEXTBOX txtCedulaEmple ES NUMERICO............................. 

Sería bueno saber por qué consideras que es de caracteres si ya VFP te está dando a entender que es numérico.

---------------------------------------------------
Si VFP te da a entender que es numérico y no debes usar VAL(), pues te recomiendo que suprimas la función VAL() de esa instrucción.......... Y NOS CUENTES--........
Reply all
Reply to author
Forward
0 new messages