Visual Basic - Tablas relacionadas

Life is soft - evento anual de software empresarial
 
Vista:

Tablas relacionadas

Publicado por sergio (10 intervenciones) el 27/12/2004 05:54:09
Hola

Necesito la colaboración en una pequeña utilidad que estoy tratando de desarrollar para actualizar automaticamente unos registros de una base de datos en access pero desde vb6.
Hay tablas que estan relacionadas y necesito eliminar esa relación para poder actualizar y despues volver a crearla.
La relación es uno a varios desde la tabla estudio a la tabla curriculum y a la tabla clase. Se relacionan dos campos codigoestudio y codigopersonal.
Desde la tabla estudio a la tabla curriculum se exige integridad referencial y actualizar en cascada. A la tabla clase se exige integridad referencial solamente.
Para actualizar uso el siguiente código que funciona sin problemas si elimino la relación manualmente desde access pero necesito que lo haga todo vb6.

Set BD = OpenDatabase("C:\Archivos de programa\Administrador Escolar - SSA\AE100.mdb", False, False, ";pwd=1234567")

... Aquí debería eliminarse la relación existente...

'Actualización de registros

BD.Execute "update estudio " _
& "SET codigoestudio = '2004' " _
& "WHERE codigoestudio = '2003';"

BD.Execute "update curriculum " _
& "SET codigoestudio = '2004' " _
& "WHERE codigoestudio = '2003';"

BD.Execute "update clase " _
& "Set codigoestudio = '2004' " _
& "Where codigoestudio = '2003' "
...

... Aquí debería volver a crearse la relación eliminada...

BD.Close

Si alguien me puede colaborar con algun ejemplo, se lo agradezco de antemano.

Sergio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tablas relacionadas

Publicado por Cecilia Colalongo (3116 intervenciones) el 27/12/2004 10:18:34
En lugar de eliminar relaciones puedes hacer un INSERT ... SELECT para cada tabla solamente cambiando el campo codigoestudio y luego eliminar los registros viejos.

BD.Execute "INSERT INTO estudio SELECT campo1,campo2,'2004' as codigoestudio,otrocampo FROM estudio WHERE codigoestudio = '2003'"

BD.Execute "INSERT INTO curriculum SELECT campo1,campo2,'2004' as codigoestudio,otrocampo FROM curriculum WHERE codigoestudio = '2003'"

BD.Execute "INSERT INTO clase SELECT campo1,campo2,'2004' as codigoestudio,otrocampo FROM estudio WHERE codigoestudio = '2003'"

Donde dice: campo1,campo2,etc. colocas los campos -en órden de la tabla- menos codigoestudio que es el que reemplazas.

Y luego borras los anteriores -si es necesario-

BD.Execute "DELETE FROM estudio WHERE codigoestudio = '2003'"
BD.Execute "DELETE FROM curriculum WHERE codigoestudio = '2003'"
BD.Execute "DELETE FROM clase WHERE codigoestudio = '2003'"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar