Erro ao imprimir registros

Delphi

20/05/2010

Ola!   Eu tenho um form onde o usuario vai criar a receita e depois de criada ele salva e vai imprimir a mesma.Tenho um button salvar com este codigo :  
 if edtMedico.ItemIndex >= 0 then
 Begin
  if mReceita.Text <> '' then
  Begin
      With DM.cdsReceitas do
      Begin
        Insert;
        FieldbyName('COD_CLI').AsInteger := DM.cdsClientes.FieldByName('CODIGO').AsInteger;
        FieldByName('NOME_CLIENTE').AsString := DM.cdsClientes.FieldByName('NOME').AsString;
        FieldByName('MEDICO').AsString := edtMedico.Text;
        FieldByName('DATA').AsString := DateToStr(Now);
        FieldbyName('RECEITA').AsString := mReceita.GetRtfData;
        FieldByName('PROXIMA_RECEITA').AsString := DatetoStr(NextMonth(Now));
        Post;
        ApplyUpdates(0);
        Close;
        Open;
      end;
      Receita :=  mReceita.Text;
      MessageDlg('A receita : ' + #13#10 + Receita + #13#10 + ' foi salva com sucesso!',mtInformation,[mbOk],0);
      RzGroupBox1.Enabled := False;
      RzGroupBox2.Enabled := False;
      mReceita.Enabled := False;
      btSalvar.Enabled := False;
      btInserir.Enabled := True;
      btCancelar.Enabled := False;
      btFechar.Enabled := True;
      btImprimir.Enabled := True;
  end
  Else
  Begin
    MessageDlg('Você precisa entrar com a receita antes de salvar sua receita.',mtInformation,[mbOk],0);
    edtMedico.SetFocus;
  end;
 end
 Else
 Begin
   MessageDlg('Você precisa cadastrar o médico responsável antes de inserir qualquer receita ou exame.',mtInformation,[mbOk],0);
   btCancelarClick(Sender);
  end;
  e tenho um botao imprimir q imprime a receita q foi gravada com este codigo:  
  if mReceita.Text <> '' then
   Begin
     if MessageDlg('Deseja imprimir esta receita ?' + #13#10 + 'Verifique se a impressora está pronta e clique SIM',mtWarning,[mbYes,mbNo],0 ) = mrYes then
     Begin
      DM.cdsImprimir.Close;
      DM.cdsImprimir.CommandText := 'select * from RECEITASMEDICAS  where COD_CLI =:COD AND COD_RECEITAS =:COD_REC';
      DM.cdsImprimir.Params[0].AsInteger := DM.cdsClientes.FieldByName('CODIGO').AsInteger;
      DM.cdsImprimir.Params[1].AsInteger := DM.cdsReceitas.FieldByName('COD_RECEITAS').AsInteger;
      DM.cdsImprimir.Open;
      DM.RvProject1.Execute;
     end;
   end;
  Acontece que se eu gravo uma receita e imprimo depois sem fechar o form faço outra receita e gravo na hora de imprimir ao inves do programa imprimir a segunda receita pois a primeira ja foi impressa ele imprime a primeira de novo.     O q estou fazendo erraod?   obrigado
Eduardo Jr

Eduardo Jr

Curtidas 0

Respostas

Emerson Lara

Emerson Lara

20/05/2010

Caro Eduardo Procure verificar se esta fechando os clientdataset, se não esta ficando algo em memória "cache de dados" por no codigo de impressao pelo que vi você esta usando os fields, ele deve estar pegando o anterior.
GOSTEI 0
POSTAR