• Jueves 16 de Mayo de 2024, 22:50

Autor Tema:  Cuantas Tablas Tiene La Base De Datos?  (Leído 3578 veces)

calosoft

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Cuantas Tablas Tiene La Base De Datos?
« en: Sábado 15 de Octubre de 2005, 00:35 »
0
hola, estoy desarrolando un programita, donde tengo un combo y quiero que en ese combo aparescan los nombres de las tablas de mi base de datos.
mi base de datos esta en access, y las tablas se van generando con otros procesos del programita. alguien me puede ayudar?, y si saben como se hace esto, me lo podrian decir como se hace en sql server 2000

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantas Tablas Tiene La Base De Datos?
« Respuesta #1 en: Sábado 15 de Octubre de 2005, 00:50 »
0
mmmmm hola yo tambien busco lo mismo carlosoft me acuerdo que tenia el codigo guardado en el servidor de mi universidad pero tuvo un fallo y lo tuvieron que formatear y ahora no se que hacer :P, lo peor es que ya no me acuerdo de como hacerlo  :unsure: si alguien sabe como hacerlo le pido de favor que lo pase plz

Widark

  • Miembro MUY activo
  • ***
  • Mensajes: 246
    • Ver Perfil
Re: Cuantas Tablas Tiene La Base De Datos?
« Respuesta #2 en: Sábado 15 de Octubre de 2005, 01:07 »
0
Que tal!

Código: Text
  1. Dim Cnx As ADODB.Connection
  2. Dim pth As String          'Database Path
  3. Dim Ctl    As ADOX.Catalog 'Database Catalog from Actual Connection
  4. Dim CtlTbl As ADOX.Table
  5. Dim Col    As ADOX.Column
  6. Dim sGen As String
  7. Dim i    As Integer
  8. Dim j    As Integer
  9. Dim k    As Integer
  10.  
  11. Private Sub cmdConectar_Click()
  12. On Error GoTo ErrGetPath
  13.  
  14.   ' Establece CancelError a Verdadero
  15.   cdlBasedatos.CancelError = True
  16.   ' Establece banderas
  17.   cdlBasedatos.Flags = cdlOFNHideReadOnly
  18.   ' Establece filtros
  19.   cdlBasedatos.Filter = "All Files(*.*)|*.*|Access 2000 DB (*.mdb)|*.mdb"
  20.   ' Especifica filtro por defecto
  21.   cdlBasedatos.FilterIndex = 2
  22.   cdlBasedatos.ShowOpen
  23.   pth = cdlBasedatos.FileName
  24.   If LenB(pth) > 0 And LenB(Dir(pth)) > 0 Then
  25.     Coneccion
  26.     If Not (Cnx Is Nothing) Then
  27.       LlenaTabla
  28.     End If
  29.   End If
  30.   Exit Sub
  31.  
  32. ErrGetPath:
  33.   'User pressed the Cancel button
  34.   pth = vbNullString
  35. End Sub
  36.  
  37. Sub Coneccion()
  38.  
  39.   On Error GoTo CnnError
  40.   Dim strCnn As String
  41.  
  42.   strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;"
  43.   strCnn = strCnn & "Data Source=" & pth & ";"
  44.   strCnn = strCnn & "Jet OLEDB:Engine Type=5;"
  45.  
  46.   Set Cnx = New ADODB.Connection
  47.   Cnx.Open strCnn
  48.   Exit Sub
  49.  
  50. CnnError:
  51. Dim psw As String
  52.  
  53.   Select Case Err
  54.     Case Is = -2147217843 'Database password incorrect
  55.       psw = ObtainPassword
  56.       strCnn = vbNullString
  57.       strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;"
  58.       strCnn = strCnn & "Data Source=" & pth & ";"
  59.       strCnn = strCnn & "Jet OLEDB:Engine Type=5;"
  60.       strCnn = strCnn & psw
  61.       If LenB(psw) = 0 Then
  62.         Resume Next
  63.       Else
  64.         Resume
  65.       End If
  66.     Case Else
  67.       MsgBox "Error Number : " & Err & vbCrLf & Error, vbCritical, Err.Source
  68.       End
  69.   End Select
  70. End Sub
  71.  
  72. Sub LlenaTabla()
  73.  
  74.   On Error GoTo ErrorTab
  75.  
  76.   Screen.MousePointer = vbHourglass
  77.  
  78.   Set Ctl = New ADOX.Catalog
  79.   Ctl.ActiveConnection = Cnx
  80.   i = 0
  81.   'Table Definitions
  82.   For Each CtlTbl In Ctl.Tables
  83.     If CtlTbl.Type = "TABLE" Then
  84.       lstTablas.AddItem CtlTbl.Name
  85.     End If
  86.   Next
  87.  
  88.   Screen.MousePointer = vbDefault
  89.   Exit Sub
  90.  
  91. ErrorTab:
  92.   MsgBox Err.Description, vbCritical
  93.   Screen.MousePointer = vbDefault
  94. End Sub
  95.  
  96. Private Function ObtainPassword() As String
  97.  
  98.   Dim psw As String
  99.  
  100.   psw = vbNullString
  101.  
  102.   Do While Len(psw) = 0
  103.     frmLogin.Show vbModal
  104.     psw = frmLogin.Password
  105.     If frmLogin.NoMore Then
  106.       ObtainPassword = vbNullString
  107.       Exit Do
  108.     End If
  109.   Loop
  110.   If Len(psw) > 0 And (Not frmLogin.NoMore) Then
  111.     ObtainPassword = ";Jet OLEDB:Database Password=" & psw & ";"
  112.     Unload frmLogin
  113.   Else
  114.     MsgBox "Entre el password correcto.", vbExclamation
  115.     ObtainPassword = vbNullString
  116.     Set Cnx = Nothing
  117.     Unload frmLogin
  118.   End If
  119. End Function
  120.  
Este es un ejemplo que descargue de freecode y utiliza ADOX. Este es con DAO
Código: Text
  1. Private Sub cmdBasedatos_Click()
  2. Dim tblObj As TableDef
  3. On Error GoTo errCancelCommon
  4.     Abierto = False
  5.     Adiciono = False
  6.     cdlBasedatos.CancelError = False
  7.     cdlBasedatos.ShowOpen
  8.     If Len(cdlBasedatos.FileName) <> 0 Then
  9.         cmdCodigos.Enabled = True
  10.         On Error Resume Next
  11.         Set Cnx = New ADODB.Connection
  12.         With Cnx
  13.             For i = 0 To 5 Step 0.1
  14.                 .CursorLocation = adUseClient
  15.                 .ConnectionString = "Provider=Microsoft.Jet.OLEDB." & Replace(Format(i, "0.0"), ",", ".") & ";Persist Security Info=False;Data Source=" & cdlBasedatos.FileName & ";Jet OLEDB:Database Password=;"
  16.                 .Open
  17.                 If .State = 1 Then Exit For
  18.             Next
  19.             If .State = 0 Then
  20.                 MsgBox "No se encontró una versión adecuada para iniciar el motor de la BD.", vbCritical, "Error al iniciar"
  21.                 .Close
  22.                 End
  23.               Else
  24.                 Abierto = True
  25.                 cmbTablas.Clear
  26.                 'Abró la base de datos y lo asigno a la variable
  27.                 Set gdbCurrentDB = DBEngine.OpenDatabase(cdlBasedatos.FileName, False, False, ";pwd=")
  28.                
  29.                 For Each tblObj In gdbCurrentDB.TableDefs
  30.                     If (tblObj.Attributes And dbSystemObject) = 0 Then 'Valido que las tablas no sean del sistema, adiciono al combo
  31.                         cmbTablas.AddItem tblObj.Name
  32.                     End If
  33.                 Next
  34.             End If
  35.         End With
  36.     End If
  37.     Exit Sub
  38. errCancelCommon:
  39.    
  40. End Sub
  41.  
Espero les sirva
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
NoSolocodigo --> Blog de Articulos

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantas Tablas Tiene La Base De Datos?
« Respuesta #3 en: Martes 18 de Octubre de 2005, 00:13 »
0
Thanx Widark :) lo probare, espero me funcione

calosoft

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Cuantas Tablas Tiene La Base De Datos?
« Respuesta #4 en: Martes 18 de Octubre de 2005, 22:54 »
0
gracias Widark, me salvaste de una, funciona el primer codigo, el segundo nu lo probe, te pasaste won  :smartass:

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantas Tablas Tiene La Base De Datos?
« Respuesta #5 en: Jueves 20 de Octubre de 2005, 20:17 »
0
les agrego el code que dije que tenia :)
Código: Text
  1.  
  2. Private Sub EnumerarTablas()
  3.     Dim Db As Database
  4.     Dim Td As TableDef
  5.  
  6.     List1.Clear
  7.     Set Db = OpenDatabase("D:\VB\Biblio.MDB")
  8.     For Each Td In Db.TableDefs
  9.         'Sólo las tablas con atributo igual a CERO,
  10.         'son tablas normales
  11.         If Td.Attributes = 0 Then
  12.             List1.AddItem Td.Name
  13.         End If
  14.     Next
  15.     Db.Close
  16.     Set Db = Nothing
  17. End Sub
  18.  

 :kicking:

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Cuantas Tablas Tiene La Base De Datos?
« Respuesta #6 en: Jueves 20 de Octubre de 2005, 23:48 »
0
Perdon olvide incluir la fuente :P sino diran que soy pirata jejeje, lo consegi en El guille :kicking: