Fórum Visualizar instrução SQL #445328
13/06/2013
0
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
Curtir tópico
+ 0Posts
13/06/2013
Integral Ltda
ShowMessage(Query1.Params[0].AsString);
Gostei + 0
13/06/2013
Aercio Rego
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
13/06/2013
Guilherme Wiethaus
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
27/09/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)