** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Cambiar valor predeterminado tabla vinculada
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCambiar valor predeterminado tabla vinculada

 Responder Responder Página  12>
Autor
Mensaje
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Tema: Cambiar valor predeterminado tabla vinculada
    Enviado: 25/Mayo/2020 a las 12:23
Buenas.
Tengo una base de datos dividida con tablas vinculadas con contraseña, y al intentar cambiar el valor predeterminado de un campo me aparece el error:
"La operación no es compatible con tablas vinculadas."

Creo recordar que es por el "DYNASET" o algo parecido. El código que uso para cambiar del valor predeterminado es:
If Me.checkCuotAgua = True Then CurrentDb.TableDefs("T_Trimestre_AAB").Fields("TRI_CuotaAgua").DefaultValue = Me.vTRI_CuotaAgua

Alguna sugerencia?
Gracias




Editado por Nomada - 25/Mayo/2020 a las 12:44
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 13:14
Tienes que conectar con la BDD dónde está la tabla. Te está devolviendo el mismo error que si intentas cambiar el diseño de una tabla vinculada.  

Dim app As Application

Set app = CreateObject("Access.Application")
app.OpenCurrentDatabase rutacompletaalabdd, , password

app.CurrentDb.TableDefs("T_Trimetre_AAB").Fields("TRI_CuotaAgua").Properties("DefaultValue") = Me.vTRI_CuotaAgua

app.CloseCurrentDatabase
Set app = Nothing

Escrito al vuelo

Xavi, un minyó de Terrassa

Mi web
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 13:36
Esto es lo que tengo yo en mis chuletas..

CAMBIAR EL VALOR PREDETERMINADO DE UNA TABLA VINCULADA EN ACCESS

'Actualizamos el valor predeterminado de un campo de una tabla vinculada:

'- Tabla: Nombre que le hemos dado a la tabla vinculada en la base de datos activa

'- Campo: Nombre del campo que queremos modificar

'- Valor: Nuevo valor predeterminado

Function ActualizarPropiedad(Tabla As String, Campo As String, Valor)

    Dim dbs As DAO.Database

    Dim strTablaOriginal As String

   

    'Recuperamso el nombre de la tabla original

    strTablaOriginal = CurrentDb.TableDefs(Tabla).SourceTableName

   

    'Abrimos la base de datos donde se encuentra realmente la tabla

    Set dbs = OpenDatabase("", False, False, CurrentDb.TableDefs(Tabla).Connect)

   

    With dbs

        'Modificamos el valor por defecto

        .TableDefs(strTablaOriginal).Fields(Campo).DefaultValue = Valor

        'Y cerramos la base de datos

        .Close

    End With

   

    Set dbs = Nothing

   

    MsgBox "Dato cambiado correctamente.", vbInformation

End Function

Para llamar a la función

ActualizarPropiedad(TablaVinculada As String, Campo As String, Valor)

ActualizarPropiedad "NombreTabla", "NombreCampo", Me.NombreControlFormulario

CAMBIAR EL VALOR PREDETERMINADO DE UNA TABLA VINCULADA EN ACCESS CUANDO LAS TABLAS SON DE UNA BASE DE DATOS EXTERNA

'Actualizamos el valor predeterminado de un campo de una tabla vinculada:

'- Tabla: Nombre que le hemos dado a la tabla vinculada en la base de datos activa

'- Campo: Nombre del campo que queremos modificar

'- Valor: Nuevo valor predeterminado

Function ActualizarPropiedad(Tabla As String, Campo As String, Valor)

    Dim dbs As DAO.Database

   

   

   

    'Abrimos la base de datos donde se encuentra realmente la tabla

    Set dbs = OpenDatabase("Nombre y ruta de la base de datos", False, False, ";PWD=" & contraseña)

   

    With dbs

        'Modificamos el valor por defecto

        dbs.TableDefs(Tabla).Fields(Campo).DefaultValue = Valor

        'Y cerramos la base de datos

        .Close

    End With

   

    Set dbs = Nothing

   

    MsgBox "Valor predeterminada cambiado correctamente.", vbInformation

End Function

 

Cambiar valor predeterminado de una tabla local

CurrentDb.TableDefs("NombreTabla").Fields("NombreCampo").DefaultValue = “333”

CurrentDb.TableDefs("tbFacturas").Fields("MesesGarantia").DefaultValue = Me.txtGarantia
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 18:58
Rokoko creo que mi opción es la de "Cambiar el valor predeterminado de una tabla vinculada en Access cuando las tablas son de una base de datos externa", pues veo que tiene la opción de contraseña. Lo que no entiendo es la parte de:

Para llamar a la función

ActualizarPropiedad(TablaVinculada As String, Campo As String, Valor)

ActualizarPropiedad "NombreTabla", "NombreCampo", Me.NombreControlFormulario

gracias.


Editado por Nomada - 25/Mayo/2020 a las 19:00
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:08
El método OpenDatabase del DAO.WorkSpace tiene varios argumentos (lo pone en la ayuda). Uno ellos permite poner el password.

El metódo de DAO.OpenCurrentDatabase es (para mi) más sencillo de utilizar.

Aunque el resultado es el mismo, obviamente.

Un saludo


Xavi, un minyó de Terrassa

Mi web
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:08
Xavi probando con tu código me da el error:
"Error de sintaxist (coma) en la expresión de validación de tablas."
y al clicar en "depurar" me señala la siguiente línea:
app.CurrentDb.TableDefs("Tabla1").Fields("Agua").Properties("DefaultValue") = Me.vAAA

Pda. estoy haciendo una prueba con una tabla de nombre Tabla1 y el campo moneda Agua, donde escribo en el campo independiente vAAA para tomar el valor predeterminado.
El código final quedaría:
Dim app As Application

Set app = CreateObject("Access.Application")
app.OpenCurrentDatabase "D:\PASO\PRUEBA\pruebaExportar_be.accdb", , 12345

app.CurrentDb.TableDefs("Tabla1").Fields("Agua").Properties("DefaultValue") = Me.vAAA

app.CloseCurrentDatabase
Set app = Nothing

gracias.


Editado por Nomada - 25/Mayo/2020 a las 19:10
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:18
Publicado originalmente por Nomada Nomada escribió:

Rokoko creo que mi opción es la de "Cambiar el valor predeterminado de una tabla vinculada en Access cuando las tablas son de una base de datos externa", pues veo que tiene la opción de contraseña. Lo que no entiendo es la parte de:

Para llamar a la función

ActualizarPropiedad(TablaVinculada As String, Campo As String, Valor)

ActualizarPropiedad "NombreTabla", "NombreCampo", Me.NombreControlFormulario

gracias.

Pues es la forma de llamar a la funcion pasandole los 3 parametros necesarios. En el ehemplo el valor lo cojo de un campo, pero se puede poner dorectamente en la funcion si quieres, pero claro no se puede modificar sin entrara codigo vba, de hay que en el ejemplo lo pillo de un campo de un fromulario, para cambiarlo cuando lo desee sin necesidad de eitar el codigo vba al llamr a la funcion.

ActualizarPropiedad(TablaVinculada As String, Campo As String, Valor)

Tal cua asi
ActualizarPropiedad "NombreTabla", "NombreCampo", "NuevoValorPredeterminado"
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:22
Esto en lo que tengo yo en una base de datos real, cambio la hora predeterminada al darle a un boton

Dim varHora As Date
varHora = Me.txtHora    'Pillo la hora de del campo txtHora del formulario, asi modifico tantas veces quiera

ActualizarPropiedad "tbFicha", "Hora", "#" & varHora & "#"
msgbox"Hora cambiada correctamente"

Ten en cuanta que a la funcion tendras que ponerle el directorio de la base de datos y contraseña si la tubiese

'Abrimos la base de datos donde se encuentra realmente la tabla
    Set dbs = OpenDatabase(constDirectorio, False, False, ";PWD=" & constPass)

En este caso yo le paso los datos mediante dos constantes que tengo en un modulo

Si se lo quieres pasar directamente seria asi
Set dbs = OpenDatabase("C:\NombreBaseDatos.mdb", False, False, ";PWD=" & "LaContraseña")

Tambien habria formas de sacar el directorio y contraseña directamente de las tablas del sistema de access, por si la ruta la vas cambiando de vez en cuando, esta se cambia sola sin necesidad de entrar a editar el codigo....



Editado por rokoko - 25/Mayo/2020 a las 19:28
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:24
Rokoko, después de escribir lo siguiente:
ActualizarPropiedad(Tabla1 As String, Agua As Currency, vValor)
me dice:
"Se esperaba: separador de listas o)"

Hay algo mal?
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:30
Publicado originalmente por Nomada Nomada escribió:

Rokoko, después de escribir lo siguiente:
ActualizarPropiedad(Tabla1 As String, Agua As Currency, vValor)
me dice:
"Se esperaba: separador de listas o)"

Hay algo mal?

Hay no le estas pasando los parametros..

ActualizarPropiedad("Tabla1" , "Agua", "5")

El nombre de la tabla, nombre del campo y el valor que quieres como predeterminado.  Prueba a ver

Separador de listas se refiere a las comillas dobles que tiene que llevar el parametro que le pasas




Editado por rokoko - 25/Mayo/2020 a las 19:33
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:42
Rokoko con el siguiente código me da el error:

Private Sub Comando5_Click()
ActualizarPropiedad "Tabla1 As String", "Agua As Variant", "vCuota as Variant"
End Sub

Function ActualizarPropiedad(Tabla1 As String, Agua As Variant, vCuota As Variant)
    Dim dbs As DAO.Database
    vCuota = Me.vCuota
    Set dbs = OpenDatabase("D:\PASO\PRUEBA\pruebaExportar_be.accdb", False, False, ";PWD=12345")

    With dbs
        dbs.TableDefs(Tabla1).Fields(Agua).DefaultValue = vCuota
    End With

    Set dbs = Nothing

    MsgBox "Valor predeterminada cambiado correctamente.", vbInformation
End Function

Error:
"No se encontró el elemento en esta colección"
y me señala la línea dbs.TableDefs(Tabla1)...



Editado por Nomada - 25/Mayo/2020 a las 19:44
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 19:47
No no no....La funcion no la tienes ni que tocar!!!!!!! Bueno si, para pasarle la ruta de la base de datos claro y contraseña, nada mas

Function ActualizarPropiedad(Tabla As String, Campo As String, Valor)  'ESTO SON LOS PARAMETROS A PASARLE NO TIENES QUE TOCARLOS; SE LOS PASAS CON EL CODIGO DEL  BOTON

    Dim dbs As DAO.Database

    'Abrimos la base de datos donde se encuentra realmente la tabla

    Set dbs = OpenDatabase("D:\PASO\PRUEBA\pruebaExportar_be.accdb", False, False, ";PWD=" & 12345)

   

    With dbs

        'Modificamos el valor por defecto

        dbs.TableDefs(Tabla).Fields(Campo).DefaultValue = Valor

        'Y cerramos la base de datos

        .Close

    End With

   

    Set dbs = Nothing

   

    MsgBox "Valor predeterminada cambiado correctamente.", vbInformation

End Function

Y para llamarla!!! nombre tabla, nombre campo a modificar su valor predererminado y el valor que quieres como predeterminado

Private Sub Comando5_Click()

ActualizarPropiedad "Tabla1", "Agua", "5"
End Sub



Editado por rokoko - 25/Mayo/2020 a las 19:51
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 20:02
Veamos. Con el siguiente código da el mismo error que el código de xavi:
"Error de sintaxis (coma) en la expresión de validación de tablas."

Private Sub Comando5_Click()
ActualizarPropiedad "Tabla1", "Agua", "vCuota"
End Sub

Function ActualizarPropiedad(Tabla1, Agua, vCuota)
    Dim dbs As DAO.Database
    vCuota = Me.txtCuota
    Set dbs = OpenDatabase("D:\PASO\PRUEBA\pruebaExportar_be.accdb", False, False, ";PWD=12345")

    With dbs
        dbs.TableDefs(Tabla1).Fields(Agua).DefaultValue = vCuota
    End With
    Set dbs = Nothing
    MsgBox "Valor predeterminada cambiado correctamente.", vbInformation
End Function

No se que puede estar mal.
Arriba
Nomada Ver desplegable
Colaborador
Colaborador


Unido: 03/Julio/2011
Localización: España
Estado: Sin conexión
Puntos: 1719
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 20:10
Al final salió. Después de revisar todo paso a paso, el problema era que tenía el campo independiente con decimales.
Muchas gracias a los dos.
Este hilo se puede cerrar satisfactoriamente.
Saludos
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 25/Mayo/2020 a las 20:11
Vamos a ver, que NO hay que tocar la funcion, solo para pasarle la ruta de la base datos y contraseña si la tubiese.

El resto se lo pasas cuando llamas a la funcionCry

Un ejemplillo, copia la carpeta Ejemplo en C, si no tendras que volver a vincular. No tiene contraseña la base de datos

https://www.dropbox.com/s/6w605bgn0xzm43n/Ejemplo%20valor%20predeterminado%20cambiar%20tabla%20vinculada.rar?dl=0
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable