For Each Access Select Case

Tengo bases de access vinculadas a SQL, preciso renombrar las tablas sin el dbo,

Hice este formulario y funciona a medias:

Private Sub Comando0_Click()
If MsgBox("Está a punto de renombrar las tablas, procede ?", vbYesNo, "Sistema Procesos") = vbYes Then
Dim Tbl As AccessObject
For Each Tbl In CurrentData.AllTables
Select Case Tbl.Name
Case "dbo_UserVentModulo"
DoCmd.Rename "UserVentModulo", acTable, "dbo_UserVentModulo"
MsgBox " Se renombró UserVentModulo "
Case "dbo_VdUSERObjetosPermisos"
DoCmd.Rename "VdUSERObjetosPermisos", acTable, "dbo_VdUSERObjetosPermisos"
MsgBox " Se renombró dbo_VdUSERObjetosPermisos "
Case "dbo_VcUserVentanasOBJ"
DoCmd.Rename "VcUserVentanasOBJ", acTable, "dbo_VcUserVentanasOBJ"
MsgBox " Se renombró dbo_VcUserVentanasOBJ "
Case "dbo_VbUSERVentanasPermisos"
DoCmd.Rename "VbUSERVentanasPermisos", acTable, "dbo_VbUSERVentanasPermisos"
MsgBox " Se renombró dbo_VbUSERVentanasPermisos"
Case "dbo_VaUserVentana"
DoCmd.Rename "VaUserVentana", acTable, "dbo_VaUserVentana"
MsgBox " Se renombró dbo_VaUserVentana"
Exit For
End Select

Next Tbl

End If
End Sub

El problema que tengo, es que en vez de renombrar todos de una vez, solo lo hace de a uno. Y se hace muy lento.

No entiendo porque no continua el for each hasta terminar con todas las bases.

1 respuesta

Respuesta
1

No se complique ingrese esta función y llámela desde la ventana de inmediato:

Function EliminaPrefijo(schemaname As String)
    'Elimina el prefijo de una tabla por ejemplo public
    '--EJEMPLO Usar desde la venta de inmediato como -
    '--  StripSchemaName "dbo"
    Dim tdf As Object
    Dim I As Integer
    For Each tdf In CurrentDb.TableDefs
        If Left(tdf.Name, Len(schemaname)) = schemaname Then
            tdf.Name = Mid(tdf.Name, Len(schemaname) + 2)
        End If
    Next
    MsgBox "Terminado ", vbInformation, "Renombrando.."
End Function

Me funciona perfecto para suprimir "public" en tablas de PostgreSQL, para SQLServer solo llámela así:

¿

? EliminaPrefijo("dbo")

Es ? EliminaPrefijo("dbo_")

¡Gracias! 

Si debo eliminar dbo_

Ud. Disculpe, pero soy novato

Como llamo a la función

Agregue un botón de comando y programe el evento Al hacer clic. Esciba;

Call EliminaPrefijo("dbo_")

Pero la función debe estar en un modulo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas