eu fiz assim:
if dm.CDS_LIVROS.Locate('ID_LIVRO',dm.CDS_RESERVA.FieldByName('TOMBO_LIVRO').AsInteger,[]) then // livro escolhido
begin
if dm.CDS_RESERVA.FieldByName('DT_RESERVA').AsDateTime =Strtodate(dbedit5.Text) then // verifica se as datas são iguais
begin
messagedlg('Livro reservado nesta data, escolha outra data!',mtInformation,[mbok],0);
DBLookupComboBox2.SetFocus;
end
else
begin
falso();
tratabotoes();
dm.CDS_RESERVA.Post;
dm.CDS_LIVROS.Edit;
dm.CDS_LIVROS.FieldByName('STATUS_LIVRO').AsString:=('RESERVADO');
DM.CDS_LIVROS.Refresh;
messagedlg('Registro inserido com sucesso!',mtInformation,[mbok],0);
if messagedlg('Deseja imprimir o recibo?',MtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
dm.recibo_reserva.ShowReport;
end
else
abort;
end;
end;
mais não deu certo ele sempre aparece registro inserido com sucesso. eu uso banco firebird e o delphi e o xe8 se a pessoa quiser reservar um livro diferente nessa mesma data pode, so não pode reservar o mesmo livro na mesma data.