listar las tablas
Hola a todos.
He encontrado este código para listar las tablas de una BD, aunque también lista las consultas. Alguien sabe como diferenciar entre unas y otras? Solo me interesaria sacar las tablas..
<%Set cnn1 = server.createobject("ADODB.Connection")
Cnn1.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/database/xxxx.mdb"))
Set oRS = cnn1.OpenSchema(4)
tablax=""
Do Until ors.EOF
if tablax<>ors("TABLE_NAME") then
tablax=ors("TABLE_NAME")
response.write ors("TABLE_NAME") &"<br>"
end if
ors.MoveNext
Loop
ors.Close
cnn1.Close
SET cnn1=nothing
%>
Gracias.
He encontrado este código para listar las tablas de una BD, aunque también lista las consultas. Alguien sabe como diferenciar entre unas y otras? Solo me interesaria sacar las tablas..
<%Set cnn1 = server.createobject("ADODB.Connection")
Cnn1.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/database/xxxx.mdb"))
Set oRS = cnn1.OpenSchema(4)
tablax=""
Do Until ors.EOF
if tablax<>ors("TABLE_NAME") then
tablax=ors("TABLE_NAME")
response.write ors("TABLE_NAME") &"<br>"
end if
ors.MoveNext
Loop
ors.Close
cnn1.Close
SET cnn1=nothing
%>
Gracias.
Chequea el campo TABLE_TYPE del registro. Ahi debe estar almacenado 'TABLE', 'VIEW' y no se que mas.
Si te refieres a intentar algo como:
ors("TABLE_TYPE")
ya lo intenté y no existe la coleccion. TABLE_NAME si, pero TABLE_TYPE no,,,
Alguna otra sugerencia??
Ya está empezando a rayar el tema...
Nadie ha necesitado nunca sacar las tablas de una BD??? Creo que eso ha de ser algo muy comun no?? Como lo hacen??
Muchas Gracias.
ors("TABLE_TYPE")
ya lo intenté y no existe la coleccion. TABLE_NAME si, pero TABLE_TYPE no,,,
Alguna otra sugerencia??
Ya está empezando a rayar el tema...
Nadie ha necesitado nunca sacar las tablas de una BD??? Creo que eso ha de ser algo muy comun no?? Como lo hacen??
Muchas Gracias.
es la priemra vez que tengo que sacar las tablas de una bbdd, y me veo con el mismo problema que tu.
Este es mi código:
Private Sub Form_Load()
Dim itmX As ListItem
Dim rs As New ADODB.Recordset
ListView1.ColumnHeaders.Add , , "Nombre de la Tabla", ListView1.Width
ListView1.View = lvwReport
Set rs = oConexion.OpenSchema(adSchemaTables)
Do Until rs.EOF
Set itmX = ListView1.ListItems.Add(, , rs("TABLE_NAME"))
rs.MoveNext
Loop
rs.Close
End Sub
Me saca el nombre de las tablas y más cosas que no me interesan en absoluto.
Necesito ayuda. Solo quiero los nombres de las tablas!!!!
Este es mi código:
Private Sub Form_Load()
Dim itmX As ListItem
Dim rs As New ADODB.Recordset
ListView1.ColumnHeaders.Add , , "Nombre de la Tabla", ListView1.Width
ListView1.View = lvwReport
Set rs = oConexion.OpenSchema(adSchemaTables)
Do Until rs.EOF
Set itmX = ListView1.ListItems.Add(, , rs("TABLE_NAME"))
rs.MoveNext
Loop
rs.Close
End Sub
Me saca el nombre de las tablas y más cosas que no me interesan en absoluto.
Necesito ayuda. Solo quiero los nombres de las tablas!!!!
Con el ejemplo que he puesto antes, funciona bien. Tan solo tienes que filtrar las tablas del sistema que aparecen, ya que sabemos que todas empiezan con 'MSys'
Tras el filtrado, las que te queden son las físicas.
Un saludo
Tras el filtrado, las que te queden son las físicas.
Un saludo
prueba el valor 20 en la llamada a openschema (adSchemaTables) y deberás tener table type disponible:
adSchemaTables = 20
Set rstSchema = cnn1.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
response.write("Table name: " & rstSchema.fields("TABLE_NAME") & " " & " Table type: " & rstSchema.fields("TABLE_TYPE") & "<br>")
'response.write(rstSchema.fields("TABLE_NAME"))
rstSchema.MoveNext
Loop
rstSchema.Close
cnn1.Close
adSchemaTables = 20
Set rstSchema = cnn1.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
response.write("Table name: " & rstSchema.fields("TABLE_NAME") & " " & " Table type: " & rstSchema.fields("TABLE_TYPE") & "<br>")
'response.write(rstSchema.fields("TABLE_NAME"))
rstSchema.MoveNext
Loop
rstSchema.Close
cnn1.Close
Me funciono sin problemas pero para SQL Server.
Gracias
Dim cnn1
Set cnn1 = Server.CreateObject("ADODB.Connection")
cnn1.Open "Provider=SQLoledb; Server=ARICOM02; catalog=BD; uid=usuario; pwd=clave"
Set oRS = cnn1.OpenSchema(4)
tablax=""
Do Until ors.EOF
if tablax<>ors("TABLE_NAME") then
tablax=ors("TABLE_NAME")
if left(ors("TABLE_NAME"),3) = "ANX" Then
response.write ors("TABLE_NAME") &"<br>"
end if
end if
ors.MoveNext
Loop
ors.Close
cnn1.Close
SET cnn1=nothing
%>
para lo tuyo haz lo contrario, discrimna las consulta agregando un sufijo al comienzo del nombre de la consulta o elimina las consultas del archivo mdb.
Gracias
Dim cnn1
Set cnn1 = Server.CreateObject("ADODB.Connection")
cnn1.Open "Provider=SQLoledb; Server=ARICOM02; catalog=BD; uid=usuario; pwd=clave"
Set oRS = cnn1.OpenSchema(4)
tablax=""
Do Until ors.EOF
if tablax<>ors("TABLE_NAME") then
tablax=ors("TABLE_NAME")
if left(ors("TABLE_NAME"),3) = "ANX" Then
response.write ors("TABLE_NAME") &"<br>"
end if
end if
ors.MoveNext
Loop
ors.Close
cnn1.Close
SET cnn1=nothing
%>
para lo tuyo haz lo contrario, discrimna las consulta agregando un sufijo al comienzo del nombre de la consulta o elimina las consultas del archivo mdb.