Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/12/2007, 08:12
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Re: Consulta y Subconsulta a BD

Finalmente no he podido hacerlo como me decía Shiryu_Libra, por varias razones:

El subindice caía fuera del intervalo cuando encontraba a un hijo
La matríz tenía que ser de 12 dimensiones
Quería página los resultados
etc...
así que lo dejé por un tiempo y ayer se me ocurrió un forma tosca pero funciona

Código PHP:
Recogo el valor del form
Hago un Split

Call ConectarForo
Call Registro 
(rs)

' Con las subcadena inicio la consulta

SQL = "Select IdMensaje, Cabecera, Padre, Cuerpo, Fecha FROM Mensajes WHERE "
For i=0 to (UBound(array_cadena))
if i <> 0 then 
SQL = SQL & "OR "
end if
SQL = SQL & "LCase(Cuerpo) LIKE  '
%"&Espacio & array_cadena(i) & Espacio&"%'  "
Next '
i
SQL 
SQL "ORDER BY Fecha desc;"

rs.Open SQLoConn,3,1

IF rs.EOF then ' No se han contrado registros
%>
No se ha encontrado nada
<%
ELSE ' 
Se encontraron registros

' ====== Saca Id's de registros encontrados 
Dim registros
Dim suma
registros
=rs.getrows
suma 
UBound(registros,2)+1
' ====== Fin Saca Id's de registros encontrados 

Call LimpiarRS 
(rs)

' ========= Elimino los registros repetetidos en la consulta anterior ===============
Dim iniValores()
Dim limValores()
Redim iniValores(suma)

    For j=0 to UBound(registros,2)
    iniValores(j) =registros(IdCabecera,j)
    Next '
j

redim preserve limValores
(1)
limValores(0)=iniValores(0)

        For 
x=0 to (UBound(iniValores)-1)
Dim resultado
resultado
=0
    
For y=0 to (ubound(limValores)-1)
    
resultado=StrComp(iniValores(x),limValores(y),1)
    if (
resultado=0then 
    
exit for
    
end if
    
Next 'y
        if(resultado<>0)then
        redim preserve limValores(ubound(limValores)+1)
        limValores(ubound(limValores)-1)=iniValores(x)
        end if
        Next '
x
' ========= Fin Elimino los registros repetetidos ===============

Call Registro (rs1)

Consulta sobre las Ids resultantes

SQL 
"Select IdMensaje, Fecha FROM Mensajes WHERE "

 
For z=0 to (UBound(limValores)-1)
if 
<> 0 then
SQL 
SQL "OR "
end if
SQL SQL "IdMensaje = "CInt(limValores(z)) & " "
Next ' z
SQL = SQL & "ORDER BY Fecha desc;"
rs1.Open SQL, oConn,3,1

====== Saca Id's de registros encontrados 
Dim resulfinal
resulfinal=rs1.getrows
====== Fin Saca Id's de registros encontrados 

Call LimpiarRS (rs1)
Call LimpiarConexion

'
========== Imprime lista registros encontrados ==========
For 
z=0 to UBound(resulfinal,2)
%>
Listado de registros
<%
Next 'z
==== Fin imprime lista registros encontrados  ========
%> 
Esto es todo
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />