Hola,
Me preguntaba si es posible crear un Ananlizador de Consultas con ASP
Algo simplecito que permita ejecutar una consulta y que despleque los resultados.
Vi algo parecido en http://www.sqlmax.com/centro/analizador.asp
Se puede?
| ||||
Query Analizer con Asp? Hola, Me preguntaba si es posible crear un Ananlizador de Consultas con ASP Algo simplecito que permita ejecutar una consulta y que despleque los resultados. Vi algo parecido en http://www.sqlmax.com/centro/analizador.asp Se puede? |
| ||||
Re: Query Analizer con Asp? que tal Myakire, gracias por responder. Solo me quedan dos dudas: 1. cual seria la forma mas optima de atrapar el error? 2. como desplego la cantidad de columnas de una tabla de manera dinamica? ME explico: Suponiendo que la tabla1 tiene 5 columnas y la tabla2 8 Si hago un Select * como tendria que hacerlo para desplegar las columnas?? (suponiendo que desconozco los nombres y además la cantidad de las mismas) Cita: <% On error Resume Next Sql = "SELECT * FROM Tabla1 (NOLOCK)" Set Rs = con.Execute(Sql) if not Rs.EOF then while not Rs.EOF 'aqui desplegariamos el nombre de la columna y sus datos rs.Movenext wend end if Set Rs = nothing if err.number <> 0 or err.number <> "" then response.write err.description end if %> Última edición por pcarvajal; 04/03/2008 a las 09:11 |
| ||||
Re: Query Analizer con Asp? Para lo de las columnas, sería con algo como esto (claro que hay que retocarlo):
Código:
<table border=1> <% while not rs.eof %><tr><% for i=0 to rs.fields.count-1 %><td><%=rs(i)%><% next rs.movenext wend %> </table> |
| ||||
Re: Query Analizer con Asp? ok, hasta aquí solo me quedan 2 observaciones: Cita: 1. No se deslegan el nombre de las columnas<% On error Resume Next Sql = "SELECT * FROM Tabla1 (NOLOCK)" Set Rs = con.Execute(Sql) if not Rs.EOF then %> <table border=1> <% while not Rs.EOF %> <tr> <% for i=0 to rs.fields.count-1 response.write "<td>" & rs(i) & "</td>" next %> </tr> <% rs.Movenext wend %> </table> <% end if Set Rs = nothing if err.number <> 0 or err.number <> "" then response.write err.description end if %> 2. Si hay campos NULL tampoco los muestra |
| ||||
Re: Query Analizer con Asp? jaja ok,ok mira, "retocado" me queda así: Cita: ahora solo me falta agregarle el nombre de las columnas y estamos <% On error Resume Next Sql = "SELECT * FROM MiTabla (NOLOCK)" Set Rs = con.Execute(Sql) if not Rs.EOF then %> <table border=1> <% while not Rs.EOF %> <tr> <% for i=0 to rs.fields.count-1 if isnull(rs(i)) = false then response.write "<td>" & rs(i) & "</td>" else response.write "<td> </td>" end if next %> </tr> <% rs.Movenext wend %> </table> <% end if Set Rs = nothing if err.number <> 0 or err.number <> "" then response.write err.description end if %> ![]() como puedo hacer eso? ![]() |
| ||||
Re: Query Analizer con Asp? listo! finalmente se me iluminó ![]() asi quedó al final: Cita: lo dejo aqui por si a alguien le sirve, y dicho sea de paso, si alguien quiere meterle mano y arreglarlo más, que lo haga y lo vuelva a postear <% On error Resume Next Sql = "SELECT * FROM MiTabla (NOLOCK)" Set Rs = con.Execute(Sql) if not Rs.EOF then %> <table border=1> <tr> <% for i=0 to rs.fields.count-1 response.write "<td>" & rs(i).name & "</td>" next %> </tr> <% while not Rs.EOF %> <tr> <% for i=0 to rs.fields.count-1 response.write "<td>" if isnull(rs(i)) = false then response.write rs(i) else response.write " " end if response.write "</td>" next %> </tr> <% rs.Movenext wend %> </table> <% end if Set Rs = nothing if err.number <> 0 or err.number <> "" then response.write err.description end if %> ![]() Gracias Myakire, Saludos! ![]() |
| |||
Re: Query Analizer con Asp? Tambien podrias puedes mostrar el nombre de cada columna SQL server
Código:
ORACLEadSchemaTables = 20 adSchemaColumns = 4 set rs = conexion.OpenSchema(adSchemaTables,Array(null,null,null,"TABLE")) do while not rs.eof tabla = rs("table_name") response.write "tabla = " & tabla & "<br>" set campos = conexion.OpenSchema(adSchemaColumns,Array(null,null,tabla,null)) do while not campos.eof response.write campos("column_name") & "," campos.movenext loop response.write "<br><br>" rs.movenext loop
Código:
select * from dba_tab_columns where table_name = 'Nombre_de_la_tabla' |
| ||||
Re: Query Analizer con Asp? me acaban de surgir un par de dudas.. ![]() 1. como capturo los mensajes que no son de error? (me refiero a los mensajes del tipo (x row(s) affected)) 2. como podria ejecutar dos sentencias a la vez, y a su vez captar ambos mensajes de filas afectadas? algo asi como select * from tabla1 select * from tabla2 (x row(s) affected)) (x row(s) affected)) 3. (aunque creo que con esta pregunta desarmo todo lo hecho) como podria desplegar un sp_helptext (procedimiento) para poder editarlo???? (esta pregunta va porque lo que va hecho hasta el momento solo funciona para SELECTS,INSERTS; UPDATES y DELETES) Última edición por pcarvajal; 04/03/2008 a las 14:36 |
| ||||
Re: Query Analizer con Asp? Para los selects no ocupas nada ya que para saber el número de filas afectadas solo debes de saber cuántos registros tienes en cada recordset. Y para las instrucciones que no te regresan un RecordSet basta que hagas un print de @@rowcount entre cada intrucción, y las ejecutes con un .Open de un RecordSet, el objeto RS resultante tendrá tantas filas como instrucciones print hayas puesto. Seria cosa de probar, pero recuerdo que así funciona Saludos |
| ||||
Re: Query Analizer con Asp? lo del @@rowcount no me resultó (ni idea porqué) pero lo solucioné con una simple variable que utilizo como contador. Lo que no me resulta es que me lea más de una linea instruccion sql, ahi se me queda pegado y se cae. Las instrucciones sql las estoy pasando atraves de un textarea, no un input. Por ejemplo, si intento dos selects seguidos (uno por linea) me toma el primero y el segundo lo ignora. Ahora si creo un procedimiento: create proc sp_prueba( @var1 numeric(09) ) as begin select * from mitabla where campo = @var1 end lo que hace es tirarme un error en la segunda linea (me alega que hay algo mal escrito cerca del parentesis), asumo que no es error de programacion, sino que no es capaz de interpretar más de una linea de instrucciones. |
| ||||
Re: Query Analizer con Asp? Bueno pues, aunque aún no puedo hacer que lea más de una línea, aquí les dejo el código que llevo ![]() Cita: Saludos!<!-- #include file="includes/conexion.inc"--> <% On error Resume Next Server.ScriptTimeout = 86400 %> <script language="javascript"> function areaTexto(tipo){ if (tipo == "+"){ document.getElementById('Sql').rows += 5; } else{ if (document.getElementById('Sql').rows > 5){ document.getElementById('Sql').rows -= 5; } } } </script> <form action="adm_sql.asp" method="post"> <input type="hidden" name="mode" value="query"> <table border="1"> <tr> <td colspan="2"><textarea name="Sql" rows="5" cols="80"><%=rtrim(Request("Sql"))%></textarea></td> </tr> <tr> <td><input type="submit" value="Ejecutar"></td> <td align="right"><a href="#" onclick="areaTexto('+');">+</a> <a href="#" onclick="areaTexto('-');">-</a></td> </tr> </table> </form> <% if (Request("mode")="query" and rtrim(Request("Sql"))<>"") then Dim total_registros total_registros = 0 Sql = Replace(lcase(Request("Sql")),"print","select") Set Rs = con.Execute(Sql) if err.number <> 0 then response.write "<tt><b>Error:</b> " + err.description + "</tt>" On Error GoTo 0 else if not Rs.EOF then response.Write "<table border=1>" response.Write "<tr>" for i=0 to rs.fields.count-1 response.write "<td>" & rs(i).name & "</td>" next response.write "</tr>" while not Rs.EOF response.write "</tr>" for i=0 to rs.fields.count-1 response.write "<td>" if (isnull(rs(i)) = false or rtrim(rs(i))="") then response.write rs(i) else response.write " " end if response.write "</td>" next total_registros = total_registros + 1 response.Write "</tr>" rs.Movenext wend response.write "</table>" end if Set Rs = nothing response.write "(" & total_registros & " filas afectadas)" end if end if %> ![]() |