FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
ver una consulta SQL con los parametros remplazados por sus valores
Hola, estoy usando DBE+Dbase
Les paso a contar que quiero... Nesecito ver las consultas SQL de un Tquery con los parametros remplazados por sus valores, osea: Código:
query.sql.add('WHERE dni=:dni'); query.paramByName('dni').asInteger:=2345; query.open Osea que quiero ver la Consulta va a hacia el servidor.
__________________
Aprendamos a ser civilizados |
#2
|
||||
|
||||
me temo que esto no es posible, pues la sustitución se hace en el motor de base de datos, y no en el propio delphi.
disculpá la curiosidad... pero para que la queres "ver"??
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
Hola a todos:
Como dice jachguate con parámetros nanai de la china como decimos por aqui, pero si no te importa hacerlo concatenando strings, puedes hacerlo así: Código:
query.sql.add('WHERE dni= ' + (variable de dni )); Cita:
Saludos. Última edición por Lepe fecha: 17-04-2004 a las 13:48:32. |
#4
|
||||
|
||||
Si es lo que queria, queria tener lo mejor de los dos mundos.. (consultas en tiempo de ejecucion, poder usar parametros y luego ver el SQL remplazado para debuger)
Para que lo queria?? Me parace muy comodo poder usar parametros, hace los sql.add() mas claros (no me gusta poner sql.add('WHERE dni=' + intToSTR(variableDNI)). Pero todo esto deja de tener claridad cuando en tiempo de ejecucion enpezas a intercalar 'if then' con sql.add() para no quere tener casi la misma consulta en dos o mas lugares distintos. Entonces mi GRANN IDEA erra colocar en el: Código:
try sql.add('gran consulta') open except on E:exception do errorSQL(E,sql); end; pero bueno, probare con otra forma... Alguien a probado el rempazar substring (no recuerdo el nombre de pa funcion)? dentro del TStrings del query? Debria andar bien, salvando los casos de como puede tomar los ' ' , " , la sustiucion de fechas y de float. (mas algun otro tipo de tipo que no me viene al mente ahora) voy a ver si pruebo por ese lado..., O mejor aun hacer la sustitucion del Query yo mismo, se supone que hay una lista de parametros con sus tipos y valores.. Pero por ahora segire buscando ',' , ';' y otras cosas tontas entre if anidados
__________________
Aprendamos a ser civilizados |
#5
|
||||
|
||||
Yo para ver como queda el SQL antes de abrir la consulta hago:
Código:
ShowMessage(MiQuery.SQL.Text);
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
||||
|
||||
Wop!
Hablo de memoria, pero, por lo menos en D6, creo que existe una función para reemplazar textos dentro de una string (creo que es ReplaceText). Puedes montarte una función como esta: Código:
function SqlConParametros(AQuery: TQuery): String; var i: Integer; begin Result := AQuery.Sql.Text; for i : 0 to AQuery.Params.Count - 1 do Result := ReplaceText(Result, ':' + Params[i].ParamName, Params[i].AsString); end; No recuerdo si la propiedad que te da el nombre del parámetro se llama ParamName. Si me ha fallado la memoria y no existe la función ReplaceText, no te costará mucho programarla.
__________________
E pur si muove |
|
|
|