Ir para conteúdo

POWERED BY:

Arquivado

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

Renanbg

com resultado de SQL

Recommended Posts

Boa tarde amigos,

 

Em um botão tenho essa programaçao que faz a busca de duplicatas vencidas

Var
Mensagem, Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'SELECT * FROM tbduplicatas WHERE Vencimento <:Hoje';
Query1.ParamByName('Hoje').AsDateTime := StrToDate(Hoje);
Query1.Prepare;
Query1.Open;
Edit1.Text:= DateToStr(date);
BitBtn1.Visible:= true;

  if (Query1.RecordCount = 0) then
	begin
	Mensagem := 'Não existem duplicatas vencidas nesta data!';
	Application.MessageBox(PCHAR(Mensagem), 'Duplicatas', MB_ICONINFORMATION + MB_OK);
	BitBtn1.Visible:= false;
	end;

end;

O resultado é todas duplicatas vencidas

 

Em outro botão eu faço a baixa delas

 

var
   Mensagem, Hoje: String;
begin
Mensagem := 'O sistema fará a baixa de todas as contas listadas!'+#13+''+#13+'Deseja proseguir?';
If Application.MessageBox(PCHAR(Mensagem), 'Duplicatas', MB_ICONQUESTION + MB_YESNO)= mryes then
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into tbvencidas (Cedente, Data_doc, Num_doc, Vencimento, Cod_cedente, Valor, Status, Estabelecimento) select Cedente, Data_doc, Num_doc, Vencimento, Cod_cedente, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje');
Query1.ParamByName('Hoje').Value:=StrToDate(Hoje);
Query1.ExecSQL;
BitBtn3.Click;
Mensagem := 'Baixa efetuada com sucesso!';
Application.MessageBox(PCHAR(Mensagem), 'Duplicatas', MB_ICONINFORMATION + MB_OK);

Funciona super bem.

 

A duvida é:

 

Tenho para cada duplicata um campo chamado Status e no botão que faz a baixa gostaria de pesquisar antes se existe algum registro com status = 'AGUARDANDO' e caso tenha informe via mensagem. Caso não tenha com esse status prossiga com a baixa.

 

Como posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Boa tarde amigos,

 

Em um botão tenho essa programaçao que faz a busca de duplicatas vencidas

Var
Mensagem, Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'SELECT * FROM tbduplicatas WHERE Vencimento <:Hoje';
Query1.ParamByName('Hoje').AsDateTime := StrToDate(Hoje);
Query1.Prepare;
Query1.Open;
Edit1.Text:= DateToStr(date);
BitBtn1.Visible:= true;

  if (Query1.RecordCount = 0) then
	begin
	Mensagem := 'Não existem duplicatas vencidas nesta data!';
	Application.MessageBox(PCHAR(Mensagem), 'Duplicatas', MB_ICONINFORMATION + MB_OK);
	BitBtn1.Visible:= false;
	end;

end;

O resultado é todas duplicatas vencidas

 

Em outro botão eu faço a baixa delas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa...deu erro nessa linha

 

Query1.SQL.Add('where status = 'AGUARDANDO');

então tentei colocar

 

Query1.SQL.Add('where status = "AGUARDANDO");

mas tbm da erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque no próprio select do insert

Query1.SQL.Add('Insert into tbvencidas (Cedente, Data_doc, Num_doc, Vencimento, Cod_cedente, Valor, Status, Estabelecimento) select Cedente, Data_doc, Num_doc, Vencimento, Cod_cedente, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje and status <> 'AGUARDANDO'');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso da erro pq você ta ficando sem terminar uma string...

Query1.SQL.Add('where status = 'AGUARDANDO');

 

 

Duas formas simples de fazer:

1 - Usando o QuotedStr (Essa função se encarrega de deixar a string entre aspas pra você...):

Query1.SQL.Add('where status = '+QuotedStr('AGUARDANDO'));

2 - Usando #39 ( aspas simples - ' ):

Query1.SQL.Add('where status = '+#39+'AGUARDANDO'+#39);

 

 

Abraço! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque no próprio select do insert

Query1.SQL.Add('Insert into tbvencidas (Cedente, Data_doc, Num_doc, Vencimento, Cod_cedente, Valor, Status, Estabelecimento) select Cedente, Data_doc, Num_doc, Vencimento, Cod_cedente, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje and status <> 'AGUARDANDO'');

Não usei esse procedimento pq desejo listar todas e só avisar se existem no estatus "AGUARDANDO" ao realizar a baixa

 

Isso da erro pq você ta ficando sem terminar uma string...

Query1.SQL.Add('where status = 'AGUARDANDO');

 

 

Duas formas simples de fazer:

1 - Usando o QuotedStr (Essa função se encarrega de deixar a string entre aspas pra você...):

Query1.SQL.Add('where status = '+QuotedStr('AGUARDANDO'));

2 - Usando #39 ( aspas simples - ' ):

Query1.SQL.Add('where status = '+#39+'AGUARDANDO'+#39);

 

 

Abraço! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Deu certo Hugo, porem ao clica no botão baixar ele limpa o dbgrid que possuia a consulta assim que da a msg informando que existem duplicatas aguardando.

 

n tem como fazer que n limpe o grid?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que acabei me explicando mal

 

o que desejo é saber se no resultado da pesquisa existe algum item com status "AGUARDANDO"

 

No codigo acima é feita uma pesquisa direto na tbduplicatas

 

dessa forma ira me informar tudo que tenho na tabela, mas preciso saber o que tenho no dbgrid da pesquisa

 

meio complicado neh?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz... ta complicado de entender camarada...

Acho que acabei me explicando mal

 

o que desejo é saber se no resultado da pesquisa existe algum item com status "AGUARDANDO"

 

No codigo acima é feita uma pesquisa direto na tbduplicatas

 

dessa forma ira me informar tudo que tenho na tabela, mas preciso saber o que tenho no dbgrid da pesquisa

 

meio complicado neh?

Cada hora você ta falando uma coisa...

 

Você quer saber o que a final???

 

1 - Quantos registros tem no Aguardando dentre todos???

 

2 - você quer mostrar apenas os Aguardando???

 

3 - você quer mostrar todos menos os Aguardando???

 

O que você quer?

 

Flwaew! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos tentar assim:

 

Tenho 500 registros na tb duplicatas certo?

 

Criei um botão que vai fazer um select ali e vai me listar em uma nova tela todos que estão vencidos.

 

Suponhamos que o resultado desse select sejam 10 registros.

Desses 10 registros suponhamos que 5 tenham o Status = AGUARDANDO e 5 tenham o Status = RECEBIDO

 

Certo até aqui?

 

ok...agora tenho nessa nova tela um botão que vai inserir essas duplicatas uma outra tabela. Porem quero ao clicar nesse botão o sistema faça uma busca nesses 10 registros que foram listados e me diga se existem registros com Status = AGUARDANDO

 

Caso encontre com Status = AGUARDANDO interrompa a rotina de baixa

 

acho que ficou mais claro agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que acabei me explicando mal

 

o que desejo é saber se no resultado da pesquisa existe algum item com status "AGUARDANDO"

 

No codigo acima é feita uma pesquisa direto na tbduplicatas

 

dessa forma ira me informar tudo que tenho na tabela, mas preciso saber o que tenho no dbgrid da pesquisa

 

meio complicado neh?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei disso Fabio...

 

No dbgrid quero que seja listado tudo que esta vencido e por isso usei esse codigo que funciona bem

 

Var
Mensagem, Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'SELECT * FROM tbduplicatas WHERE Vencimento <:Hoje';
Query1.ParamByName('Hoje').AsDateTime := StrToDate(Hoje);
Query1.Prepare;
Query1.Open;
Edit1.Text:= DateToStr(date);

 

O que desejo é saber se nessa consulta que fiz usando o codigo acima tem algum registro com status aguardando.

 

Essa é a minha duvida

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você não entendeu

 

O codigo abaixo esta ok, o que preciso é de alguma forma pesquisar no resultado dele se existe algo como AGUARDANDOO

 

O resultado dessa sql n esta associado a nenhuma tabela, pois é apenas uma consulta

 

Var
Mensagem, Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'SELECT * FROM tbduplicatas WHERE Vencimento <:Hoje';
Query1.ParamByName('Hoje').AsDateTime := StrToDate(Hoje);
Query1.Prepare;
Query1.Open;
Edit1.Text:= DateToStr(date);

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.