** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - Prefijo DBO. tablas vinculadas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoPrefijo DBO. tablas vinculadas

 Responder Responder
Autor
Mensaje
teogf Ver desplegable
Asiduo
Asiduo


Unido: 09/Febrero/2007
Localización: España
Estado: Sin conexión
Puntos: 441
Enlace directo a este mensaje Tema: Prefijo DBO. tablas vinculadas
    Enviado: 22/Junio/2018 a las 09:26
Hola a todos,

Por necesidades de la empresa estoy empezando a cambiar ciertas aplicaciones que trabajan tanto el front-end como el back-end con Access. 

Ahora el back lo tengo que tratar en SQL SERVER, y que hasta la fecha nunca he la he manejado (solo MariaDb). El asunto es que tras importar las tablas de Access a SQL SERVER me antepone el prefijo "dbo.", que para postre es el mismo que luego me aparece a la hora de vincular las tablas al front de Access. Existe alguna configuración desde SQL SERVER para que no le coloque este prefijo, ya que mis objetos dentro del front hacen referencia a tblMiTabla y no a dbo.tblMiTabla (y en algunos front tengo hasta 200 objetos entre formularios, consultas, informes, modulos...).

Otra opción sería realizar una rutina que recorra la colección TableDefs y modificase el nombre de cada una de las tablas. Me tocaría correr la rutina todas las veces que tenga que vincular tablas nuevas...

Existe alguna solución mejor??

Saludos.

Teo

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 10283
Enlace directo a este mensaje Enviado: 22/Junio/2018 a las 10:50
Opción dos .... renombrar las tablas adjuntas.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1397
Enlace directo a este mensaje Enviado: 30/Junio/2018 a las 22:22
yo saque de una pagina de Microsoft una funcion que vincula las tablas de un sql.server pillando los nombres de las tablas de una tabla locall con los nombfes de estas sin el dbo si asi lo quieres, le metes los datos de acceso al sevidor y te hace todo automáticamente..... si no lo logras en unos dias estare por casa y te la paso... Saludos
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1397
Enlace directo a este mensaje Enviado: 04/Julio/2018 a las 22:28
Aqui la tienes.

'//Name     :   AttachDSNLessTable'//Purpose  :   Create a linked table to SQL Server without using a DSN
'//Parameters
'//     stLocalTableName: Name of the table that you are creating in the current database
'//     stRemoteTableName: Name of the table that you are linking to on the SQL Server database
'//     stServer: Name of the SQL Server that you are linking to
'//     stDatabase: Name of the SQL Server database that you are linking to
'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'//     stPassword: SQL Server user password




Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)




    On Error GoTo AttachDSNLessTable_Err
    Dim td As TableDef
    Dim stConnect As String
   
    For Each td In CurrentDb.TableDefs
        If td.Name = stLocalTableName Then
            CurrentDb.TableDefs.Delete stLocalTableName
        End If
    Next
   
   
     
    If Len(stUsername) = 0 Then
        '//Use trusted authentication if stUsername is not supplied.
       
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"  
       
       
    Else
        '//WARNING: This will save the username and the password with the linked table information.
       
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword 
       
       
    End If
    Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
    CurrentDb.TableDefs.Append td
    AttachDSNLessTable = True
    Exit Function

AttachDSNLessTable_Err:
   
    AttachDSNLessTable = False
    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description

End Function




Asi le pasaba yo los nombres de cada tabla vinculada desde una tabla local en una primera version

If DLookup("Activo", "tbLOCALServidorSQL-Server", "id=1") = True Then
Dim var1 As String
var1 = DLookup("NombreTabla", "tbLOCALServidorSQL-Server", "id=1")

If AttachDSNLessTable(var1, var1, Me.Servidor, Me.BaseDatos, Me.Usuario, Me.Contraseña) Then
        '// All is okay.
        'MsgBox " Vinculacion correcta"
        Else
        '// Not okay.
        MsgBox " Vinculacion incorrecta de la tabla " & var1 & " el proceso de vinculacion se detendra"
       
        Exit Sub
    End If
End If

En una segunda version pillaba los datos mediante un recordset y hacia un bucle hasta vincular todas las tablas..

saludos
Arriba
teogf Ver desplegable
Asiduo
Asiduo


Unido: 09/Febrero/2007
Localización: España
Estado: Sin conexión
Puntos: 441
Enlace directo a este mensaje Enviado: 12/Julio/2018 a las 09:54
Hola a todos,

Agradezco vuestro interés. La solución más sencilla, una vez que he vinculado las tablas, es pasarle la siguiente rutina:

Public Sub eliminaPrefijoDBO()
On Error GoTo fin

Dim obj As AccessObject
Dim dbs As Object
 
    Set dbs = Application.CurrentData
 
   For Each obj In dbs.AllTables
       If Left(obj.Name, 4) = "dbo_" Then
            DoCmd.Rename Mid(obj.Name, 5), acTable, obj.Name
        End If
    Next obj

Exit Sub

fin:
    MsgBox Err.Description & " " & Err.Number
    Resume Next
 End Sub

Se puede cerrar el hilo.


Editado por teogf - 12/Julio/2018 a las 09:54
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable