Imprimir página | Cerrar ventana

Prefijo DBO. tablas vinculadas

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y Otros sistemas
Descripción del foro: Proyectos ADP & Sql Server, Mysql& Access, MSDE
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=83790
Fecha de impresión: 25/Febrero/2020 a las 01:23


Tema: Prefijo DBO. tablas vinculadas
Publicado por: teogf
Asunto: Prefijo DBO. tablas vinculadas
Fecha de publicación: 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




Respuestas:
Publicado por: Mihura
Fecha de publicación: 22/Junio/2018 a las 10:50
Opción dos .... renombrar las tablas adjuntas.




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

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 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


Publicado por: rokoko
Fecha de publicación: 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


Publicado por: teogf
Fecha de publicación: 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.



Imprimir página | Cerrar ventana