Access - Convertir campo Numero en Autonumeracion

 
Vista:
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Convertir campo Numero en Autonumeracion

Publicado por Osen (81 intervenciones) el 21/09/2024 18:58:10
Amigos de Access, aquí nuevamente tocando sus puertas para pedir ayuda.
Hice un nuevo archivo, por errores del anterior. y de este anterior archivo copié todas las filas y las pegué en el nuevo.
El antiguo archivo tiene un campo en tabla con formato Autonumeración, pero en el nuevo archivo tuve que copiarlo, como formato Número, porque no me acepta Autonumeración.

Pregunta: ¿Cómo paso de Formato Número, el cual tiene datos, a Autonumeración,...? Y que continúe la secuencia incremental de 1 en 1...?

Gracias anticipadas
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

Convertir campo Numero en Autonumeracion

Publicado por Anonimo (3397 intervenciones) el 22/09/2024 01:02:47
Los campos autonuméricos son valores calculados y no se permiten modificaciones.

Conozco dos soluciones para mantener el ID, una con código y otra sin el.

La solución de código es tan sencilla como insertarlos uno a uno en el (lo permite con las tablas en blanco o si no se rompen las reglas o las indexaciones que existan en su diseño).

La alternativa consiste en importar la tabla omitiendo el campo ID en la tabla destino (se lo adjudica automáticamente) pero manteniendo (el que hay en la tabla origen para que se respete su orden al insertarlo.

En cualquiera de los casos, para poner a cero un índice en una tabla, tras modificar lo que se necesite, hay que compactar la base de datos y de forma automática el ID se ajustara al valor mas alto existente (el cero si la tabla esta vacía).

Método uno: VBA ...
Método dos : una consulta indexada por el campo ID en la de origen que inserta en la de destino (todos sus campos excepto el ID que se generara de forma automática).
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

Convertir campo Numero en Autonumeracion

Publicado por Eduardo Pérez Fernández (347 intervenciones) el 22/09/2024 22:16:45
Puede utilizar esta función

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Function ReiniciarAutonumerico(strNombreTabla As String, strNombreCampo As String, Optional ValorInicial As Long = 1)
    Dim strTempTable As String
    Dim strSQL As String
    Dim db As DAO.Database
    Dim cat As Object
    Dim t As Object
    Dim col As Object
    Dim p As Object
 
    Set db = CurrentDb()
 
    ' Nombre de la tabla temporal
    strTempTable = "Temp_" & strNombreTabla
 
    ' Manejo de errores para eliminar la tabla temporal si existe
    On Error Resume Next
    DoCmd.DeleteObject acTable, strTempTable
    On Error GoTo 0 ' Restablecer manejo normal de errores
 
    ' 1. Crear una tabla temporal para almacenar los datos, sin el campo autonumérico
    strSQL = "SELECT * INTO " & strTempTable & " FROM " & strNombreTabla & " WHERE 1=0;"
    db.Execute strSQL
 
    ' 2. Insertar los datos en la tabla temporal, excluyendo el campo autonumérico
    strSQL = "INSERT INTO " & strTempTable & " SELECT * FROM " & strNombreTabla & ";"
    db.Execute strSQL
 
    ' 3. Eliminar todos los datos de la tabla original
    strSQL = "DELETE FROM " & strNombreTabla & ";"
    db.Execute strSQL
 
    ' 4. Reinsertar los datos desde la tabla temporal a la tabla original
    strSQL = "INSERT INTO " & strNombreTabla & " SELECT * FROM " & strTempTable & ";"
    db.Execute strSQL
 
    ' 5. Configurar el valor inicial del autonumérico con ADOX
    Set cat = CreateObject("ADOX.Catalog")
    Set cat.ActiveConnection = CurrentProject.Connection
    Set t = cat.Tables(strNombreTabla)
    Set col = t.Columns(strNombreCampo)
    Set p = col.Properties("Seed")
 
    ' Asignar el nuevo valor inicial al campo autonumérico
    If IsMissing(ValorInicial) Then
        p.Value = Nz(DMax(strNombreCampo, strNombreTabla), 1)
    Else
        p.Value = ValorInicial
    End If
 
    ' Liberar objetos
    Set p = Nothing
    Set col = Nothing
    Set t = Nothing
    Set cat = Nothing
 
    ' 6. Eliminar la tabla temporal después de la inserción
    db.Execute "DROP TABLE " & strTempTable & ";"
 
    ' Liberar el objeto db
    Set db = Nothing
 
    MsgBox "Campo autonumérico reiniciado exitosamente.", vbInformation, "Le informo"
End Function

En donde strNombreTabla es el nombre de su tabla, strNombreCampo es el nombre del campo Autonumérico y ValorInicial desde donde se inicia el autonumérico, si lo omite comienza en 1
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

Convertir campo Numero en Autonumeracion

Publicado por Eduardo Pérez Fernández (347 intervenciones) el 22/09/2024 22:53:03
Esta linea p.Value = Nz(DMax(strNombreCampo, strNombreTabla), 1) cambie el 1 por ValorInicial
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
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Convertir campo Numero en Autonumeracion

Publicado por Osen (81 intervenciones) el 24/09/2024 04:32:25
Muchísimas gracias. Gran ayuda...!!
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