Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿Existen Trigger's o algo similar en Access?

Estas en el tema de ¿Existen Trigger's o algo similar en Access? en el foro de Bases de Datos General en Foros del Web. Buenas, Me gustaría saber si existen y si asi como hacer lo siguiente: Cada vez que se vaya a realizar una insercción en cualquier tabla, ...
  #1 (permalink)  
Antiguo 08/11/2004, 09:59
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 82
Antigüedad: 20 años, 9 meses
Puntos: 0
Pregunta ¿Existen Trigger's o algo similar en Access?

Buenas,

Me gustaría saber si existen y si asi como hacer lo siguiente:
Cada vez que se vaya a realizar una insercción en cualquier tabla, por cada campo

numérico que se intente insertar con un NULL, cambiar este NULL por un 0.

En http://www.programacion.com/foros/30/msg/148262/ he visto una respuesta sobre

trigger's, pero no encuentro lo que se afirma en ella.

Si no es con un Trigger y a alguien se le ocurre como hacerlo de otra manera que me

lo comente por favor, a mi se me ha ocurrido que: si en la propiedad "Valor

predeterminado" de un campo numérico pongo un 0 consigo el resultado que quiero pero

la cosa es ¿me tengo que recorrer todos los campos numéricos de todas las tablas de

la base de datos de todos los clientes para cambiar este Valor Predeterminado? o

¿existe alguna manera de hacer un proceso que lo cambie?. Lo digo porque la solución

me serviría, pero claro: alrededor de 80 clientes x alrededor de 500 tablas x

hechemos una media de 15 campos numéricos por tabla = 60000 cambios que tengo que

hacer a mano... inviable completamente.

Tambien he visto en la ayuda de Access algo que llama "Desencadenador(ADP)" que creo tiene algo que ver con lo que busco pero dice sobre ello que "La información recogida en este tema sólo se aplicará a proyectos de Microsoft Access (.adp)", no se lo que es un .adp, supongo que algún tipo de proyecto de Access con formularios y demas por lo que no creo que a mi me sirva, si alguien sabe sobre esto...

Gracias
  #2 (permalink)  
Antiguo 08/11/2004, 10:19
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Los triggers no existen en access. Estos son implementados sólo por grandes gestores de bases de datos.

1. Utiliza para el campo el valor predeterminado 0
2. Crea una consulta nueva y coloca esto en la Vista SQL:

update nombre_tabla set campo_con_null=0 where campo_con_null is null;

y luego ejecuta la consulta (boton !).

Otra forma es abrir la tabla, seleccionar el campo, y elegir "reeemplazar" en el menu edicion, dejas la caja de texto "buscar" vacía y en "reemplazar por" colocas 0, luego presionas el boton "reemplazar todos".
  #3 (permalink)  
Antiguo 10/11/2004, 01:33
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 82
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias por la respuesta, no dudo de tu buena fe pero lo de la consulta para cambiar los ya existentes es evidente, aparte que según lo planteas tendría que tirar la query una vez por cada una de las tablas (como comentaba hay mas de 500) la cosa sería hacer una query que me traiga todos los nombres de tabla existentes y una subquery en la que por cada tabla hiciera lo que tu comentabas, pero esque ese no es mi problema, mi problema es que no puedo hacer 60000 cambios del Valor Predeterminado a mano ¿estamos locos o que?.
  #4 (permalink)  
Antiguo 10/11/2004, 07:24
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
500 tablas en una base de datos access?

Bueno, la sentencia update que te indicaba te cambia el valor de un campo, en un solo paso para todos los registros de una tabla.
Los triggers actuan cuando existen cambios en una tabla (inserciones, borrados, actualizaciones) no son para realizar tareas de "mantenimiento" como en este caso.
Un procedimiento almacenado puede darte una solucion automatizada, pero no existen en access y no puedes evitarte las sentencia update que te he indicado, al fin y al cabo los procedimientos almacenados se programan.
Podrias tomar (exportar) tu base de datos con sql server y ahi ya tiene las herramientas que pretendes.
  #5 (permalink)  
Antiguo 11/11/2004, 02:03
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 82
Antigüedad: 20 años, 9 meses
Puntos: 0
Mi problema es encontrar una sentencia equivalente a:
ALTER TABLE nombreTabla ALTER COLUMN nombreColumna SET DEFAULT 0,
sentencia que funciona perfectamente en oracle y que consigue lo que yo quiero pero para la cual no encuentro un equivalente en access.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:54.