FoxPro/Visual FoxPro - REGISTRAR BASE DE DATOS EN FORMULARIO

 
Vista:

REGISTRAR BASE DE DATOS EN FORMULARIO

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 03/11/2010 00:42:16
Estoy utilizando un formulario para registrar información sobre expedientes, y tengo definidos varios botones de comandos entre ellos NUEVO y GRABAR.

En la pantalla del formulario, precisamente en cada textbox y fuí colocando los nombres de cada campo de la base de datos.

Expediente
Fecha_ingreso
..... y así por el estilo.

El caso es que dentro del botón NUEVO anoté
APPEND BLANK
thisform.expediente.value=''
thisform.fecha_inicio.value=''
thisform.fecha_radic.value=''
thisform.tipo_juicio.value=''
thisform.tipo_juzgado.value=''
thisform.num_secreta.value=''
thisform.distrito_judicial.value=''
thisform.clas_promuev.value=''
thisform.clas_pasiv.value=''
thisform.contenido_de.value=''


y en el de GRABAR:

GATHER memvar
FLUSH
thisform.refresh

Pero no se graba la información.

Aparte de ello, toda vez que el campo Expediente es de tipo caracter, y el ìndice se llama
DEMANDF construido mediante la expresión ASC(expediente), me sale un mensaje

UNIQUENESS OF INDEX DEMANDF IS VIOLATED

Alguien podría ayudarme para lograr grabar mi información.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:REGISTRAR BASE DE DATOS EN FORMULARIO

Publicado por neo (1604 intervenciones) el 03/11/2010 03:35:41
un ejemplo mas sencillo es programar orientado a objetos.

En Click del boton nuevo:
select Mi_tabla
set order to expediente
go bott
Thisform.text1.value=Mi_tabla.expediente+1

Thisform.text2.value=ctod(" / / ")
Thisform.text3.value=ctod(" / / ")
Thisform.text4.value=""
Thisform.text5.value=""
Thisform.text6.value=""
Thisform.text7.value=""
Thisform.text8.value=""
Thisform.text9.value=""
Thisform.text10.value=""

En el Click del boton guardar:

Set exact on
select Mi_tabla
set order to expediente
append blank
replace expediente with Thisform.text1.value
replace fecha_inicio with Thisform.text2.value
replace fecha_radic with Thisform.text3.value
replace tipo_juicio with Thisform.text4.value
replace tipo_juzgado with Thisform.text5.value
replace num_secreta with Thisform.text6.value
replace distrito_judicial with Thisform.text7.value
replace clas_promueve with Thisform.text8.value
replace clas_pasiv with Thisform.text9.value
replace contenido_de with Thisform.text10.value
Wait window "Datos Guardados con éxito" timeout .8

Thisform.text2.value=ctod(" / / ")
Thisform.text3.value=ctod(" / / ")
Thisform.text4.value=""
Thisform.text5.value=""
Thisform.text6.value=""
Thisform.text7.value=""
Thisform.text8.value=""
Thisform.text9.value=""
Thisform.text10.value=""
Thisform.refresh

Intenta con esto

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:REGISTRAR BASE DE DATOS EN FORMULARIO

Publicado por Juan286 (185 intervenciones) el 03/11/2010 16:32:46
El problema es por el indeces esta repitiendo un valor.

Mira para dajar todo esto atras y eivtar problemas con tanto codigo inecesario hagomos esto.

Usa un nuevo formulario en blanco.

Ahora da clic derecho y busca la opcion de ENTORNO DE DATOS una ves dentro debe aparecer una una lista selecciona la tabla a usar.

Ya en la ventana de entorno de datos da clic derecho cobre la tabla y busca la opcion propiedades ahora busca la opcion de ORDER aqui debes buscar el indice principal y BUFFERMODEOVERRIDE este es para saber como va a manejar los datos el administrador seleccionar el 3.

Bueno una vez configuraro hay dos forma para agrgar los campos al formulario y es 1 x 1 y Todos los campos a la vez esto ya es de ti si es 1 x 1 da clic en cl campo y arrastra al formulario y suelto ago asi como cuando agregar un boton a casilla.

Pero si qiueres todos los campos seleccion la opcion campos y arrastra y veras k todos los campos aparecen.

Bueno para agrgar un campo nuevo solo tiene k colocar APPEND BLANK ya sea que coloques un boton o listo .

Tu dices que tiene dos btones y son estos
NUEVO el codigo seria asi
Evento clic
APPEND BLANK
thisform.refresh *es para actualizar el control

GRABAR. seria asi
=TABLEUPDATE(.T.)
thisform.refresh

Listo con esto debe ser suficiente no necesitas borras los registro ya k el sistema lo ara por ti.

Si necesitas mas ayuda colocar aqui.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:REGISTRAR BASE DE DATOS EN FORMULARIO

Publicado por mario serna lopez (21 intervenciones) el 04/11/2010 21:04:47
MUCHAS GRACIAS POR LA ASESORIA.

Ahora tengo un pequeño problema:

Cuando entro a la opción ORDER anoto el nombre del campo que será la clave principal. En este caso es EXPEDIENTE, pero tengo la duda es:

Como le hago para evitar registros duplicados.
Poniendo en order ALLTRIM(EXPEDIENTE)?

Ya he logrado el almacenamiento de datos, solo me falta evitar los registros dujplicados.

Si mi llave principal se llama EXPEDIENTE,, ?que debo colocar en la opción ORDER?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:REGISTRAR BASE DE DATOS EN FORMULARIO

Publicado por neo (1604 intervenciones) el 05/11/2010 00:25:11
Te hago una pregunta, Porque deben existir duplicados para el campo expediente, si forzosamente deben existir duplicados, mejor utiliza un campo clave tipo id para que en base a ese campo clave realices consultas y generes indices.

Saludos
de otra forma, deberas crear un indice compuesto, por ejemplo Expediente+nombre o algo asi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:REGISTRAR BASE DE DATOS EN FORMULARIO

Publicado por Juan286 (185 intervenciones) el 05/11/2010 14:39:11
Mira Foxpro cuando creas el index automaticamente lo coloca como del tipo NORMAL lo que significa que se pueden repetir registro sin ningun problema.

Para evitar que esto pase existe un tipo PRINCIPAL entrar a tu tabla veras lo campos bueno si te fijas bien hay 3 pestañas una llamada CAMPOS, INDICES Y TABLA

Antes de esto debes escojer escojer el campo a indexar y colocar adyacente o desendente.

Ahora ve a la pestaña indices veras que todos los campos con ixdice tienen el tipo normal cambialo a principal solo puede haber un principal por tabla.

Ahora si pueder realiazr el ORDER.

ALLTRIM(EXPEDIENTE) esto lo unico que aria es quietar los espacio en blanco que no se ocupen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar