Código SQL para tomar valores de un campo de texto en formulario e insertarlo en un campo autonumérico personalizado

Antes de plantear mi duda debo aclarar algunos aspectos antes. Logré personalizar un campo de autonumeración para que comenzara con un valor específico en una tabla (ControlSustratos) con dos campos. El primer campo se llama nCorrelativo y hace referencia a un correlativo de un producto, el segundo campo es CodProduc que indica el código del producto vendido (Licencias de tránsito = LT, Licencias de Conducción = LC). Utilicé la siguiente instrucción:

INSERT INTO ControlSustratos

Values (5000301201, "LT")

El asunto es que cada vez que se genera una venta de un producto (LT o LC) se debe registrar el número de correlativo que le toca, explico, estos productos ya vienen con un código correlativo que se debe registrar en el sistema una vez que este sea vendido y, para facilitar el proceso se me ocurrió que podría generar el correlativo a partir del número que viene en el lote de productos. Pregunto ¿Es posible que se pueda crear un mecanismo para que el usuario (que poco conocimiento de SQL tendrá) ingrese el primer número de la serie que viene en el lote (Ej, 5000301300) y a partir de allí cada vez que facture el producto ya esté generado el número correlativo? Entendiendo que cada lote de producto que se compra inicia con un número de correlativo diferente.

1 respuesta

Respuesta
2

Tengo que decirte que apenas entendí la pregunta, pero aun así voy a decir algo. Lo que haría seria convertir Ncorrelativo en numérico. En el formulario donde vayas a poner los datos, en sus propiedades-eventos-Al activar el registro pondría

Ifisnull([ncorrelativo]) then

ncorrelativo=nz(Dlast("ncorrelativo","controlsustratos"))+1

end if

Al abrir el formulario, como el primer registro estará en blanco, a ncorrelativo le pondrá el valor 1. Sobre él escribes el 500300150, o el que sea. A partir de ahí al siguiente registro le irá sumando 1. Que llega un momento que al abrirlo te pone 500300275 y el que hay que poner es el 400000001, pues sobre el anterior escribes éste último y vuelta a empezar.

En caso d que quieras poner ncorrelativo como texto tendrás que usar la función Val

ncorrelativo=Nz(Val(Dcount....

Gracias, entendiste bien solo que con otro método. La idea final es que el usuario de la base de datos, que no soy yo, pueda colocar el nCorrelativo que corresponde al producto a "nivel usuario", sin código, ni meterse en opciones rebuscadas. Voy a tomar tu procedimiento solo tengo una pregunta, lo que deberia hacer es: 1) Crear una tabla con nCorrelativo numperico 2) Crear un formulario de la tabla 3) Abrir las propiedades-eventos-Al activar el registro y colocar la instrucción. Esta instrucción se coloca en el visor de SQL? o en la tabla de propiedades? Gracias!!!

Hola, pongo la sintaxis pero me bota un error de complicación, se esperaba fin de la instrucción luego del then.

La instrucción correcta es( no sé porqué lo han juntado). Un espacio entre If y isnull

If isnull([ncorrelativo]) then

ncorrelativo=nz(Dlast("ncorrelativo","controlsustratos"))+1

en if

Respondiendo a lo anterior. No sé como pones los datos por eso te puse esa sugerencia. He supuesto que el usuario o quien sea escribirá, al menos, lo de LT o LC. Por eso lo puse en el evento, al activar registro del formulario, pero puedes ponerlo también en el evento Al recibir el enfoque, o casi mejor, en el evento Al recibir el enfoque del cuadro de texto CodProd. En vista diseño del formulario haz clic en Propiedades y en el evento Al activar el registro pones el código.

El proceso mental que he seguido( y eso duele !) Es que

1º Con la tabla vacía haces el formulario. Luego llega un usuario a meter datos en el formulario. Como, lógicamente no hay registros anteriores, en ncorrelativo le aparece un 1. él dice, no, no es ese y escribe, por ejemplo 10000, pone lo de LT ó LC y cierra. Llega un segundo usuario, ase irá a un registro nuevo y a él ya le aparece como ncorrelativo 10001. Llega otro y le aparece el 10002, y así sucesivamente.

21 Con la tabla que ya tiene registros, y supongamos que el último ncorrelativo de ella es 55555. Construyes el formulario. Llega un usuario para meter datos,. Se tiene que ir a un registro nuevo, y a él ya le aparece el 55556

En ambos casos, supongamos que llega un usuario a un registro nuevo y el ncorrelativo es 55800. El decide que no, que a partir de ahora deben ser 654321. Borra el 55800 y pone el 654321. Para el siguiente registro el correlativo ya sería el 654322.

Lo que si debes tener en cuenta es, si el correlativo va a tener muchos dígitos, el tamaño del campo en la tabla, ya que entero largo sólo coge hasta aprox. 2.100.000.000

Quizá te interese ponerlo simple o doble y en numero de decimales ponerle 0.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas