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

Valor predeterminado tabla vinculada

 Responder Responder Página  <123
Autor
Mensaje
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1601
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita rokoko Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 17/Enero/2019 a las 22:10
Y por liarla un poco mas y por curiosidad, si las tablas son vinculadas pero de un servidor SQL, se les puede cambiar tambien el valor predeterminado??
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 829
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pitxiku Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: Ayer a las 18:15
En un principio, puedes modificar el valor predeterminado de los campos de cualquier gestor de datos siempre y cuando:

1. El gestor de datos permita el uso de valores predeterminados.
2. Se pueda acceder con DAO a la base de datos (o con ADO; aunque en este caso habrá que modificar el código).
3. Dispongas de los datos de conexión a la base de datos (o de una tabla vinculada para saber cómo acceder).

Dependiendo del gestor de datos, quizá es más sencillo ejecutar una instrucción SQL que modifique el valor predeterminado, en vez de abrir la base de datos. Por ejemplo, para SQL Server:

- https://docs.microsoft.com/es-es/sql/relational-databases/tables/specify-default-values-for-columns?view=sql-server-2017

Y para Access, también se puede hacer con una instrucción SQL. Pero en este caso no se puede usar DAO porque da error. Debemos usar ADO:

- Esto da error: CurrentDb.Execute "ALTER TABLE Clientes ALTER COLUMN Nombre TEXT(50) DEFAULT Pepe"

- Esto funciona: CurrentProject.Connection.Execute "ALTER TABLE Clientes ALTER COLUMN Nombre TEXT(50) DEFAULT Pepe"

Más info en: https://docs.microsoft.com/es-es/office/vba/access/concepts/structured-query-language/modify-a-table-s-design-using-access-sql
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1601
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita rokoko Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: Ayer a las 18:46
Por lo que me dices con el codigo que hemos utilizado para tablas vinculadas con o sin contraseña deberia funcionar no??

Me suelta el error 3251 operacion no valida para este tipo de objeto, linea de error en rojo

Las tablas del servidor estan vinculadas y puedo acceder y editar en ellas sin problemas.
la varible  strTablaOriginal  pilla el nombre de la tabla con el prefijo dbo.  por lo que en principio parece que se conecta bien al servidor sql la funcion, o eso creo

'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
   
 End Function


Editado por rokoko - Ayer a las 18:46
Arriba
Parche Ver desplegable
Habitual
Habitual


Unido: 03/Julio/2018
Localización: Alicante
Estado: Sin conexión
Puntos: 68
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Parche Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: Ayer a las 19:34
Duplicada respuesta.


Editado por Parche - Ayer a las 19:37
Arriba
Parche Ver desplegable
Habitual
Habitual


Unido: 03/Julio/2018
Localización: Alicante
Estado: Sin conexión
Puntos: 68
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Parche Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: Ayer a las 19:35
Publicado originalmente por rokoko rokoko escribió:

Publicado originalmente por Parche Parche escribió:

Hola,

Interesante hilo.

No consigo abrir la BD de la tabla vinculada (uso A2007) dice que  "no se reconoce el formato de la base de datos error.3343"

Saludos.


La acabo de descargar y la abro sin problemas, esta creada con access 2013, pero deberia de ir con 2007, es el misma extension. Que raro.

En el ejemplo mirar tambien que refrencias estan activadas......

Hola,

La Bd Formulario la abro bien, cuando intento abrir la tabla1 sale el error que he puesto.

Las referencias están bien, bueno, no me da error o falta de algo.

La bdTablas me salta el error que he puesto y no deja entrar.

Puesto en C:/ raiz y en la carpeta que viene con la descarga.

Saludos.

Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 829
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pitxiku Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 3 horas 27 minutos a las 18:33
Prueba con esta:

- https://1drv.ms/u/s!AsYMk9OS3HACh1N85hZ4pMKFAiaK

Es lo mismo que ha subido Rokoko, pero con las 2 bases de datos convertidas a mdb. A ver si así no te da el fallo de formato.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 829
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pitxiku Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 3 horas 8 minutos a las 18:52
Publicado originalmente por rokoko rokoko escribió:

Me suelta el error 3251 operacion no valida para este tipo de objeto, linea de error en rojo

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

No dispongo de SQL Server, así que no puedo hacer muchas pruebas. Posibles causas que se me ocurren:

- El usuario con el que accedes al servidor no tiene permisos para cambiar esa propiedad.
- SQL Server no permite cambiar el valor predeterminado mediante esa propiedad del objeto TableDef.
- Si después de conectar, intentas usar el objeto TableDef con otras propiedades, aunque sólo sea para leer su valor, ¿puedes hacerlo?
- Y más causas posibles...

Para SQL Server (y otros gestores), existe otra posibilidad: ejecutar un procedimiento almacenado o una consulta de paso a través para modificar esa propiedad:

- https://docs.microsoft.com/en-us/sql/relational-databases/tables/specify-default-values-for-columns?view=sql-server-2017
- https://www.w3schools.com/sql/sql_default.asp
- https://support.microsoft.com/es-es/help/303968/how-to-create-an-sql-pass-through-query-in-access
- http://www.mvp-access.com/foro/consulta-paso-a-travs-desde-vba_topic73545.html
- https://revistadigital.inesem.es/informatica-y-tics/procedimientos-almacenados-de-sql-server-desde-microsoft-access/
Arriba
 Responder Responder Página  <123
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable