Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiriciasf

CommandoText no SQLDATSET

Recommended Posts

Pessoal estou com um problema preciso colocar no SQLDATASET commandText, um codigo SQL, para um relatório, pois já tentei colocar diretamente na programaçao, mas os componentes passam dos 255 elementos, preciso no SQL colocar entre datas (pois para o relatorio o usuario vai escolher as datas que quer o relatorio

 

Tentei assim no commandText do SQLDATASET

 

SELECT VIAGEM.COD_VIAGEM, NR_VIAGEM, DATA_VIAGEM, CRT, MIC, PESO_CARGA,DESTINO, VALOR_FRETE, VALE1, KM_SAIDA, KM_CHEGADA, CARGA_CIDADE,TOTAL_DESP_REAIS,VELOCIDADE, KM, TOTAL_ABAST_REAIS, TOTAL_LITROS, MEDIA, MOTORISTA.NOME_MOT, VEICULOS.PLACAfrom VIAGEMINNER JOIN VEICULOSON VIAGEM.COD_VEIC = VEICULOS.COD_VEICINNER JOIN MOTORISTAON VIAGEM.COD_MOTORISTA = MOTORISTA.COD_MOTORISTAWHERE (VIAGEM.DATA_VIAGEM BETWEEN :DATA_INICIAL AND :DATA_FINAL) AND 		   MOTORISTA.NOME_MOT= :NOME;

Com esse Código ta dando um erro " No value for Parameter DATA_INICIAL "

 

 

Se alguém puder me ajudar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim não entendi..

 

Este cod que está no SQLDASET, para que depois eu possa passar por parametro, para o relatorio.

o SQLDASET está ligado ao SQLConection, que está ligada com o banco de Dados.

Vou passar um exemplo de um que fiz para aparecer num DBGRID, quero fazer parecido, porém não estou conseguindo passar por parametro as datas (data inicial, data final).

Segue o exemplo. Cód no SQLDASET

 

select  VIAGEM.COD_VIAGEM, NR_VIAGEM,DATA_VIAGEM, VALOR_FRETE, FRETE_COBRADO, MOTORISTA.NOME_MOT,VEICULOS.PLACA 
from VIAGEM   INNER JOIN MOTORISTA
ON  VIAGEM.COD_MOTORISTA= MOTORISTA.COD_MOTORISTA
 INNER JOIN VEICULOS
ON VIAGEM.COD_VEIC = VEICULOS.COD_VEIC
WHERE COD_VIAGEM= :CODIGO OR 
				MOTORISTA.NOME_MOT like :NOME OR
				VIAGEM.NR_VIAGEM like :NUM_VIAGEM OR
				VIAGEM.DATA_VIAGEM = :DATA OR					  
			   (VIAGEM.FRETE_COBRADO = 1) OR
				VEICULOS.PLACA like :NUM_PLACA

 

Este código eu coloquei, para abrir uma viagem que estava no DBGRID

 

procedure TFormViagemAberto.DBGridVIAGEMDblClick(Sender: TObject);
begin
  DMCADASTRO.TBVIAGEM.Close;
  DMCADASTRO.SQLDATASETVIAGEM.ParamByName('CODIGO').AsInteger := DMCADASTRO.TBDBGRIDVIAGEMCOD_VIAGEM.AsInteger;
  DMCADASTRO.TBVIAGEM.Open;
  FormViagemAberto.Visible:=false;
  FormViagem.ShowModal;

 

Bom para este eu preciso que apareçam no relatório os campos que estão no Código do SQLDASET, e tenho que passar por parametro a Data_viagem, que será a Data_inicial e Final do Relatório, so vai aparecer as viagens entre estas datas, e o motorista que ele escolher.

 

Segue o Código que do SQLDASET que vou ligar no relatório.Mas que tá dando o erro " No value for Parameter DATA_INICIAL "

 

SELECT VIAGEM.COD_VIAGEM, NR_VIAGEM, DATA_VIAGEM, CRT, MIC, PESO_CARGA,DESTINO, VALOR_FRETE, VALE1, KM_SAIDA, KM_CHEGADA, CARGA_CIDADE,TOTAL_DESP_REAIS,VELOCIDADE, KM, TOTAL_ABAST_REAIS, TOTAL_LITROS, MEDIA, MOTORISTA.NOME_MOT, VEICULOS.PLACAfrom VIAGEMINNER JOIN VEICULOSON VIAGEM.COD_VEIC = VEICULOS.COD_VEICINNER JOIN MOTORISTAON VIAGEM.COD_MOTORISTA = MOTORISTA.COD_MOTORISTA

WHERE (VIAGEM.DATA_VIAGEM BETWEEN :DATA_INICIAL AND :DATA_FINAL) AND
			MOTORISTA.NOME_MOT like :NOME;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, consegui, vou colocar abaixo como fiz, pq se alguém estiver na mesma situação possa tirar como base.

 

No CommandoText do SQLDATASET coloquei o seguinte código.

 

SELECT VIAGEM.COD_VIAGEM, NR_VIAGEM, DATA_VIAGEM, CRT, MIC, PESO_CARGA,DESTINO, VALOR_FRETE, VALE1, KM_SAIDA, KM_CHEGADA, CARGA_CIDADE,TOTAL_DESP_REAIS,VELOCIDADE, KM, TOTAL_ABAST_REAIS, TOTAL_DESP_VIAGEM, TOTAL_LITROS, MEDIA, MOTORISTA.NOME_MOT, VEICULOS.PLACA
from VIAGEM
INNER JOIN VEICULOS
ON VIAGEM.COD_VEIC = VEICULOS.COD_VEIC
INNER JOIN MOTORISTA
ON VIAGEM.COD_MOTORISTA = MOTORISTA.COD_MOTORISTA
WHERE  VIAGEM.DATA_VIAGEM >= :DATA_INICIAL AND
				VIAGEM.DATA_VIAGEM <= :DATA_FINAL AND
				 MOTORISTA.NOME_MOT LIKE :NOME;

Depois passei por parametro, la no botao imprimir do formulário.Assim

 

procedure TFRelViagemMot.BitBtn2Click(Sender: TObject);
begin
  DMRELATORIO.TBVIAGEMMOT.close;
  DMRELATORIO.SQLDASETVIAGEMMOT.ParamByName('DATA_INICIAL').Value:=InverteData(maskedit1.Text);
  DMRELATORIO.SQLDASETVIAGEMMOT.ParamByName('DATA_FINAL').Value:=InverteData(maskedit2.Text);
  DMRELATORIO.SQLDASETVIAGEMMOT.ParamByName('NOME').Value:= DBLookupComboBox1.Text;
  DMRELATORIO.TBVIAGEMMOT.open;
  QRVIAGEMMOT.PreviewModal;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.