Foros del Web » Programando para Internet » ASP Clásico »

Nombres de columnas ddesde BD

Estas en el tema de Nombres de columnas ddesde BD en el foro de ASP Clásico en Foros del Web. Creo haber visto en alguna parte una forma de obtener dinamicamente los nombres de todos los campos de una base de datos independiendo del numero ...
  #1 (permalink)  
Antiguo 21/10/2004, 10:36
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Nombres de columnas ddesde BD

Creo haber visto en alguna parte una forma de obtener dinamicamente los nombres de todos los campos de una base de datos independiendo del numero de campos que tuviera, pero no recuerdo ni donde lo vi ni como se hacia.¿Sabeis alguno como es?
  #2 (permalink)  
Antiguo 21/10/2004, 10:56
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
For Each campo in objetoRecordset.Fields
Response.Write campo.Name & "<br>"
Next
__________________
...___...
  #3 (permalink)  
Antiguo 21/10/2004, 11:22
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Gracias AL AL ZUWAGA

Última edición por sqa212; 21/10/2004 a las 11:51
  #4 (permalink)  
Antiguo 21/10/2004, 13:06
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Cita:
Iniciado por sqa212
Gracias AL AL ZUWAGA

Maldito!
Antes de la edición de tu mensaje me pasabas el código para que lo revise, porque te salía repetida cada tabla por cada registro que ésta tuviese. Pues, copié el código, me fuí a comer y cuando terminé de comer lo hice... pero parece que ya solucionaste el inconveniente y yo trabajé al pedo

Igual está OK , no era mucho . Era cuestión de sacar, como te habrás dado cuenta, el "while not rscat.eof ... rscat.movenext ... loop"

Igualmente te paso algunas modificaciones y algunos comentarios.
Lo único que modifiqué fue la siguiente línea:

Código:
set rscat=oConn.execute("select * from " & Nombretabla)
por esta:

Código:
set rscat=oConn.execute("select * from [" & Nombretabla & "]")
Porque si la tabla tiene espacios en su nombre, da error (me pasó con una BD que tengo para hacer pruebas). Por ejemplo si la tabla se llama "ME HICISTE TRABAJAR AL PEDO JAJAJAJA", dice que no encuentra la tabla "ME" (todo lo que esté luego del espacio lo ignora). Y se soluciona colocando el nombre de la tabla entre corchetes.

Y como recomendación... parece que la PC donde desarrollás acepta ir pa'trás en los includes y en el server.mappath (con pa'trás me refiero a usar ".." en las rutas). Pues, sacale esa opción porque luego, cuando desarrolles algo que sea para otro servidor que no lo acepte (la mayoría, por cuestiones de seguridad) te va a dar error:


Cita:
Tipo de error:
Páginas Active Server, ASP 0131 (0x80004005)
El archivo de inclusión "../adovbs.inc" no puede utilizar ".." para indicar el directorio primario.
/___Cosas_Mias/sqa212.asp, line 2
Saludos
__________________
...___...

Última edición por AlZuwaga; 21/10/2004 a las 13:09
  #5 (permalink)  
Antiguo 22/10/2004, 00:24
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Lamento haber quitado el codigo, lo solucione de esta forma:
Lo quite porque lo solucione y queria avanzar un poco y poner otro post por si alguien se interesaba en ayudarme a construir este codigo, que creo que puede ser de gran utilidad para todos.(Mira el select!!!).
¿Que te parece esta solución?.
Como vez obtengo todas las tablas con todos sus campos, ahora mi objetivo es lograr hacer algo que me haga las consultas Sql dinamicamente, con sus Inner Join y todo lo demas.
No se aún muy bien como darle forma a eso pero voy a seguir intentandolo.
Si alguien se anima , Bienvenido sea!!

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #INCLUDE File="../adovbs.inc" -->
<%
Dim oConn,rstSchema
Set oConn = Server.CreateObject("ADODB.Connection")
Set rstSchema = Server.createobject("ADODB.Recordset")
oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../basedatos.mdb"))
Set rstSchema = oConn.OpenSchema(adSchemaTables)
%>
<html lang="ES">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table>
<% Do Until rstSchema.EOF%>
<%Nombretabla= rstSchema("TABLE_NAME")%>
<%Tipotabla= rstSchema("TABLE_TYPE")%>
<%if Tipotabla="TABLE" then%>
<%'Es una tabla%>

<b><%=Nombretabla%>:</b>
<input type="checkbox" name="Nombretabla" value="<%=Nombretabla%>">
<hr color="#FF0000" width="600">
<% set rscat=oConn.execute("select TOP 1 * from " & Nombretabla )
while not rscat.eof %><br>
<%For Each campo in rscat.Fields%>

<input type="checkbox" name="<%= campo.Name%>" value="<%= campo.Name%>">
<B><%=campo.Name%></B>
<BR>
<%next%>
<%
rscat.movenext
wend
%>
<br>
<%else%>
<%'No es una tabla%>
<%end if%>
<%
rstSchema.MoveNext
Loop
rstSchema.Close
oConn.Close
%>
</body>
</html>
  #6 (permalink)  
Antiguo 22/10/2004, 11:45
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Je, no se me había ocurrido hacer un TOP 1 para solucionarlo. Es más efectivo porque te trae sólo un registro y no todos los que tenga la tabla

Igual, lo que está en itálica estaría de más en este caso:


Código:
<% set rscat=oConn.execute("select TOP 1 * from [" & Nombretabla & "]")
while not rscat.eof %><br>
<%For Each campo in rscat.Fields%>

<input type="checkbox" name="<%= campo.Name%>" value="<%= campo.Name%>">
<B><%=campo.Name%></B>
<BR>
<%next%>
<%
rscat.movenext
wend
%>
__________________
...___...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:32.