Incrementar clave automáticamente(folio para recibos) en programación en Visual Foxpro
Pues estoy empezando a programar en Visual Foxrpo 6.0 y no se como hacer para que una clave se vaya incrementando automáticamente, el campo es un tipo de folio para unos recibos.
1 Respuesta
Respuesta
1
1
Anónimo
La manera más sencilla que se puede aplicar en Visual Fox y en cualquier otro lenguaje seria calcular el valor mayor y luego incrementarlo en uno para el nuevo dato y esto nos daría un incremento automático, pero... Se pueden definir procedimientos automáticos en la base de datos (de los cuales no se mucho) que podrían realizar esta tarea, pero si el código no es modificado por cualquier usuario y el dato esta visible al usuario, yo recomendaría que este autoincremento no fuera 100% obligatorio porque algunas veces es necesario anular documentos, saltar un correlativo, etc. por lo que seria mejor unicamente sugerir el valor siguiente. Para calcular el valor mayor hay que tomar en cuenta algunas cosas: Si estamos agregando un registro directamente en la tabla (no por medio de vistas) podemos guardar en alguna variable local el numero de registro en el que estamos luego calcular el mayor y regresar al registro a reemplazarlo: LOCAL lnRegistro, lnValorMayor &&El valor mayor del campo folio de la tabla actual APPEND BLANK lnRegistro = RECNO() CALCULATE MAX(folio) TO lnValorMayor GO lnRegistro REPLACE folio WITH lnValorMayor + 1 Si estamos utilizando vistas para actualizar la información (agregar el registro) si utilizamos la función CALCULATE ... nos moveríamos de registro por lo que se actualizaría automáticamente en la tabla (la idea de las vistas es que se actualice en la tabla hasta que la información ya este correctamente ingresada), así que es necesaria otra vista que automáticamente nos de el valor mayor en algún campo (utilizamos REQUERY para actualizar la vista extra) && Suponiendo que la vista llamada CALCULAMAYOR nos da && el valor mayor en el campo DATOMAYOR LOCAL lcAlias lcAlias = ALIAS() && vista en la que estamos originalmente APPEND BLANK REQUERY("CALCULAMAYOR") REPLACE folio WITH CALCULAMAYOR.datomayor + 1 && reemplazamos el resto de campos... y luego TABLEUPDATE() &&actualizamos en la tabla Veamos cual es tu caso o la opción que prefieres y si te puedo aclarar mejor la pregunta...