Renanbg 1 Denunciar post Postado Julho 22, 2008 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
FÁBIO ANALISTA 0 Denunciar post Postado Julho 23, 2008 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
Renanbg 1 Denunciar post Postado Julho 23, 2008 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
NaPraia 12 Denunciar post Postado Julho 23, 2008 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
Hugo Slepicka 0 Denunciar post Postado Julho 23, 2008 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
Renanbg 1 Denunciar post Postado Julho 23, 2008 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
Hugo Slepicka 0 Denunciar post Postado Julho 23, 2008 Seguinte fera.. você ta usando a mesma query para as duas coisas eu acho... não é??? Procure separar as querys que procuram o n° de Duplicatas Aguardando e a pesquisa do GRID.... Abraço! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
FÁBIO ANALISTA 0 Denunciar post Postado Julho 23, 2008 ok Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Julho 24, 2008 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
Hugo Slepicka 0 Denunciar post Postado Julho 24, 2008 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
Renanbg 1 Denunciar post Postado Julho 24, 2008 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
FÁBIO ANALISTA 0 Denunciar post Postado Julho 24, 2008 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
Renanbg 1 Denunciar post Postado Julho 24, 2008 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
FÁBIO ANALISTA 0 Denunciar post Postado Julho 24, 2008 Então tá Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Julho 25, 2008 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