Mensaje enviado por "Percy Oswaldo" <ariano76@hotmail.com>
Encontre la solucion a este problema, aquien le interese remito el codigo.... La clave esta en untilizar el OpenSchema del Objeto Connection, si alguien tiene alguna duda remitirla a mi correo personal... Es mi primera contribucion para con la lista. Saludos desde Lima - Perú
Option Explicit
Dim Con As New ADODB.Connection
Dim Rec As New ADODB.Recordset
Dim pSql$
Dim Fld As ADODB.Field
Function TipoCampo(ByVal intTipo As Integer) As String
Select Case intTipo
Case 2 'adSmallInt
TipoCampo = "Entero"
Case 3 'adInteger
TipoCampo = "Entero Largo"
Case 4 'adSingle
TipoCampo = "Entero Simple"
Case 5
TipoCampo = "adDouble"
Case 6 'adCurrency
TipoCampo = "Moneda"
Case 7 'adDate
TipoCampo = "Fecha/Hora"
Case 8
TipoCampo = "adBStr"
Case 11 'adBoolean
TipoCampo = "Boolean"
Case 12
TipoCampo = "adVariant"
Case 200 'adVarChar"
TipoCampo = "Texto"
Case 201 'adLongVarChar"
TipoCampo = "Memo"
Case 204
TipoCampo = "adVarBinary"
Case 205 'adLongVarBinary
TipoCampo = "Objeto Ole"
End Select
End Function
Private Sub Combo1_Click()
Dim Fila%, Colum%, j As Byte
pSql$ = "Select * from [" & Trim(Combo1.List(Combo1.ListIndex)) & "]"
Me.Caption = "Estructura de la Tabla :" & " " &
Combo1.List(Combo1.ListIndex)
Rec.Open pSql$, Con
If MSFlxG.Rows > 2 Then
For j = 3 To MSFlxG.Rows
MSFlxG.RemoveItem (MSFlxG.Rows)
Next j
End If
With MSFlxG
Fila% = 1
For Each Fld In Rec.Fields
If Fila% < 2 Then
.Row = Fila%
Else
.Rows = .Rows + 1
.Row = .Rows - 1
End If
Colum% = 0
.Col = .Cols - 3
.Text = Fld.Name
.Col = .Cols - 2
.Text = TipoCampo(Fld.Type)
.Col = .Cols - 1
.Text = Fld.DefinedSize
Fila% = Fila% + 1
Next Fld
End With
Rec.Close
End Sub
Private Sub Form_Load()
With Con
.Provider = "Microsoft.Jet.OleDB.3.51"
.ConnectionString = "Data Source=C:\Archivos de
programa\DevStudio\VB\Nwind.mdb"
.CursorLocation = adUseClient
.Open , "admin"
End With
'xxxxxxxxx
Set Rec = Con.OpenSchema(adSchemaTables)
'xxxxxxxxx
With Rec
While Not .EOF
If .Fields("TABLE_TYPE") = "TABLE" Then
If Left(Trim(.Fields("TABLE_NAME")), 4) <> "MSys" Then
Combo1.AddItem .Fields("TABLE_NAME")
End If
End If
.MoveNext
Wend
End With
Rec.Close
End Sub
Private Sub Form_Unload(Cancel As Integer)
Con.Close
Set Rec = Nothing
Set Con = Nothing
End Sub