Access - Agregar clave principal a una tabla creada con una consulta de creacion de tablas

 
Vista:
Imágen de perfil de Juan Luis

Agregar clave principal a una tabla creada con una consulta de creacion de tablas

Publicado por Juan Luis (1 intervención) el 22/01/2017 01:46:51
Con una consulta de creacion de tablas, cada vez que se produce un movimiento de mercaderias, se crea la tabla de inventario, pero no puedo trabajar con ella porque no contiene una clave principal, como hago para que el campo "numero de mercaderia" sea la clave principal de la tabla..? Gracias...
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Agregar clave principal a una tabla creada con una consulta de creacion de tablas

Publicado por Neckkito (1157 intervenciones) el 22/01/2017 19:47:40
Hola!

Te pongo un ejemplo porque no indicas cómo ejecutas esa consulta. Entiendo que no deberías tener problemas para adaptarlo a tu caso.

Imaginemos que la consulta de creación de tabla se llama "CCreaInventario", y que la tabla que se crea se llama "TInventario".

En ese caso, el código que ejecutaría la consulta y que establecería el campo que quieres como clave principal sería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private sub...
    Dim miSql As String
 
        'Creamos la tabla
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "CCreaInventario"
    DoCmd.SetWarnings True
 
        'Establecemos el campo requerido como clave principal
    miSql = "ALTER TABLE TInventario ADD CONSTRAINT PK_NM PRIMARY KEY([numero de mercaderia])"
    CurrentDb.Execute miSql
 
        'Avisamos del fin del proceso
    MsgBox "Tabla TInventario generada correctamente", vbInformation, "CORRECTO"
End sub
...

Lo dicho, tendrás que ajustar los nombres que yo he utilizado a los que tú manejes. Lo que sí debes tener en cuenta es que si los nombres de los objetos (consulta y tabla) que utilizas tienen espacios en blanco (como es el caso del nombre del campo) tienes que ponerlos entre corchetes.

Finalmente, ten en cuenta que el código no tiene ningún control de errores. Si te saltan errores tendrías que añadir ese control de errores para gestionarlos. Me refiero a errores de datos, como, por ejemplo, que un registro no tenga valor en el campo "numero de mercaderia", dado que ya sabes que una clave primaria no puede nunca contener un valor null. Y, en ese caso, la solución pasaría por examinar ANTES de ejecutar la consulta que todos los registros tienen valor en ese campo y, si no, tomar las medidas oportunas.

Como recomendación te sugeriría que echases un vistazo a este artículo para el tratamiento de nombres: http://bit.ly/2bLmwY6

Saludos,

Neckkito
http://bit.ly/neckkito
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