Autor
Mensagem
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!
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
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
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!

No BeforePost de seu adoTable coloque:
#Código
var
qryAux: TadoQuery;
begin
qryAux: TadoQuery;
begin
try
qryAux := TadoQuery.Create(qryAux);
qryAux.Connection := ADOConnection1;
qryAux.SQL.Add('Select * from receitas where id_requisicao = ' + dbeditid_requisicao.Text +
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;
FreeAndNil(qryAux);
end;
end;
Atenciosamente
Eriley
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;
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
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
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;








