A vueltas con los autonuméricos.

Tu respuesta a mi consulta sobre autonuméricos es fantástica. Funciona correctamente. Las consultas de inserción gestionan el campo texto con este formato 001/2003, 002/2003 etc. El problema que tengo es que intruduzco los datos desde un formulario y llamo a las consultas de inserción desde una macro la cual se ejecuta al abrir. Bien, en el campo Idexpediente(que es como lo he llamado), no aparece nada. Es el campo clave y al finalizar la entrada de datos del registro me dice que el campo citado no puede tener un valor Null. Bueno, salgo de este formulario y en la tabla resulta que sí se ha insertado los datos del campo idexpediente. No lo entiendo.

1 respuesta

Respuesta
1
Por lo que comentas en tu mensaje, si no he entendido mal, tu aplicación funciona de la siguiente manera:
1. Abres un formulario
2. Al abrir este formulario (¿evento Open?), llamas a la macro que crea un registro nuevo y calcula automáticamente el campo clave(campo Idexpediente).
3. ¿Te sitúas en el registro recién creado?
4. Después de introducir el resto de campos de este registro en el formulario, al actualizar el registro, te da error, como si no hubiese recogido el valor de Idexpediente
<Corrígeme si me equivoco>
El formulario que utilizas, ¿tiene asociado un origen de datos, es decir, tiene asociada alguna tabla o consulta?
Las causas que se me ocurren al problema que planteas son:
a) Comprueba las consultas. Verifica que llamándolas sin el formulario te crean los registros de forma correcta (parece que esto ya lo hacen, pero compruébalo por si a caso)
b) Otra posibilidad es, que no estés posicionándote en el registro que creas con las consultas.
Para hacer esto, bastaría con incluir en la macro, después de ejecutar las consultas, la acción: IrARegistro con los parámetros (Tipo de Objeto= Formulario, Nombre del Objeto=<Nombre de tu formulario>, Registro=Último).
Con esto el formulario se posicionará en el registro que acabas de crear con la consulta de Inserción.
c) Comprueba que no estás intentando crear 2 registros. La primera consulta ya te creaba un registro (supongo que en una tabla de Expedientes), pero si en la macro o en algún otro sitio del formulario vuelves a crear uno nuevo (IrARegistro Nuevo) te habrá creado un registro nuevo, en blanco, y sin valor de IdExpediente, que al intentar actualizar te dará el error que describes.
Si ejecutas la consulta de inserción del IdExpediente, no hace falta que vuelvas a crear otro registro nuevo, la consulta ya te lo ha creado, basta con situarte en él tal y como se indica en la solución anterior.
d) Puede que el formulario no te esté actualizando el Conjunto de Registros (RecordSet) u origen de datos del formulario. Para solucionar esto, basta con guardar el formulario después de llamar a la consulta de inserción de IdExpediente (Utiliza en la macro la Acción: Guardar (Sabe) con los siguientes parámetros: (Tipo de Objeto= Formulario; Nombre de Objeto = <Nombre de tu Formulario>)
Si no consigues solucionar el problema con ninguna de estas soluciones, mándame el código de la Macro a la que llamas desde el formulario (indícame exactamente el evento donde la llamas).
< Para copiar la macro basta con Exportar la Macro como Módulo de Visual Basic, y me mandas el código que te genere>
¡Daremos con ello!, seguro
Un abrazo
Javi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas