Access - Cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados

 
Vista:
Imágen de perfil de Cm
Val: 106
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados

Publicado por Cm (68 intervenciones) el 10/09/2018 13:49:47
Con un recordset creo un nuevo campo para una tabla.
El campo se crea pero pese a que le indico en el diseño de tabla que el valor por defecto de ese campo "boolean" debe de ser true se crea como false.

¿Alguien puede decirme cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados en un recordset?
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 Cm
Val: 106
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados

Publicado por Cm (68 intervenciones) el 11/09/2018 09:41:42
O mejor dicho:

Teniendo una determinada tabla con un solo registro, añadimos dos campos nuevos. Mediante recordsets esta operación no es difícil.
El código sería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
For Each tabla2 In op.TableDefs
    If tabla2.Name = "usuario" Then
        esta = True
        Exit For
    End If
    Next
    If esta = True Then
        esta = False
        For Each campo In tabla2.Fields
            If campo.Name = "AUP" Then esta = True
        Next
        If esta = False Then
            tabla2.Fields.Append tabla2.CreateField("AUP", dbBoolean)
            tabla2.Fields.Refresh
            For Each campo In tabla2.Fields
                If campo.Name = "AUP" Then
                    campo.DefaultValue = True
                    campo.Required = True
                    End If
            Next
            Me!Estado2 = Me!Estado2 & "[X] - Creado campo 'AUP' en usuario" & Chr(13) & Chr(10)
        End If
    End If
    DoEvents

El resultado de este código es que el valor por defecto de los nuevos campos en UN NUEVO REGISTRO es True. Pero mi objetivo, además es que se cambien los valores del registro ya creado en ese campo.

Está claro que el código lo que hace es añadir esos campos y ponerle un valor 0 a las celdas de los datos del registro que ya existe. Luego prepara el nuevo registro (el que aparece con algunos valores predeterminados para crear un nuevo 'dato' registro con otra id) para que tenga por defecto esos valores.

Hay alguna manera de que este código cambie los valores de los registros ya creados en la tabla objetivo? Tendrían que aparecer en True en lugar de en False....

¿Alguien puede dar alguna pista?
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

Cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados

Publicado por Anonimo (3316 intervenciones) el 12/09/2018 01:34:43
Una simple curiosidad:

Aunque aquí se trate de campos de tipo booleano ….. ¿se ha intentado (y por supuesto logrado) que al crear un campo (sea de tipo texto, fecha o numérico) que este 'nazca' con un valor a nuestro albedrio?, esto es: el campo de texto 'nazca' con el valor 'En un lugar de la Mancha ….'

Si se ha logrado: mis respetos

Si no se ha logrado: ¿Por qué no se utiliza la técnica clásica de PREDERMINAR un valor en lugar de complicar lo sencillo?

Por cierto, en algunas ocasiones se puede utilizar el lenguaje SQL para tareas repetitivas y obtener una respuesta rápida y segura.
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 Cm
Val: 106
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados

Publicado por Cm (68 intervenciones) el 12/09/2018 09:40:15
Por eso la cuestión:

1
campo.DefaultValue = True

Para dar información útil, se agradecen las respuestas.¿Alguien puede aclarar cómo es que con ese código que define el valor predeterminado del campo a "True", el valor de los datos de los nuevos campos en los registros ya creados (que sin embargo se añaden en esa creación) es 'False'?
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

Cuál es el código VBA correcto para crear un nuevo campo con valores predeterminados

Publicado por Anonimo (3316 intervenciones) el 12/09/2018 19:14:50
La utilidad de una información la definen dos partes: Una es el emisor y otra el receptor...…

Un campo obtiene un valor predeterminado en el mismo acto de crear EL REGISTRO (no el campo en si).

Un análisis superficial del proceso INVALIDA la opción de que el añadido de un campo (la modificación de un registro ya creado) obtenga un valor determinado que solo se asigna en el acto de la creación del registro

Cuando se le AÑADE un campo a una tabla no se genera un registro, así que nace como todos nacemos (desnudos = CERO=FALSE en este caso en concreto).

Ahora bien:
.- si se generase una copia de esa tabla
.- a esa copia se le añadiese un campo booleano
.- a ese campo se le PREDETERMINASE un valor
.- tras ello se le insertaran los registros de la tabla original ….

Se darían las condiciones optimas para que (como el traspaso de datos implica la creación del registro en el nuevo destino) ese nuevo campo tomase el valor por defecto.

Para cualquiera otra situación (si los condicionantes lo permiten) se puede optar por el método de:
.- recorrer los registros de la tabla mediante un recordset y editar/salvar los que cumplan las condiciones
.- la alternativa de generar esa misma acción con una sentencia SQL (una consulta de selección que se modifica a una de actualización).
.- posiblemente otros que (a momento actual) desconozco, no recuerdo o simplemente ignoro.

De cualquier forma estaré atento por si alguien conoce ese método y puedo crecer en conocimientos (por eso de que el conocimiento significa poder, el poder y dominio sobre la maquina)
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