SQL erro na consulta

SQL

Delphi

Firebird

22/02/2022

Ola estou com problema com essa consulta, vou portar ela completa para melhor entendimento, mas o meu problema e nesse final;

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and RESPONDER ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''or FIMPAZO ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''or PRAZOCPC ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');


veja preciso busca a mesma data em 03 colunas diferrentes, o comando OR deveria fucionare ate funciona so que da foam como esta ele não filtra pelo "and Tipo = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Ord.Servico", e tras os dados idepente do Tipo.
Dai não funciona, pos trás todos os campos dataa mas e como se despresasse o codigo escrito acima na função
alguma ideia de como resolver?



//***************
procedure TForm1.MonthCalendar1Click(Sender: TObject);
var
VDestinatario : String;
DataInicial:String;
dataFinal:String;

Begin
ProcMov.Filtered := false;

VDestinatario := FuncionarioCODIGO.AsString;
DataInicial := FormatDateTime(''''''''''''''''''''''''''''''''DD/MM/YYYY'''''''''''''''''''''''''''''''', MonthCalendar1.Date);
dataFinal := FormatDateTime(''''''''''''''''''''''''''''''''DD/MM/YYYY'''''''''''''''''''''''''''''''', MonthCalendar1.Date);

DataInicial :=FormatDateTime(''''''''''''''''''''''''''''''''mm/dd/yyyy'''''''''''''''''''''''''''''''',StrToDate(DataInicial));
dataFinal :=FormatDateTime(''''''''''''''''''''''''''''''''mm/dd/yyyy'''''''''''''''''''''''''''''''',StrToDate(dataFinal));


ProcMov.Active := false;
ProcMov.Close;

if ProcMov.State<>dsinactive then ProcMov.Close;
ProcMov.SQL.Clear;

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''Select * from ADVPROCMOV'''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''Where DESTINATARIO<> ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''0'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and Sit = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''P'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');

If PageControl1.ActivePageIndex = 1 then begin
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and Tipo = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Ord.Servico'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
end;
If PageControl1.ActivePageIndex = 2 then begin
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and Tipo = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Audiencia'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
end;
If PageControl1.ActivePageIndex = 3 then begin
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and Tipo = ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Pecas'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
end;
// If PageControl1.ActivePageIndex = 4 then begin
// end;


if CheckBox2.Checked = false
then begin

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and Destinatario ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+VDestinatario+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
end;

if RadioGroup1.ItemIndex = 0
then begin;
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and RESPONDER >='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and RESPONDER <='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataFinal+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''order by RESPONDER, HORA Asc'''''''''''''''''''''''''''''''');

end;

if RadioGroup1.ItemIndex = 1
then begin;
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and FIMPAZO >='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and FIMPAZO <='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataFinal+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''order by FIMPAZO, HORA Asc'''''''''''''''''''''''''''''''');

end;


if RadioGroup1.ItemIndex = 2

then begin;

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and PRAZOCPC >='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and PRAZOCPC <='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataFinal+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''order by PRAZOCPC, HORA Asc'''''''''''''''''''''''''''''''');

end;


if RadioGroup1.ItemIndex = 3
then begin;

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''and RESPONDER ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''or FIMPAZO ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');

ProcMov.SQL.Add(''''''''''''''''''''''''''''''''or PRAZOCPC ='''''''''''''''''''''''''''''''');
ProcMov.SQL.Add(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+DataInicial+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');



ProcMov.SQL.Add(''''''''''''''''''''''''''''''''order by PRAZOCPC, HORA Asc'''''''''''''''''''''''''''''''');

end;

ProcMov.Active := false;
ProcMov.Close;

ProcMov.Open;
Sidnei Lopes

Sidnei Lopes

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

24/02/2022

tente isto. comentários no próprio código.
//***************
procedure TForm1.MonthCalendar1Click(Sender: TObject);
const
	arrayTipos: array[1..3] of string = ('Ord.Servico', 'Audiencia', 'Pecas');
var
	VDestinatario:String;
	DataInicial:String;
	DataFinal:String;
Begin

	VDestinatario := FuncionarioCODIGO.AsString;
	DataInicial := FormatDateTime('mm/dd/yyyy', MonthCalendar1.Date);
	DataFinal := FormatDateTime('mm/dd/yyyy', MonthCalendar1.Date);
	// DATAS SÃO IGUAIS MESMO??? O CONTEÚDO PARTE DO MESMO COMPONENTE... <<<<

	ProcMov.Filtered := false;
	ProcMov.Close;
	ProcMov.SQL.Clear;

	ProcMov.SQL.Add('Select * from ADVPROCMOV');
	ProcMov.SQL.Add('Where DESTINATARIO <> '0');
	ProcMov.SQL.Add('and Sit = 'P');

	If (PageControl1.ActivePageIndex > 0) and (PageControl1.ActivePageIndex < 4) then
		ProcMov.SQL.Add('and Tipo = ' + QuotedStr(arrayTipos[PageControl1.ActivePageIndex]));

	if not CheckBox2.Checked then
		ProcMov.SQL.Add('and Destinatario = ' + QuotedStr(VDestinatario));

	case RadioGroup1.ItemIndex of
		0: begin
			ProcMov.SQL.Add('and RESPONDER BETWEEN ' + QuotedStr(DataInicial) + ' AND ' + QuotedStr(DataFinal));
			ProcMov.SQL.Add('order by RESPONDER, HORA Asc');
		   end;

		1: begin
			ProcMov.SQL.Add('and FIMPAZO BETWEEN ' + QuotedStr(DataInicial) + ' AND ' + QuotedStr(DataFinal) );
			ProcMov.SQL.Add('order by FIMPAZO, HORA Asc');
		   end;

		2: begin
			ProcMov.SQL.Add('and PRAZOCPC BETWEEN ' + QuotedStr(DataInicial) + ' AND ' + QuotedStr(DataFinal));
			ProcMov.SQL.Add('order by PRAZOCPC, HORA Asc');
		   end;

		:3 begin // aqui as condições OR precisavam ficar entre parêntesis
			ProcMov.SQL.Add('and ( RESPONDER = ' + QuotedStr(DataInicial)); // adicionado um perêntesis aqui, no início <<<<
			ProcMov.SQL.Add('or FIMPAZO = ' + QuotedStr(DataInicial));
			ProcMov.SQL.Add('or PRAZOCPC = ' + QuotedStr(DataInicial) + ')' ); // adicionado um perêntesis aqui, no final <<<<
			ProcMov.SQL.Add('order by PRAZOCPC, HORA Asc');
		   end;
 	end;

	ProcMov.Open;

end;

GOSTEI 1

Mais Respostas

Paulo

Paulo

22/02/2022

Nem li seus códigos mas, ao invés de usar um monte de aspas use QuotedStr() e ao invés de usar <= >= nas datas use between. O codigo vai ficar bem mais limpo e talvez resolva seu problema.
GOSTEI 0
POSTAR