Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   muestra los valores de los parametrosel insert de un sql (https://www.clubdelphi.com/foros/showthread.php?t=74421)

ingabraham 17-06-2011 23:35:31

muestra los valores de los parametrosel insert de un sql
 
tengo un query donde aplico un

Código Delphi [-]
insert into cliente value  :a,:b,:c


Código Delphi [-]
showmensage(query.sql.text);

me muestra, pero no me muestra los valores de los parametros que he mandado,.
como muestro esto

necesito obtener el sql q se ejecuta debido aque tengo un insert muy grande(60 campos) con diferentes tipos de datos. y ya he validado varios.

ecfisa 18-06-2011 23:52:18

Hola.
Cita:

pero no me muestra los valores de los parametros que he mandado,.
como muestro esto
Código Delphi [-]
var
  i: Integer;
begin
  for i:= 0 to Query.ParamCount -1 do
    ListBox1.Items.Add(Query.Params[i].Value);
  ...
end;

Saludos.

ingabraham 19-06-2011 01:09:32

y si kiero ver todo el sql ejecutado?

ecfisa 20-06-2011 12:45:46

Hola.

Si lo que buscas es reemplazar en la cadena original de la consulta, los nombres de los parámetros por el valor que les asignaste a fin de mostrarla,
yo haría:
Código Delphi [-]
...
var
  s: string;
  c,i: Integer;
begin
  ...
  s:= IBQuery.Text;
  c:= 0;
  for i:= 1 to Length(s) do
    if s[i] = '?' then
    begin
      Delete(s, i, 1);
      Insert(IBQuery.Params[c].AsString, s, i);
      Inc(c);
    end;
  ShowMessage(s);
end;

Saludos.

ingabraham 20-06-2011 15:33:32

no se si eso me sirvira pero yo quiero es esto.

Código Delphi [-]
query.sql.text:='insert into clientes value(:a,:b,:c,:d....)'

me mostraria
Código Delphi [-]
insert into clientes value('001','abraham',18,'lorica'...

oscarac 20-06-2011 15:41:46

mmmm
eso no se ve en el depurador?

tu ubicas encima de la variable que quieras presionas alt+f5 y aparece la variable y su valor

ecfisa 20-06-2011 16:46:07

Cita:

Empezado por ingabraham (Mensaje 404252)
no se si eso me sirvira pero yo quiero es esto.

Bueno habría bastado con probarlo... :)

Simplifiqué un poco el código anterior y acabo de hacer esta prueba:
Código Delphi [-]
...
var
  s: string;
  c,i: Integer;
begin
  IBQuery1.SQL.Text:= 'insert into clientes values(:a,:b,:c,:d)';
  IBQuery1.ParamByName('a').AsString:= QuotedStr('001');
  IBQuery1.ParamByName('b').AsString:= QuotedStr('abraham');
  IBQuery1.ParamByName('c').AsString:= QuotedStr('18');
  IBQuery1.ParamByName('d').AsString:= QuotedStr('lorica');
  s:= '';
  c:= 0;
  for i:= 1 to Length(IBQuery1.Text) do
  begin
    if IBQuery1.Text[i] = '?' then
    begin
      s:= s + IBQuery1.Params[c].AsString;
      Inc(c);
    end
    else
      s:= s + IBQuery1.Text[i];
  end;
  ShowMessage(s);
end;
y obtengo este resultado en pantalla:
Cita:

insert into clientes values('001','abraham','18','lorica')
Que, si no entiendo mal, es lo que estás solicitando.


Saludos.


La franja horaria es GMT +2. Ahora son las 21:36:05.

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