DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
jean carlo faria mugica
 


País: Brasil
Estado: RS
Cidade: pelotas
Mensagens: 26
 Postado em: 10/8/2010 01:46:37 PM

olá pessoal...
tenho o seguinte problema...
uso BD access...onde tenho a tabela receitas...com os seguintes campos,requisicao,data,nome,cracha,obs,valor...
no campo 'obs' uso uma dbcombobox...com os items restante,sinal,total...
bom, o problema...ele só pode repetir a requisicao quando o "obs" for restante e sinal...quando for total não pode repetir...
agradeço a ajuda desde já
obrigado!

ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 10/8/2010 01:59:33 PM

No beforepost de sua tabela você deve testar se o campo obs é igual a 'total', se for da um Abort, mais ou menos assim:
if qryreceitas.FieldByName('OBS').Value = 'Total' then
begin
  ShowMessage('Esta requisição não pode ser repetida');
  qryreceitas.FieldByName('OBS').FocusControl;
  Abort;
end;
 
Atenciosamente
 
Eriley
Felipe Caputo
 


País: Brasil
Estado: MG
Cidade: São Tiago
Mensagens: 22
 Postado em: 10/8/2010 02:00:10 PM

Isso é simpes Jean, é só vc criar um procedimento para verificar no banco quando a pessoa colocar total se já existe algum registro daquela requisição na tabela ex:

#Código
adoquery1.sql.text := 'Select * from receitas where id_requisicao = :id_requisicao (o id que vc ta procurando)';
adoquery1.open;
if adoquery1.recordcount > 0 then
  ShowMessage('Não é possível inserir o pagamento total pois ja existe algum pagamento dessa requisicao')
else
  Procedmento normal

jean carlo faria mugica
 


País: Brasil
Estado: RS
Cidade: pelotas
Mensagens: 26
 Postado em: 10/8/2010 03:08:09 PM

FELIPE...eu uso o adotable...como é uma alteração no meu programa que já está em uso, vou tentar fazer sem o uso da adoquery....deixo como ultimo recurso...





e ao meu amigo ERILEY...

PODERIA COLOCAR UM EXEMPLO MAIS COMPLETO...?


ALI Ó...COLOCO A REQUISIÇÃO...E QUANDO O OBS FOR TOTAL..NÃO PODE REPETIR,E QUANDO FOR SINAL OU RESTANTE PODE!


ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 10/8/2010 04:26:16 PM

No BeforePost de seu adoTable coloque:
#Código
var
  qryAux: TadoQuery;
begin
  try
      qryAux := TadoQuery.Create(qryAux);
      qryAux.Connection := ADOConnection1;
      qryAux.SQL.Add('Select * from receitas where id_requisicao = ' + dbeditid_requisicao.Text +
        ' and obs = ' + QuotedStr(dbeditObs.Text));
      qryAux.open;
      if qryAux.recordcount > 0 then
      begin
         ShowMessage('Não é possível inserir o pagamento sinal ou restante,pois, ja existe um pagamento total dessa requisicao');
         Abort;
     end;
  finally
      FreeAndNil(qryAux);
  end;
end;

Atenciosamente
 
Eriley
jean carlo faria mugica
 


País: Brasil
Estado: RS
Cidade: pelotas
Mensagens: 26
 Postado em: 10/8/2010 05:11:24 PM

VALEW AMIGO...
mas acontece o seguinte erro...
TIPO DE DADOS IMCOPATIVEL NA EXPRESSÃO CRITÉRIO

#Código
procedure TForm1.TABLE1BeforePost(DataSet: TDataSet);
var
  qryAux: TadoQuery;
begin
begin
  try
      qryAux := TadoQuery.Create(qryAux);
      qryAux.Connection := ADOConnection1;
      qryAux.SQL.Add('Select * from tbreceitas where requisicao = ' + dbedit1.Text + ' and obs = ' + QuotedStr(dbcombobox1.Text));
      qryAux.open;
      if qryAux.recordcount > 0 then
      begin
         ShowMessage('Não é possível inserir o pagamento sinal ou restante,pois, ja existe um pagamento total dessa requisicao');
         Abort;
     end;
  finally
      FreeAndNil(qryAux);
  end;
end;

end;
Felipe Caputo
 


País: Brasil
Estado: MG
Cidade: São Tiago
Mensagens: 22
 Postado em: 10/8/2010 05:41:27 PM

nesta linha troque onde está
#Código
      qryAux.SQL.Add('Select * from tbreceitas where requisicao = ' + dbedit1.Text + ' and obs = ' + QuotedStr(dbcombobox1.Text));


 

por
#Código
      qryAux.SQL.Add('Select * from tbreceitas where requisicao = ' + dbedit1.Text + ' and obs = "' +dbcombobox1.Text+'"');

e se o campo requisicao também for string, faça o mesmo colocando aspas antes e depois dele
Pietro Enrico Braga
 

 


País: Brasil
Estado: RS
Cidade: Porto Alegre
Mensagens: 149
 Postado em: 10/8/2010 06:00:21 PM

Desculpe, não seria mais simple colocar no Oncreate do Formulárioalgo assim:

#Código

if (DbComboBox1.Text = 'Total') then
DbComboBox1.ReadOnly:= True;

Felipe Caputo
 


País: Brasil
Estado: MG
Cidade: São Tiago
Mensagens: 22
 Postado em: 10/8/2010 06:09:25 PM

não seria pq no caso dele posso trocar de registros e só alguns registros não permitiriam o pagamento total
ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 11/8/2010 09:27:03 AM

Para montar o SQL corretamente, preciso do nome da sua tabela, do nome dos campos com seu respectivo tipo de dado, poste aqui que monto o SQL correto.
 
Atenciosamente
 
Eriley
ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 11/8/2010 09:33:52 AM

Mas  se você acha que os campos estão certos, pode ser problema de espaços em barnco no dbedit e dbcombobox, se for isso altere a seguinte linha:
qryAux.SQL.Add('Select * from tbreceitas where requisicao = ' + dbedit1.Text + ' and obs = ' + QuotedStr(dbcombobox1.Text));
para:
qryAux.SQL.Add('Select * from tbreceitas where requisicao = ' + Trim(dbedit1.Text) + ' and obs = ' + QuotedStr(Trim(dbcombobox1.Text)));
 
Atenciosamente
 
Eriley
Felipe Caputo
 


País: Brasil
Estado: MG
Cidade: São Tiago
Mensagens: 22
 Postado em: 11/8/2010 09:35:16 AM

Eriley, no caso dele o access não usa aspas simples (QuotedStr) e sim aspas dupas para determinar strings
jean carlo faria mugica
 


País: Brasil
Estado: RS
Cidade: pelotas
Mensagens: 26
 Postado em: 11/8/2010 01:48:36 PM

valew Felipe!
deu certo o seu exemplo...até agora está perfeito...

qualquer coisa posto minha duvida...

muito obrigado pela ajuda a todos...

ficou assim o code

#Código
var
  qryAux: TadoQuery;
begin
begin
  try
      qryAux := TadoQuery.Create(qryAux);
      qryAux.Connection := ADOConnection1;
      qryAux.SQL.Add('Select * from tbreceitas where requisicao = "' + dbedit1.Text +'"  and obs = "' +dbcombobox1.Text+'"');
      qryAux.open;
      if qryAux.recordcount > 0 then
      begin
         ShowMessage('Não é possível inserir o pagamento ,pois, ja existe o mesmo');
         Abort;
     end;
  finally
      FreeAndNil(qryAux);
  end;
end;

end;
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03