Visual Basic - Ayuda!!!

Life is soft - evento anual de software empresarial
 
Vista:

Ayuda!!!

Publicado por Enrique Monroy (2 intervenciones) el 07/01/2001 00:00:00
Hola, Estoy trabajando con Access 2000 y VB, pero necesito obtener de alguna manera en un recordset la estructura de alguna tabla de access, Ejemplo: Tengo una tabla de CLIENTES en ACCESS y esta tiene 3 campos de tipo Texto con diferentes anchos cada uno, lo que necesito obtener son los nombres de cada campo así como sus tipos de datos y longitudes, ¿Como le hago? ¿Se puede?

Bueno, de cualquier forma les agradezco su ayuda.
Quique,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda!!!

Publicado por Ariopolis (159 intervenciones) el 08/01/2001 00:00:00
Para obtener tipos de datos y longitudes debes abrir un Recordset de la siguiente forma:

Private rsTablas As ADODB.Recordset
Set rsTablas = CN.OpenSchema(adSchemaTables)

El Schema de la conexión CN te ofrece la posibilidad de obtener los nombres de todas las tablas de una base de datos.

Para recoger los nombres de campos en una lista, por ejemplo:

Private rsCampos As ADODB.Recordset
Dim i As Integer
Do Until rsTablas.EOF
Set rsCampos = New ADODB.Recordset
If Left(rsTablas!TABLE_NAME, 2) <> "MS" Then
lstTablas.AddItem rsTablas!TABLE_NAME
rsCampos.Open "select * from " & rsTablas!TABLE_NAME, CN, adOpenKeyset, adLockReadOnly
For i = 0 To rsCampos.Fields.Count - 1
lstCampos.AddItem rsCampos.Fields(i).Name
Next i
End If
Set rsCampos = Nothing
rsTablas.MoveNext
Loop
rsTablas.Close

Con este trozo de código consigues cargar en la lstTablas todas las tablas y en lstCampos todos los campos de todas las tablas (pero esto lo puedes hacer como quieras: cuando hagas doble click en una tabla, que se carguen los campos de dicha tabla en la otra lista mediante el lstTablas.List(lstTablas.ListIndex) en vez del rsTablas!TABLE_NAME).

Si solamente necesitas el tipo de campo y longitud no hay problema:

Private rs As ADODB.Recordset
Dim Tabla As String
Tabla = lstTablas.List(lstTablas.ListIndex)
Set rs = New ADODB.Recordset
rs.Open "select " & lstCampos.List(lstCampos.ListIndex) & " from " & Tabla, cn, adOpenKeyset, adLockReadOnly

MsgBox "Nombre del campo: " & rs.Fields(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

se quedó a medias..

Publicado por Ariopolis (159 intervenciones) el 08/01/2001 00:00:00
MsgBox "Nombre del campo: " & rs.Fields(0).Name & vbCrLf & _
"Tipo de campo: " & TipoDato(rs.Fields(0).Type) & vbCrLf & _
"Tamaño definido: " & rs.Fields(0).DefinedSize, vbInformation, "Información del campo"

De donde TipoDato es una función que devuelve lo siguiente:

Public Function TipoDato(Tipo As DataTypeEnum) As String
Select Case Tipo
Case adBoolean
TipoDato = "Booleano"
Case adChar
TipoDato = "Carácter"
Case adCurrency
TipoDato = "Moneda"
Case adDate
TipoDato = "Fecha"
Case adDecimal
TipoDato = "Decimal"
Case adDouble
TipoDato = "Doble"
Case adGUID
TipoDato = "Identificador único"
Case adInteger
TipoDato = "Entero"
Case adSingle
TipoDato = "Simple"
Case adVarWChar
TipoDato = "Cadena de texto"
End Select
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar