Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/05/2005, 10:40
sqa212
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 22 años
Puntos: 0
u_goldman, aunque quizas te rias de mi llege incluso a probar lo que sugeristes:

For i = 0 to x
Dim "var"&i
Next

Queria hacer exactamente lo que decia mariano_donati generar un array dinamicamente, junto con lo que me sugeririo Neuron_376, usar Redim arrVar(n).

No puse todo el codigo porque intente delimitar el problema, pero parece que he habido una especie
de telepatia cibernetica o algo asi, porque casi averiguais todo sin deciros practicamente nada.

Muzztein, acabo de ver tu mensaje, luego te comento cuando lo pruebe.
Os comento lo que pretendo:

Hay dos archivos: tablasenbd.asp y recogedebd.asp

tablasenbd.asp muestra todas las tablas y campos de la base de datos,confecionando con dichos valores
un formulario en el que se puede seleccionar las tablas y campos que van a enviarse a recogedebd.asp.

recogedebd.asp

El objetivo de este archivo es crear una matrix bidimensional,la primera dimension estara formada por
las columnas de la base de datos que intervienen y la segunda dimension estara formada por
las tablas de la base de datos que intervienen.
Por lo que pienso que deeberia ser matrixbidimensional(tablas que intervienen -1, Numero maximo de columnas que intervienen de una misma tabla -1)
Como dijo u_goldman, Niños, no imiten esto.
Una vez creada la matrixbidimensional, se introducirian en ella sus valores correspondientes.


Finalmente una vez que consiga lo anterior lo que pretendo es generar "EL CODIGO" necesario
para crear "LA SINTEXIS" de formularios,"LA SINTEXIS" de consultas SQl (tanto de Select como de update cuando solo se ha selecionado una tabla),
"LA SINTEXIS" de consultas SQl (de Select cuando se selecionen dos tablas con un campo en comun) tipo:
set rscoleccion=db.Execute("SELECT * FROM colecciones INNER JOIN objetos ON colecciones.idobjeto = objetos.idobjeto"),
etc,etc,etc
Aunque creo que necesitaria una matriz de mas de dos dimensiones, si pasase tambien el tipo de dato de que se trata junto al campo.
Como podreis ver si ejecutais el codigo, ahora mismo no estoy demasiado lejos de crear la matrixbidimensional.

A ver si se os ocurre como deberia enfocarse correctamente el asunto,os invito a que os rompais el coco un poco para ver si esto echa a andar, creo que podria resultar de gran utilidad para todos.


------------------------------------tablasenbd.asp-------------------------------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #INCLUDE File="adovbs.inc" -->
<%Function tipocampobd(strText)
Select Case LCase(strText)
Case ""
strTemp = "VACIO"
Case "3"
strTemp = "Número"
Case "202"
strTemp = "Texto"
Case "203"
strTemp = "Memo"
Case else
strTemp = "DESCONOCIDO"
End Select
tipocampobd = strTemp
End function%>
<%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("basededatos.mdb"))
Set rstSchema = oConn.OpenSchema(adSchemaTables)
%>
<html>
<head></head>
<body>
<form method="post" action="recogedebd.asp">
<table>
<% Do Until rstSchema.EOF%>
<%Nombretablas= rstSchema("TABLE_NAME")%>
<%Tipotabla= rstSchema("TABLE_TYPE")%>
<%if Tipotabla="TABLE" then%>
<b><%=Nombretablas%>:</b>
<input type="checkbox" name="Nombretablas" value="<%=Nombretablas%>">
<hr color="#FF0000" width="600"><br>
<% set rscat=oConn.execute("select * from [" & Nombretablas& "]")%>
<%For Each campo in rscat.Fields%>

<input type="checkbox" name="<%= Nombretablas& "|" & campo.Name%>" value="<%= campo.Name%>">
<%miscampos=campo.Name%>
<B><%=miscampos%></B>&nbsp;&nbsp;
<B style="color:#FF0000"><%=tipocampobd(campo.Type) %></B>
<BR>
<%next%>
<br>
<%end if%>
<%
rstSchema.MoveNext
Loop
rstSchema.Close
oConn.Close
%>
<input type="submit">
</form>
</body>
</html>




------------------------------------recogedebd.asp-------------------------------------------------
<%@ LANGUAGE="VBSCRIPT" %>
<% Function cogenombrecol(txt,deqtabla)
tamatodo=LEN(txt)
tamatabla=LEN(deqtabla)
tamacol=tamatodo-tamatabla
txt = Mid(txt,tamatabla+2,tamacol)
nombrecol = txt
Response.write "<hr><br><FONT color=green><b>" & nombrecol & "</b></FONT>"
End function %>
<% Dim cosa
Dim cuantosvienen
'MiMatrix1 Se asigna un valor a un elemento dentro de la matrix MiMatrix1 en el que almacena el nombre de una tabla.
'MiMatrix2 Se asigna un valor a un elemento dentro de la matrix MiMatrix2 en el que almacena TABLA|COLUMNA.
Dim MiMatrix1
Dim MiMatrix2(100)
delform=""
cuantosvienen=Request.Form.count
Redim MiMatrix1(cuantosvienen)
FOR EACH cosa IN Request.Form
delform=delform & cosa & ","
Response.Write "<hr><br><FONT color=red>" + cosa + "</FONT> = " + Request.Form(cosa)
Next
Response.Write "<H2><FONT color=brown>" & cuantosvienen & "</H2>"
Response.Write "<hr>"
tamano=Len(delform)-1
delform=Left(delform,tamano)
idTablas=Split(Request.Form("Nombretablas"),",")
For i=0 to UBound(idTablas)
Response.Write (i)
Response.Write idTablas(i)& "<BR>"
MiMatrix1(i)=idTablas(i)
Response.write "<br><FONT color=orange>" & MiMatrix1(i) & "<br><br></FONT>"
Next
delform=Replace (delform, "Nombretablas,","")
id=Split(delform,",")
For i=0 to UBound(id)-1
MiMatrix2(i)=id(i)
Response.write "<br><FONT color=blue>" & MiMatrix2(i) & "</FONT>"
Response.Write "<b>" & cogenombrecol(MiMatrix2(i),MiMatrix1(0)) & "</b>"
Response.Write "<BR>"
Next
%>