URGENTE! Dúvida do dbgrid do delphi

Delphi

Lógica de programação

27/06/2018

Pessoal, tenho que apresentar meu tcc hoje dia 27/06 se alguem me responder antes seria legal o meu sistema ter isso. Tenho uma tabela de notas fiscais e quando a pessoa da um insert nessa tabela também um insert é dado na tabela financeiro. Tinha colocado um código para se a nota ou pedido estivesse como situação 'A pagar' (se estivesse para pagar depois) o registro na tabela financeiro ficasse vermelho. Acrescentei uma função na tela de cadastro de notas onde a pessoa pode excluir a nota de entrada desde que nenhum item dela tivesse sido excluido. AS VEZES quando excluo uma nota de entrada ele da uma mensagem 'Bookmark was not found' e não exclui a nota na tabela de financeiro (que nao vdd a nota nao é excluida só escondida no bd e os itens são diminuidos junto com o financeiro.

Agora se a pessoa quiser alterar o status de alguma nota que esteja com situação 'A pagar' ele não dá esse erro. E se forem vários registros como vai facilitar para o usuário? Aguardo resposta sem algume quiser me ajudar.
Luiz Silva

Luiz Silva

Curtidas 0

Respostas

Luiz Silva

Luiz Silva

27/06/2018

O código estava no evento Ondrawcolumncell desse dbgrid
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

27/06/2018

Uma dica é ter uma coluna em cada tabela com o Status

Tabela de nota campo staus
Cancelada - Autorizada

Pode usar modalidades
Retirada imediata - Pago na hora
Entrega - Em aberto

Seu financeiro deve levar em consideração o status e a modalidade.

Ou seja se a nota = Autorizada e Status <> Em aberto, contabiliza.

Mais acredito que está em cima para reformular a lógica
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

27/06/2018

Referente ao erro você precisa verificar a propriedade "DRAWCOLUMNCELL" do seu grid.

Exemplo :
if not odd(dm1.tbl_agenda_consulta.RecNo) then
if not (gdSelected in State) then
begin
DBGrid1.Canvas.Brush.Color:=$00FFEFDF;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawDataCell(rect, Column.Field, State);
end;

Debug todas as linhas e conseguirá resolver seu problema.
Abraço e boa sorte
GOSTEI 0
Luiz Silva

Luiz Silva

27/06/2018

Ok, poderia me explicar melhor o que você tinha dito primeiro? E o que significaria isso: if not odd(dm1.tbl_agenda_consulta.RecNo) then estou usando assim:

if (Zfin.fieldbyname('PAGAMENTO').Asstring = 'A Pagar' then
///:= cor;

Acontece que as vezes quando excluo uma nota de entrada que não está paga, ele dá essa mensagem.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

27/06/2018

em que ordem você está fazendo a 'exclusão'?
você deve manipular primeiro o financeiro e depois a nota.
GOSTEI 0
Luiz Silva

Luiz Silva

27/06/2018

estou fazendo primeiro a nota mas esse processo é feito na tabela de nota fiscal. Quando a pessoa da um insert na nota da tambem na de financeiro, não está ligada por inner join
GOSTEI 0
Luiz Silva

Luiz Silva

27/06/2018

eu faço um update e mudo a situação para I (inativo) no dbgrid ele da um select where situação = 'A';
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

27/06/2018

Isso tudo usando o mesmo dataset?
GOSTEI 0
Luiz Silva

Luiz Silva

27/06/2018

tenho algumas querys auxiliares limpo elas e executo os updates separadamente
GOSTEI 0
POSTAR