Cambiar valor predeterminado tabla vinculada |
Responder | Página 12> |
Autor | |
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
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.
Escrito al vuelo |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
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” |
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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.NombreControlFormulariogracias.
Editado por Nomada - 25/Mayo/2020 a las 19:00 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
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
|
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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 |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 25/Mayo/2020 a las 19:18 |
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"
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
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 |
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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?
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 25/Mayo/2020 a las 19:30 |
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 |
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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 |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
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" Editado por rokoko - 25/Mayo/2020 a las 19:51 |
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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.
|
|
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
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
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
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 funcion 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
|
|
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |