Visualizar instrução SQL
Bom dia PEssoal, gostaria de saber como eu faço para ver uma instrução sql q o componente irá executar depois que eu passar os paraemtros.
Exemplo se eu peço para o sistema mostrar para mim a query.sql.text eu vejo a query com os parametros :parametro , só que eu gostaria de ver o valor que passei para o :parametro, é possível??
Exemplo se eu peço para o sistema mostrar para mim a query.sql.text eu vejo a query com os parametros :parametro , só que eu gostaria de ver o valor que passei para o :parametro, é possível??
Aercio Rego
Curtidas 0
Respostas
Integral Ltda
13/06/2013
Seria isso?
ShowMessage(Query1.Params[0].AsString);
GOSTEI 0
Aercio Rego
13/06/2013
na verdade queria tipo isso aqui
queria transformar isso aí em um showmessage para que eu visse algo assim 'insert into c000032(campoA, campoB, ..., campoN) values ('valorA','valorB',...,'ValorN');
eu só consigo ver 'insert into c000032(campoA, campoB, ..., campoN) values (:paramA,:paramB,...,paramN);
qrServidor.CLOSE;
qrServidor.SQL.CLEAR;
qrServidor.SQL.Add('insert into c000032');
qrServidor.SQL.add('(codigo,codnota,serial,numeronota,');
qrServidor.SQL.add('codproduto,qtde,movimento_estoque,unitario,desconto,acrescimo,');
qrServidor.SQL.add('total,unidade,aliquota,');
qrServidor.SQL.add('cupom_item,cupom_numero,cupom_modelo,');
qrServidor.SQL.add('ecf_serie,ecf_caixa,codcliente,codvendedor,movimento,data,cst,');
qrServidor.sql.add('base_calculo, valor_icms)');
qrServidor.SQL.add('values');
qrServidor.SQL.add('(:codigo,:codnota,:serial,:numeronota,');
qrServidor.SQL.add(':codproduto,:qtde,:movimento_estoque,:unitario,:desconto,:acrescimo,');
qrServidor.SQL.add(':total,:unidade,:aliquota,');
qrServidor.SQL.add(':cupom_item,:cupom_numero,:cupom_modelo,');
qrServidor.SQL.add(':ecf_serie,:ecf_caixa,:codcliente,:codvendedor,:movimento,:data,:cst,');
qrServidor.sql.add(':base_calculo, :valor_icms)');
qrServidor.Params.ParamByName('CODIGO').ASSTRING := frmPrincipal.codifica('000032',10);
qrServidor.Params.ParamByName('CODNOTA').ASSTRING := scod_venda;
qrServidor.Params.ParamByName('SERIAL').ASSTRING := '';
qrServidor.Params.ParamByName('NUMERONOTA').ASSTRING := zerar(scod_cupom,6);
qrServidor.Params.ParamByName('CODPRODUTO').ASSTRING := zerar(qrS4.fieldbyname('cod_produto').asstring,6);
qrServidor.Params.ParamByName('QTDE').ASFLOAT := qrS4.FIELDBYNAME('QTDE').ASFLOAT;
qrServidor.Params.ParamByName('MOVIMENTO_ESTOQUE').ASFLOAT := -qrS4.FIELDBYNAME('QTDE').ASFLOAT;
qrServidor.Params.ParamByName('unitario').AsFloat := qrS4.fieldbyname('unitario').asfloat;
qrServidor.Params.ParamByName('desconto').asFloat := 0;
qrServidor.Params.ParamByName('acrescimo').asFloat := 0;
qrServidor.Params.ParamByName('total').asFloat := qrS4.fieldbyname('total').asfloat;
qrServidor.Params.ParamByName('UNIDADE').ASSTRING := 'UN';
qrServidor.Params.ParamByName('ALIQUOTA').ASFLOAT := 0;
qrServidor.Params.ParamByName('CUPOM_ITEM').ASSTRING := '';
qrServidor.Params.ParamByName('CUPOM_NUMERO').ASSTRING := zerar(scod_cupom,6);
qrServidor.Params.ParamByName('CUPOM_MODELO').ASSTRING := '2D';
qrServidor.Params.ParamByName('ECF_SERIE').ASSTRING := 'nao fiscal';
qrServidor.Params.ParamByName('ECF_CAIXA').ASSTRING := '';
qrServidor.Params.ParamByName('CODCLIENTE').ASSTRING := zerar(qrS1.FIELDBYNAME('CLIENTE').ASSTRING,6);
qrServidor.Params.ParamByName('CODVENDEDOR').ASSTRING := zerar(qrS1.FIELDBYNAME('operador').ASSTRING,6);
qrServidor.Params.ParamByName('MOVIMENTO').ASINTEGER := 2;
qrServidor.Params.ParamByName('DATA').ASDATETIME := qrS1.FIELDBYNAME('DATA').ASDATETIME;
qrServidor.Params.ParamByName('CST').ASSTRING := '000';
qrServidor.Params.ParamByName('base_calculo').asFloat := qrS4.fieldbyname('total').asfloat;
qrServidor.Params.ParamByName('valor_icms').asFloat := 0;
queria transformar isso aí em um showmessage para que eu visse algo assim 'insert into c000032(campoA, campoB, ..., campoN) values ('valorA','valorB',...,'ValorN');
eu só consigo ver 'insert into c000032(campoA, campoB, ..., campoN) values (:paramA,:paramB,...,paramN);
GOSTEI 0
Guilherme Wiethaus
13/06/2013
Olá Caro Programador.
Eu tenho uma solução que sua ideia me despertou interesse. Caso você não tenha uma propriedade ou método do componente a qual precise para pegar diretamente os dados colocados no parâmetro e montar o seu SQL.
Primeiramente o "Parameter" é montado pelo componente no momento da execução. Nos Scripts de SQL como o T-SQL do SQL Server não existe este tal de :Parametro1, ... Isto é um recurso de "Parse" que o componente possui de ler o script e juntar o nome com a lista de registros contidos nos parâmetros.
Bem, uma solução que eu proponho, poderia se usar uma função construída por você a qual você pega cada parâmetro em um laço e lê o script em SQL.Text e ao achar :Parametro1 substitui pelo conteúdo em qrServidor.Params.ParamByName('Parametro1').Value antes precisa usar junto outro recurso para converter um tipo determinado (definido no parâmetro) para o tipo String para montar a sua SQL completa.
Espero que consiga ter entendido a ideia aqui que eu tento colocar. Eu faria tal função, embora esta semana estou com pouco tempo para trabalhar no meu projeto. num momento oportuno tentarei postar aqui a solução melhor na forma escrita de código o que não é algo difícil de se fazer. Só não encare como uma promessa.
Abraços.
Eu tenho uma solução que sua ideia me despertou interesse. Caso você não tenha uma propriedade ou método do componente a qual precise para pegar diretamente os dados colocados no parâmetro e montar o seu SQL.
Primeiramente o "Parameter" é montado pelo componente no momento da execução. Nos Scripts de SQL como o T-SQL do SQL Server não existe este tal de :Parametro1, ... Isto é um recurso de "Parse" que o componente possui de ler o script e juntar o nome com a lista de registros contidos nos parâmetros.
Bem, uma solução que eu proponho, poderia se usar uma função construída por você a qual você pega cada parâmetro em um laço e lê o script em SQL.Text e ao achar :Parametro1 substitui pelo conteúdo em qrServidor.Params.ParamByName('Parametro1').Value antes precisa usar junto outro recurso para converter um tipo determinado (definido no parâmetro) para o tipo String para montar a sua SQL completa.
Espero que consiga ter entendido a ideia aqui que eu tento colocar. Eu faria tal função, embora esta semana estou com pouco tempo para trabalhar no meu projeto. num momento oportuno tentarei postar aqui a solução melhor na forma escrita de código o que não é algo difícil de se fazer. Só não encare como uma promessa.
Abraços.
GOSTEI 0
José
13/06/2013
Olá aercio de melo paris rego, teve algum avanço ou conseguiu solucionar sua duvida ?
GOSTEI 0