Listar Tablas SQL SERVER en VB5.0
Hola, alquien sabe como listar las tablas que tenga una base de datos en SQL SERVER desde codigo VB 5.0?
Gracias.
Gracias.
Para que puedas probar el siguiente codigo necesitas poner en una forma nueva:
3 comboboxes (comboGroups, comboServers, comboDatabases)
2 listboxes (listTables, listFields)
1 command button (Command1)
y las etiquetas apropiadas para cada uno de los objetos (para identificarlos visualmente al correr el proyecto)...
Necesitas ademas marcar en Referencias en tu proyecto el "Microsfot SQLDMO Object Library"
Tambien necesitas cambiar los valores de las variables cUser y cPasword que se asignan en el Form_Load()
'+++++++++++++++++++++
Dim oApp As New SQLDMO.Application
Dim oServerGroup As SQLDMO.ServerGroup
Dim oRegServer As SQLDMO.RegisteredServer
Dim oServer As SQLDMO.SQLServer
Dim oDatabase As SQLDMO.Database
Dim oTable As SQLDMO.Table
Dim oField As SQLDMO.Column
Dim nCount As Integer
Dim cUser As String
Dim cPassword As String
Private Sub comboDatabases_Click()
If oServer Is Nothing Then
Exit Sub
End If
Me.listTables.Clear
Set oDatabase = oServer.Databases(Me.comboDatabases.List(Me.comboDatabases.ListIndex))
For Each oTable In oDatabase.Tables
Me.listTables.AddItem oTable.Name
Next
If Me.listTables.ListCount > 0 Then
Me.listTables.ListIndex = 0
End If
End Sub
Private Sub comboGroups_Click()
ServerDisconnect
Me.comboServers.Clear
Set oServerGroup = oApp.ServerGroups(Me.comboGroups.List(Me.comboGroups.ListIndex))
For Each oRegServer In oServerGroup.RegisteredServers
Me.comboServers.AddItem oRegServer.Name
Next
If Me.comboServers.ListCount > 0 Then
Me.comboServers.ListIndex = 0
End If
End Sub
Private Sub comboServers_Click()
ServerDisconnect
Me.comboDatabases.Clear
Set oServer = New SQLServer
With oServer
.LoginSecure = False
.AutoReConnect = False
.Connect Me.comboServers.List(Me.comboServers.ListIndex), cUser, cPassword
End With
For Each oDatabase In oServer.Databases
Me.comboDatabases.AddItem oDatabase.Name
Next
If Me.comboDatabases.ListCount > 0 Then
Me.comboDatabases.ListIndex = 0
End If
End Sub
Private Sub Command1_Click()
ServerDisconnect
Unload Me
End Sub
Private Sub Form_Load()
ServerDisconnect
cUser = "sa"
cPassword = "admin"
Me.Show
Me.Refresh
Me.comboDatabases.Clear
Me.comboGroups.Clear
Me.comboServers.Clear
Me.listFields.Clear
Me.listTables.Clear
For Each oServerGroup In oApp.ServerGroups
Me.comboGroups.AddItem oServerGroup.Name
Next
If Me.comboGroups.ListCount > 0 Then
Me.comboGroups.ListIndex = 0
End If
End Sub
Private Sub ServerDisconnect()
If Not oServer Is Nothing Then
oServer.DisConnect
Set oServer = Nothing
End If
End Sub
Private Sub listTables_Click()
If oServer Is Nothing Then
Exit Sub
End If
Me.listFields.Clear
Set oTable = oDatabase.Tables(Me.listTables.List(Me.listTables.ListIndex))
For Each oField In oTable.Columns
Me.listFields.AddItem oField.Name
Next
If Me.listFields.ListCount > 0 Then
Me.listFields.ListIndex = 0
End If
End Sub
'+++++++++++++++++++
3 comboboxes (comboGroups, comboServers, comboDatabases)
2 listboxes (listTables, listFields)
1 command button (Command1)
y las etiquetas apropiadas para cada uno de los objetos (para identificarlos visualmente al correr el proyecto)...
Necesitas ademas marcar en Referencias en tu proyecto el "Microsfot SQLDMO Object Library"
Tambien necesitas cambiar los valores de las variables cUser y cPasword que se asignan en el Form_Load()
'+++++++++++++++++++++
Dim oApp As New SQLDMO.Application
Dim oServerGroup As SQLDMO.ServerGroup
Dim oRegServer As SQLDMO.RegisteredServer
Dim oServer As SQLDMO.SQLServer
Dim oDatabase As SQLDMO.Database
Dim oTable As SQLDMO.Table
Dim oField As SQLDMO.Column
Dim nCount As Integer
Dim cUser As String
Dim cPassword As String
Private Sub comboDatabases_Click()
If oServer Is Nothing Then
Exit Sub
End If
Me.listTables.Clear
Set oDatabase = oServer.Databases(Me.comboDatabases.List(Me.comboDatabases.ListIndex))
For Each oTable In oDatabase.Tables
Me.listTables.AddItem oTable.Name
Next
If Me.listTables.ListCount > 0 Then
Me.listTables.ListIndex = 0
End If
End Sub
Private Sub comboGroups_Click()
ServerDisconnect
Me.comboServers.Clear
Set oServerGroup = oApp.ServerGroups(Me.comboGroups.List(Me.comboGroups.ListIndex))
For Each oRegServer In oServerGroup.RegisteredServers
Me.comboServers.AddItem oRegServer.Name
Next
If Me.comboServers.ListCount > 0 Then
Me.comboServers.ListIndex = 0
End If
End Sub
Private Sub comboServers_Click()
ServerDisconnect
Me.comboDatabases.Clear
Set oServer = New SQLServer
With oServer
.LoginSecure = False
.AutoReConnect = False
.Connect Me.comboServers.List(Me.comboServers.ListIndex), cUser, cPassword
End With
For Each oDatabase In oServer.Databases
Me.comboDatabases.AddItem oDatabase.Name
Next
If Me.comboDatabases.ListCount > 0 Then
Me.comboDatabases.ListIndex = 0
End If
End Sub
Private Sub Command1_Click()
ServerDisconnect
Unload Me
End Sub
Private Sub Form_Load()
ServerDisconnect
cUser = "sa"
cPassword = "admin"
Me.Show
Me.Refresh
Me.comboDatabases.Clear
Me.comboGroups.Clear
Me.comboServers.Clear
Me.listFields.Clear
Me.listTables.Clear
For Each oServerGroup In oApp.ServerGroups
Me.comboGroups.AddItem oServerGroup.Name
Next
If Me.comboGroups.ListCount > 0 Then
Me.comboGroups.ListIndex = 0
End If
End Sub
Private Sub ServerDisconnect()
If Not oServer Is Nothing Then
oServer.DisConnect
Set oServer = Nothing
End If
End Sub
Private Sub listTables_Click()
If oServer Is Nothing Then
Exit Sub
End If
Me.listFields.Clear
Set oTable = oDatabase.Tables(Me.listTables.List(Me.listTables.ListIndex))
For Each oField In oTable.Columns
Me.listFields.AddItem oField.Name
Next
If Me.listFields.ListCount > 0 Then
Me.listFields.ListIndex = 0
End If
End Sub
'+++++++++++++++++++
Gracias por el codigo, funciono perfecto pero tengo una pregunta, este codigo solamente funciona en una maquina que tenga instalado SQL SERVER??
Para el segundo ejemplo no es necesario que el equipo donde pruebas tenga instalado el SQL SERVER ...
Solo asegurarse de que los valores para conexion (Data Source, Initial Catalog, User Id y Password) esten correctos... (Lo acabo de probar en un equipo que no tiene instalado SQL Server, pero si esta correctamente configurado para accesar a la red)...
Incluso lo puedes hacer a traves de un DSN previamente generado en el Control Panel...
En lugar de especificar cada propiedad por separado como te puse en el ejemplo, simplemente usas la propiedad .ConnectionString del objecto Connection...
With oConn
.ConnectionString = "DSN=Server_Name;DATABASE=BaseDeDatosInicial;UID=Usuario;PWD=Password"
.Open
End With
...................
En cuanto al primer ejemplo, dado que utiliza el SQLDMO library, en este caso si se requiere tener instalado el SQL SERVER (Servidor o Cliente)...
Solo asegurarse de que los valores para conexion (Data Source, Initial Catalog, User Id y Password) esten correctos... (Lo acabo de probar en un equipo que no tiene instalado SQL Server, pero si esta correctamente configurado para accesar a la red)...
Incluso lo puedes hacer a traves de un DSN previamente generado en el Control Panel...
En lugar de especificar cada propiedad por separado como te puse en el ejemplo, simplemente usas la propiedad .ConnectionString del objecto Connection...
With oConn
.ConnectionString = "DSN=Server_Name;DATABASE=BaseDeDatosInicial;UID=Usuario;PWD=Password"
.Open
End With
...................
En cuanto al primer ejemplo, dado que utiliza el SQLDMO library, en este caso si se requiere tener instalado el SQL SERVER (Servidor o Cliente)...
Perdon... El string debe ser asi...
"DSN=DSN_Name;DATABASE=BaseDeDatosInicial;UID=Usuario;PWD=Password"
(No confundir el DSN=xxx con el nombre del SQLSERVER...)
"DSN=DSN_Name;DATABASE=BaseDeDatosInicial;UID=Usuario;PWD=Password"
(No confundir el DSN=xxx con el nombre del SQLSERVER...)
Otro ejemplo utilizando ADODB con conexion directa al SQL Server (sin utilizar DSNs) y un recordset ADO ...
Necesitas poner en tu Form:
1 command button (Command1)
1 listbox (list1)
y marcar en Referencias en el proyecto el "Microsoft ActiveX Data Objects" ... Version 2.7 en mi caso...
Por supuesto tienes que cambiar en el Form_Load() los valores para el DataSource, Initial Catalog, User ID y Password por los tuyos propios...
'++++++++++++++
Dim cString As String
Dim oConn As Connection
Dim oRSet As Recordset
Private Sub Command1_Click()
cString = "SELECT * FROM sysobjects WHERE xtype = 'U'"
Set oRSet = New Recordset
oRSet.Open cString, oConn, adOpenDynamic, adLockOptimistic
If Not oRSet.EOF Then
oRSet.MoveFirst
Do While Not oRSet.EOF
List1.AddItem oRSet.Fields("Name")
oRSet.MoveNext
Loop
End If
oRSet.Close
Set oRSet = Nothing
End Sub
Private Sub Form_Load()
Set oConn = New Connection
With oConn
.Provider = "sqloledb"
.Properties("Data Source").Value = "Nombre Del SQL Server"
.Properties("Initial Catalog").Value = "BaseDeDatosEnElSQLServer"
.Properties("User ID").Value = "NombreUsuario"
.Properties("Password").Value = "PasswordUsuario"
.Open
End With
List1.Clear
End Sub
Private Sub Form_Unload(Cancel As Integer)
oConn.Close
Set oConn = Nothing
End Sub
'+++++++++++++++
Necesitas poner en tu Form:
1 command button (Command1)
1 listbox (list1)
y marcar en Referencias en el proyecto el "Microsoft ActiveX Data Objects" ... Version 2.7 en mi caso...
Por supuesto tienes que cambiar en el Form_Load() los valores para el DataSource, Initial Catalog, User ID y Password por los tuyos propios...
'++++++++++++++
Dim cString As String
Dim oConn As Connection
Dim oRSet As Recordset
Private Sub Command1_Click()
cString = "SELECT * FROM sysobjects WHERE xtype = 'U'"
Set oRSet = New Recordset
oRSet.Open cString, oConn, adOpenDynamic, adLockOptimistic
If Not oRSet.EOF Then
oRSet.MoveFirst
Do While Not oRSet.EOF
List1.AddItem oRSet.Fields("Name")
oRSet.MoveNext
Loop
End If
oRSet.Close
Set oRSet = Nothing
End Sub
Private Sub Form_Load()
Set oConn = New Connection
With oConn
.Provider = "sqloledb"
.Properties("Data Source").Value = "Nombre Del SQL Server"
.Properties("Initial Catalog").Value = "BaseDeDatosEnElSQLServer"
.Properties("User ID").Value = "NombreUsuario"
.Properties("Password").Value = "PasswordUsuario"
.Open
End With
List1.Clear
End Sub
Private Sub Form_Unload(Cancel As Integer)
oConn.Close
Set oConn = Nothing
End Sub
'+++++++++++++++