TsqlConection x TsqlQuery

17/08/2009

Olá, Delphi 7 Criei uma aplicação com cadatro de comandos sql, crio os comandos e saldo no sqlServer 2005. Utilizo Ado para recuperar este sql conforme seu codigo e passo para TsqlQuery da paleta dbexpress:               with sqlDados do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add( AsqlSql.fieldbyName('COMANDO').ASSTRING);
                  Open;
                end;
Porem estou com o seguinte problema todo comando quando uso data o comando sql não funciona corretamente.   Já tentei varias formas e não obtive sucesso, gostaria de resolver esta situação sem mudar para ADO.   att.. Ricardo   --AND DATA_VALIDADE >= (SELECT CONVERT(VARCHAR(11),GETDATE(),121))   SELECT
0 AS U_PKEY,     
100 AS U_ORGVENDA,
P.COD_COND_PGTO AS S_CODPRAZO,
COD_LISTA AS S_CODTABELA,
1 AS U_PRECO_REFERENCIA,
50 AS D_VALOR_PEDIDO_MINIM,
CASE
WHEN ISNULL(PERC_JUROS,0) = 0 THEN 0 
WHEN DIAS_PARC = 3 THEN 0
WHEN DIAS_PARC = 1 THEN 0
ELSE PERC_JUROS / 30 * (QTDE_PARCELA * DIAS_PARC)   
END  AS D_PERCENTUAL_AJUSTE,
DIAS_PARC AS U_DIASENTRADA,
QTDE_PARCELA AS U_NUMERO_PARCELA,
DIAS_PARC AS U_DDENTREPARCELA,
DIAS_PARC AS U_DDENTREPARCELARATEIO,
16  AS U_STATUS,
DESC_COND_PGTO AS S_DESCRICAO,
0 AS S_TABELA_AMARRACAO,
0 AS U_PERMISSAO_PRAZOS,
1 U_QTDE_MINIMA_ITENS,
0 U_PRAZO_MEDIO,
0 U_DIAS_MIN_ENTRE_PARC,
0 U_DIAS_MAX_ENTRE_PARC,
0 D_VALOR_PEDIDO_MAXIMO FROM TBCONDPGTO P
LEFT OUTER JOIN
(SELECT P1.COD_COND_PGTO, CASE WHEN ISNULL(P2.PRAZO,0) = 0 THEN P1.PRAZO ELSE ISNULL(P2.PRAZO,0) - P1.PRAZO END DIAS_PARC
FROM TBDESDOBRAPGTO P1
LEFT OUTER JOIN  TBDESDOBRAPGTO P2
ON P1.COD_COND_PGTO = P2.COD_COND_PGTO
  AND P2.NUM_PARCELA ='2'
WHERE P1.NUM_PARCELA ='1'
AND P1.COD_COND_PGTO LIKE('P%') ) DP
ON P.COD_COND_PGTO = DP.COD_COND_PGTO,
TBLISTAPRECO
WHERE CLASSE IN('V','A')
AND COD_LISTA < 300
AND P.COD_COND_PGTO LIKE('P%')
--AND DATA_VALIDADE >= (SELECT CONVERT(VARCHAR(11),GETDATE(),121)) --AND COD_LISTA ='1'
--SELECT * FROM TBCONDPGTO
--SELECT * FROM TBLISTAPRECO
--SELECT * FROM tbdesdobrapgto WHERE COD_COND_PGTO LIKE('P108%')
 
Frigorifico Sa

Frigorifico Sa

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

17/08/2009

Olá amigo, desculpe a demora em responder.

Bem vamos ver se eu entendi. Voce tem um banco SqlServer 2005 e nele vc tem uma tabela onde guarda comandos SQL. Então utilizando ADO você acessa está tabela e recupera um comando sql qualquer. Após isso vc passa essa instrução para um SqlQeury do DBX para então executá-las no banco, correto ?

Você cita que ocorre um erro na execução da instrução, acredito que seja na hora de executar a instrução no DBX. Neste caso minha sugestão é a seguinte:

Coloque um Break Point na linha onde vc passa o comando SQL:

               with sqlDados do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add( AsqlSql.fieldbyName('COMANDO').ASSTRING); <-- Break Point Aqui.
                  Open;
                end;

Execute a aplicação e quando ele parar no Break point selecione com o Mouse a instrução AsqlSql.fieldbyName('COMANDO').ASSTRING e com ela selecionada pressione Crtl+F7. Isso vai fazer com que vc possa ver exatamente o que esta retornando do banco de dados e o que sera passado para o SQLQuery.

Copie este conteudo, remova possiveis #13#10 que possam aparecer e tente executar no banco de dados. Se o comando copiada executar dentro do banco então o comando esta correto, caso não funcione então começaremos a analisar o comando para ver se esta no padrão.

Ficarei no aguardo !!

Abs!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi


GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/08/2009

Olá Amigo,

A ajuda foi suficiente ? Podemos encerrar o chamado ?

Abs!!!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

17/08/2009

Rodrigo,     Me de mais um tempinho. Alterei o sql e funcionou assim como anteriormente. Vou fazer mais uns testes. E ver se não estou com um problema intermitente.   AND DATA_VALIDADE >=  CONVERT(VARCHAR(11),GETDATE()-1,121)   Att.. Ricardo  
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/08/2009

Sem problemas !!!

Abs !!!


Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Devmedia

Devmedia

17/08/2009

Senhor,
por falta de retorno estamos encerrando o chamado. Caso ainda tenha dúvidas sobre o assunto aqui tratado, por favor, volte a postar aqui mesmo que o consultor voltará a lhe atender.
GOSTEI 0
POSTAR