Creación de muchos registros en tabla por un comando

Te agradezco de antemano toda la ayuda que me puedas ofrecer.

No soy informático, pero por mi trabajo he tenido que batallar bastante con access pero de todas las bases que he hecho hasta ahora nunca tuve que hacer algo como lo que te planteo. Imaginemos una tabla CLIENTES, otra llamada por ejemplo TRÁMITES ALTA y otra ESTADO TRÁMITES.

Se trata de que en la tabla TRÁMITES ALTA, tengamos recogidas toda las cosas que hay que hacer en los distintos departamentos para el caso en que entre un nuevo cliente (Alta en los programas, en archivo, pedirle teléfono, etc..). Pueden llegar a ser bastantes trámites distintos. Lo que pretendo recoger en la tabla ESTADO TRÁMITES, es que cuando llegue un cliente nuevo, se dé de alta cada uno de los trámites que existen en TRÁMITES ALTA, estableciendo además otros campos como qué persona se encargará de hacerlo y el estado.

Entiendo que habrá que establecer algún tipo de orden reiterativa para que recorriendo todos los campos de la tabla TRÁMITES ALTA los vaya creando en la tabla ESTADO TRÁMITES para ese nuevo cliente, pero no sé qué comando tengo que usar y cómo enfocarlo

1 respuesta

Respuesta
1

Perdona por no contestar antes, estuve de vacaciones y olvidé desactivar la cuenta.

Lo que pides no es difícil. Voy a plantearte un código y lo vamos a ir retocando hasta que te funcione.

Cosas que necesito saber:

- Cuándo hay que hacerlo, es decir, a partir de que evento o de que momento tiene que desencadenarse la ejecución del código.

- Algunos campos representativos de cada una de las tablas, más que nada por adaptar mejor el código (sobre todo las claves principales)

Con esto ya podría empezar a plantearte el código.

Gracias por contestar

Justo al enviar la pregunta vi que no la tenía bien explicada pero luego vi que no podía entrara a cambiarla. Más que nada porque a priori se podría pensar en que bastaría una consulta de datos anexados para hacer esto. Pero es que lo que quiero es que cuando se den de alta los registros en TblESTADOTRAMITES se vayan estableciendo algunos valores en determinados campos, como por ejemplo quién tendrá que hacer ese trámite o si procede o no en ese caso concreto, de ahí la necesidad (creo ) de darlos de alta uno a uno mediante algún procedimiento reiterativo.

Respondiendo a tus preguntas, Realmente puse TblTRÁMITESALTA por simplificar pero quiero que esa tabla recoja todos los trámites que se deban realizar en la empresa en las distintas situaciones que se puedan dar (alta de nuevo cliente, baja, etc..) por lo que el primer campo de esa tabla será uno que identifique el tipo de trámite por lo que mejor sería llamarla TblTRÁMITESPOSIBLES. Y centrándonos en el ejemplo pues que cuando entre un nuevo cliente en la empresa, pues en la TblESTADOTRÁMITES se den de alta todos los registros que en la TBlTRÁMITESALTA estuvieran señalados como un trámite a realizar para nuevo cliente, pero además como decía marcando si corresponde hacerlo a un trabajador concreto, su estado actual, si procede, etc..

Ejemplos de campos:

TblTRÁMITESPOSIBLES

IdTramiteposible

TipoTramite (alta cliente, baja cliente, camibio socios, etc..)

Trámites (crearle ficha, darlo de alta en la web, etc..)

TrabajadorPredeterminado (quién a priori debería encargarse de esa tarea)

TblESTADOTRÁMITES

IdEstadoTramite

TipoTramite

Trabajador (quién se ocupará que no siempre tiene que ser el predeterminado)

EstadoTrámite (terminado, pendiente, no procede)

Vemos, lo que planteas, a ver si lo he entendido, es que al añadir datos a la tabla tblEstadoTramites algunos provengan de tblTramitesPosibles y otros vengan de, por ejemplo, el formulario que llama al proceso. Otros se me ocurre que pueden venir de una tabla de opciones o de parámetros de la aplicación más genérica.

Se me ocurre que por ejemplo te puede interesar el trabajador que arranca la secuencia. Puedes tener un formulario de inicio de sesión en el que se entre usuario y contraseña, y cuando sea válido, pasar como parámetro el usuario al formulario principal. Al desencadenar el evento de creación de operación ya tienes el nombre de usuario que lo da de alta.

Es un suponer, pero imagina que tienes diferentes sedes, y te interesa guardar también la sede. Puedes tener ese valor en un campo de una base de datos local y pasarlo a tblEstadoTramites, por ejemplo.

La clave está en que sepamos el valor de TipoTramite al hacer clic en algo para empezar la secuencia de adición de datos.

Suponiendo que lo sabemos sería algo así como:

- Crear un recordset con SELECT * FROM tblTramitesPosibles WHERE TipoTramite = dato (un recordset es una consulta sobre una tabla que se guarda en memoria)

-Si hace falta algún parámetro genérico de aplicación, cargarlo en otro recordset

- Recorrer el recordset de arriba a abajo e ir creando en tblEstadoTramites todos los registros que hagan falta

¿Vamos bien?

Perdón por tardar en contestar pero el trabajo no me dejó mucho tiempo.

Al final tras darle muchas vueltas creo que no voy a necesitar ese proceso que te pedía. El tema es que al dar de alta esos registros, algunos de sus campos deberían tomar unos valores según un caso u otro. Pero tras pensarlo mucho he limitado esos valores a dos y que justo en el momento del alta mediante una consulta de datos anexados y según unos parámetros que habrá en el formulario desde el que ejecuta la consulta me va a ser suficiente.

De todos modos si no te importa ponerme un esbozo de cómo sería eso que me decías de "recorrer el recorset de arriba a abajo para ir creando los registros" y qué función tendría que usar, porque es la idea que tenía al principio y aunque ahora no sé que eso lo voy a necesitar para otros procesos.

Muchas gracias por todo

Como quieras.

A ver, un recordset no es más que una tabla o una consulta de selección, pero en memoria.

De lo que se trata es de que cuando tenga lugar el evento correspondiente que de de alta un registro en Clientes, tengas un criterio que te permita elegir qué tramites tipo vas a usar.

Pongamos por caso que una vez hecha el alta tienes una variable registros de tipo recordset que es:

set registros = currentdb.openrecordset("SELECT * FROM tblTiposTramites WHERE TipoTramite = " & variable_familia_tramites)

Lo que harás con esta orden es guardar en la variable registros los datos de la tabla tblTramitesPosibles en los que el tipo de tramite sea el que le pasas como parámetro.

Tanto si tienes un registro como si tienes varios, tras esto tendrías que hacer:

registros.movefirst

While not registros.eof

Currentdb.Execute("INSERT INTO tblEstadoTramites(idEstadoTramite, TipoTramite, Trabajador, EstadoTramite) VALUES(" & varIdEstado & ", " & varTipoTramite & ", " & varTrabajador & ", " & varEstadoTramite & ")")

registros.movenext

Wend

Con esto lo que harías sería, mientras haya trámites pendientes de pasar a la tabla de EstadoTramites, insertar un registro con los datos que le des.

Tienes que saber tú de donde sacas la información de todas la variables varXXX

Ya me dirás si lo ves claro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas