ASP - Select a varias tablas .asp

 
Vista:

Select a varias tablas .asp

Publicado por mikel (2 intervenciones) el 10/04/2007 13:20:16
Buenos dias quisiera hacer un select para que me haga una busqueda en una base de datos a todas las tablas pero me da un error.
El error me dice :

Microsoft JET Database Engine (0x80004005)
Puede que el campo 'nombre' especificado haga referencia a más de una tabla de las mostradas en la cláusula FROM de la instrucción SQL.
/copia de panel/bdconsultar.asp, línea 20

La cosa es que tengo todas las tabalas con los mismo campos.
Nombre PVP y caracteristicas.

Es como si no me dejaria hacer una busqueda en todas ellas.Falla por que hay registros que se repiten o porque hay que algo de codigo que me comido.

Gracias anticipadas!!!(os dejo el codigo)


<html>
<head>
<TITLE>Actualizar Tarjeta Grafica</TITLE>
</HEAD>
<BODY bgcolor="#FEFAE0">
<p><font face="Tahoma" size="2">Resultados obtenidos con <strong><%=Request("Palabra") %></strong></font></p>
<%
'====================================================================================
'Ejemplos de Base de Datos --- Carlos de la Orden Dijs --- www.aspfacil.com -- Mar/01
'====================================================================================
Dim oConn, rs, SQL
Dim nombre
'Creo el objeto Connection
Set oConn=Server.CreateObject("adodb.connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("/data/mibase.mdb")&";"

SQL="Select * From cajas,antivirus... Where UCase(nombre) like '%" & UCase(Request("palabra")) & "%'"

set rs = oConn.Execute(SQL)

'¿Esta vacío?
if rs.EOF then
Response.Write("No hay ningún registro en esta tabla")
else
'Llamo al procedimiento que pinta la tabla
PintarTabla
end if


'Cierro el Recordset
rs.Close
'Destruyo el objeto
set rs = nothing
'Cierro la conexión
oConn.Close
'Destruyo la conexión
set oConn = nothing

'===========================================
Sub PintarTabla ()
'Utiliza el objeto rs abierto
'para pintar la tabla

'La primera fila la escribo directamente, con
'los nombres de los campos
Response.Write( "<TABLE BORDER=""1"">" & vbCrlf)
Response.Write( "<TR>" & vbCrlf)
Response.Write( "<TD><B>Nombre</B></TD>" & vbCrlf )
Response.Write( "<TD><B>PVP</B></TD>" & vbCrlf )
Response.Write( "<TD><B>Caracteristicas</B></TD>" & vbCrlf )

'Hasta que llegue al final del recordset...
while not rs.EOF
'Imprimo una fila de la tabla
'para cada registro que encuentre
Response.Write( "<TR>" & vbCrlf )
Response.Write( "<TD>" & rs.Fields("Nombre") & "</TD>" )
Response.Write( "<TD>" & rs.Fields("PVP") & "</TD>" )
Response.Write( "<TD>" & rs.Fields("caracteristicas") & "</TD>" )
Response.Write( "</TR>" & vbCrlf )
'MUY IMPORTANTE!!!!!
'Pasamos al siguiente registro
rs.MoveNext
'Olvidarte esto significa que vas a imprimir
'siempre el mismo registro... Un bucle infinito!
wend
'Cierro la tabla
Response.Write("</TABLE>")

End Sub 'PintarTabla
'===========================================
Sub Mantenimiento
'Para mantener la tabla en un tamaño manejable...
rs.Open SQL, oConn, 1, 2
'RecordCount me devuelve el nº de registros
iCuantos = rs.RecordCount

'Si tengo más de 12, voy borrando...
while iCuantos > 12

rs.MoveFirst
rs.Delete
rs.Update
iCuantos = iCuantos - 1

wend
'Ahora si, cierro el Recordset
rs.Close
End Sub
%>
</BODY>
</HTML>



He probado a hacer una select por cada tabla y si me sale pero seria una locura y exceso de codigo....

----CAJAS----
SQL="Select * From cajas Where UCase(nombre) like '%" & UCase(Request("palabra")) & "%'"

set rs = oConn.Execute(SQL)

'¿Esta vacío?
if rs.EOF then
Response.Write("No hay ningún registro en esta tabla")
else
'Llamo al procedimiento que pinta la tabla
PintarTabla
end if



----ANTIVIRUS---
SQL="Select * From antivirus Where UCase(nombre) like '%" & UCase(Request("palabra")) & "%'"

set rs = oConn.Execute(SQL)

'¿Esta vacío?
if rs.EOF then
Response.Write("No hay ningún registro en esta tabla")
else
'Llamo al procedimiento que pinta la tabla
PintarTabla
end if




eskerrik asko!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder