ADO: usar diferentes tablas y queries
Hola, yo de nuevo. Podemos hacer la serie "meddle y sus problemas con el ASP". vaya mierda tios.
En este post tenia unos problemas y los hemos solucionado. Hasta aqui todo bien. Pero debo estar falto de glucosa o algo (seguramente algo: soy un paquete con ASP ADO y su puta madre) :)
bueno, al grano. quiero hacer queries a diferentes tablas dentro del do until. Para eso voy a necesitar usar el WHERE. Por ejemplo.
1. hago select de repro y me devuelve 3800 filas.
2. hago do until para mirarlas todas.
3. en cada paso del do until quiero hacer una select a otra/s tablas usando el valor del campo llamado stockCode (que es comun en todas).
¿alguna alma caritativa me hace y pega el codigo necesario? (como odio pedirlo asi, pero no hay manera)
NECESITO AYUDA DE VERDAD, GRACIAS ;)
meddle
supongamos que tengo esto:
<code>
Dim oConn,stocks,species,families,reproduc,ecology,morphdat,eggs,broodstock
Set oConn = Server.CreateObject("ADODB.Connection")
Set stocks = Server.CreateObject("ADODB.Recordset")
Set reproduc = Server.CreateObject("ADODB.Recordset")
'Abrimos la conexion
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:\RUTA"
' RecordSet reproduc:
reproduc.CursorType = 3
reproduc.CursorLocation = 2
reproduc.LockType = 1
' RecordSet stocks:
stocks.CursorType = 3
stocks.CursorLocation = 2
stocks.LockType = 1
'SELECCIONAMOS TODOS LOS REGISTROS DE LA TABLA REPRODUC:
reproduc.Open "SELECT * FROM REPRODUC",oConn
reproduc.MoveFirst
do until reproduc.EOF
stocks.Open "SELECT * FROM STOCKS WHERE XXX_QUECOÑOPONGOAKI_XXX",oConn
stocks.close
reproduc.MoveNext
loop</code>
donde XXX_QUECOÑOPONGOAKI_XXX deberia ser StockCode (el de stocks) = StockCode (el de la fila devuelta por reproduc en este paso)
gandalias
Para acceder a un campo
recordset("nombrecampo")
EJEMPLO
reproduct("StockCode")
o bien
recordset(numerocampo)
EJEMPLO
reproduct(0) --> Devuelve el primer campo del Select
reproduct(1) --> Devuelve el segundo campo del Select
Para lo que quieres supongo que será algo de esto
stockcodebusca=reproduc("stockcode")
consulta="select * from stocks where StockCode='" & stockcodebusca & "'"
stocks.Open consulta,oConn
De todas formas... Volviendo a otro post lo correcto sería hacer un solo Select con Join y un While con una ruptura de control por el campo SotckCode aunque depende de lo que quieras hacer... Si me da tiempo te preparo esto de la ruptura de control...
Saludos...
gandalias
Como no puedo borrar esta mensaje pongo un bonito adorno navideño
*
:)
meddle
gandalias
De todas formas... Volviendo a otro post lo correcto sería hacer un solo Select con Join y un While con una ruptura de control por el campo SotckCode aunque depende de lo que quieras hacer...
no tengo pelotas de hacer 9 joins en una sola query... aunque estaria bien. ;)
pruebo esto y te cuento
meddle
reproduc('StockCode')
da error de sintaxis ... :(
ok:
reproduc("StockCode") chuta ;)
creo que esto tambien chuta:
reproduc.Fields("StockCode").Value
meddle
a ver, SEGUIMOS :(
Si hago esto<code>reproduc.Open "Select * from REPRODUC", myCxn
reproduc.MoveFirst
Dim reprCount
reprCount = 0
do until reproduc.EOF
stockcodebusca=reproduc("StockCode")
consulta="select * from STOCKS where StockCode='" & reproduc("StockCode") & "'"
response.write(consulta)
response.write("<br>")
reprCount = reprCount + 1
reproduc.MoveNext
loop</code>me lista las 3800 queries que quiero hacer. ejemplo:
<code>select * from STOCKS where StockCode='6509'
</code>
Si quiero realmente ejecutar las queries usariamos esto:
<code>reproduc.Open "Select * from REPRODUC", myCxn
reproduc.MoveFirst
Dim reprCount
reprCount = 0
do until reproduc.EOF
stockcodebusca=reproduc("StockCode")
consulta="select * from STOCKS where StockCode='" & reproduc("StockCode") & "'"
stocks.Open consulta,myCxn 'ABRO CONEXION PARA QUERY
stocks.close 'CIERRO CONEXION PARA QUERY
response.write(consulta)
response.write("<br>")
reprCount = reprCount + 1
reproduc.MoveNext
loop</code>pero se me queja en la linea del stocks.Open consulta,myCxn diciendo: "No coinciden los tipos de datos en la expresión de criterios."
Usuario desconocido
¿Esta definido StockCode de tipo Alfanumerico en la tabla Stocks?
Otra cosa:
si declaras
stockcodebusca=reproduc("StockCode")
usalo en
consulta="select * from STOCKS where StockCode='" & stockcodebusca & "'"
a ver que tal...
gandalias
Invitado era yo
meddle
no, Numerico en las dos tablas.
y no, da el mismo error usando la variable o la expresion.
gandalias
Pues si es numerico quita las comillas en el select
consulta="select * from STOCKS where StockCode=" & stockcodebusca & ""
que te quede asi
select * from STOCKS where StockCode=6509
meddle
bingo !
GRACIAS DE NUEVO.
seguramente volveré mas tarde ;)