Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 20
pborges36 Va por buen camino
Obtener la consulta sql que se ejecuta

Hola a todos. Estoy programando en delphi6 y mysql. Tengo un TQuery al cual le mando la consulta de la sig manera:

Código Delphi [-]
Query1.Sql.clear;
Query1.Sql.Add('insert into mitabla (campo1, campo2, capmpo3) values (:campo1, :campo2, :capmpo3)');
Query1.Parambyname(campo1).AsString:=edit1.text;
Query1.Parambyname(campo2).AsString:=edit2.text;
Query1.Parambyname(campo3).AsString:=edit3.text;
Query1.ExecSQL;

Ahora bien, lo que necesito es la consulta completa. Si por ejemplo hago:
Código Delphi [-]
edit3.text:=Query1.Sql.Text;

obtengo algo asi: insert into mitabla (campo1, campo2, capmpo3) values (:campo1, :campo2, :capmpo3)

y en realidad necesito la consulta con lo valores de los parametros.
habra alguna propiedad del TQuery que devuelva esto? Espero se entienda. Gracias!!.
Responder Con Cita
  #2  
Antiguo 20-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Para que quieres obtener los datos que inserto el TQuery desde el TQuery cuando lo tienes en tus Edit1, Edit2 y Edit3?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 20-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 20
pborges36 Va por buen camino
Gracias por responder. Lo que necesito es la consulta que se ejecuto, no solo los datos de los edits.
Responder Con Cita
  #4  
Antiguo 20-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Yo estuve una vez investigando eso y no lo conseguí ...
__________________
Sotoca Web
Responder Con Cita
  #5  
Antiguo 20-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
A ver quizá no entiendo ¿Lo que quieres es algo al estilo Sql Monitor?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 20-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Cita:
Empezado por jhonny
A ver quizá no entiendo ¿Lo que quieres es algo al estilo Sql Monitor?
En mi caso si, aunque pborges36 quizá lo quiera desde el propio Delphi (algo así como el GetText, pero con los parametros sustituidos)
__________________
Sotoca Web
Responder Con Cita
  #7  
Antiguo 20-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Se me ocurre hacer un parser ...

En el TQuery tenemos la Query, y los valores de los parametros ...
__________________
Sotoca Web
Responder Con Cita
  #8  
Antiguo 20-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 20
pborges36 Va por buen camino
El parser es como el Query1.Text?
Responder Con Cita
  #9  
Antiguo 20-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Lo que quiero decir es que se puede hacer una funcion, que pasandole el TQuery, sustituya los ":miparametro1", ":miparametro2", ... por sus valores y te devuelva la query completa, pero eso si, habrá que tener en cuenta los tipos de los datos, para poner las comillas, el formato de fechas ...
__________________
Sotoca Web
Responder Con Cita
  #10  
Antiguo 20-02-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Rta. sencilla

Y por qué no lo ejecutas directamente ???
Algo así...
Query1.Sql.clear;
Query1.Sql.Text := 'insert into mitabla (campo1, campo2, campo3) values( ' + edit1.text + ', ' + edit2.text + ', ' + edit3.text + ' )';
Query1.ExecSQL;
Fijate los apóstrofes por los tipos de campos, pero en un insert creo no jode,
además así tenés la consulta real.
Espero te sirva, sino no dudes en dudar!!!. Saludos
Responder Con Cita
  #11  
Antiguo 21-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 20
pborges36 Va por buen camino
Lo que sucede es que en todo el proyecto he usado el TQuery pasandole parametros. Creo que lo que voy a hacer es lo que dijo Fdelamo:

Cita:
Empezado por fdelamo
...se puede hacer una funcion, que pasandole el TQuery, sustituya los ":miparametro1", ":miparametro2", ... por sus valores y te devuelva la query completa...
Aun asi si alguien sabe como hacerlo de otra forma estaria agradecido. Gracias a todos. Saludos.
Responder Con Cita
  #12  
Antiguo 21-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Puesto que trabajas con parámetros, puedes estar seguro que las comas simples y etc no tendrán fallos en el sql, así que pasamos del tema jejeje.

Algo rápido:
Código Delphi [-]
procedure VerSentenciaSql(dt:TQuery);
var i:Integer;
    Sql:string;
    ReplaceTo:string;
begin
  sql := dt.SQL.Text;
  for i := 0 to dt.params.count - 1 do
  with dt.Params[i] do
  begin
    case datatype  of
      ftDate : ReplaceTo := FormatDateTime('dd/mm/yyyy',AsDAte);
      ftDatetime: ReplaceTo := FormatDateTime('dd/mm/yyyy hh:nn:ss', AsDAtetime);
      ftTime : ReplaceTo := FormatDateTime('hh:nn:ss', Astime);
    else
      ReplaceTo := AsString;
    end;
    sql := ReplaceText(sql, ':'+Name,  ReplaceTo);

  end;
  ShowMessage(sql);
end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 22-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 20
pborges36 Va por buen camino
Muchas gracias Lepe. Es mas o menos asi como encaré la funcion. El unico problema que se me presentó hasta ahora es con algunos nombres de parametros, como por ejemplo:

:nombre, :nombre1, :nombre2

En algunos casos a los parametros :nombre1 y :nombre2 toman el valor del parametro :nombre seguido del numero, 1 o 2. Pero solo es cuention de tener cuidado en los nombres de los parametros.

Tenia la ilusion de que el TQuery me devuelva la consulta completa, pero veo que no es asi.
Muchas gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener un dato de Dbgrid después de una consulta maravert SQL 3 21-08-2006 09:25:46
consulta sql (obtener los ultimos niveles) Caro SQL 7 25-05-2006 16:12:55
no me ejecuta por que? fabian20s Varios 1 22-07-2005 21:24:01
por que no ejecuta fabian20s Gráficos 2 17-07-2005 22:10:26
Obtener el resultado de una consulta zurech MySQL 3 13-07-2005 11:33:11


La franja horaria es GMT +2. Ahora son las 23:40:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi