Obter valor do registo anterior

Bom dia,
para um projecto pessoal que estou a fazer para iniciar-me no VB.Net, decidi fazer uma simples aplicação para guardar uns dados e mostrar uns relatórios.

A minha dúvida é a seguinte, e passo a explicar a estrutura do meu projecto:


  • Form1 -> Form Inicial, com 3 textboxs, o BindingNavigator, e 2 butões, para o Form2 e o VisualizarImprimir


Quando faço o load, o seguinte código é carregado, para preencher os valores.
Me.Tb_clientesTableAdapter.Fill(Me.DCDataSet.tb_clientes) .
Num butão tenho também o seguinte código,
Código:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim visualForm As New VisualizarImprimir

        visualForm.cnome = Me.NomeTextBox.Text
        visualForm.clienteID = Me.ClienteIDTextBox.Text
        visualForm.cemail = Me.EmailTextBox.Text
        visualForm.cemail_antes = Me.EmailTextBox.Text

        visualForm.ShowDialog() ,
que me filtra, para o form VisualizarImprimir, o registo actual e o qual vai ser mostrado no relatório.


  • Form2 -> Semelhante ao Form1, a única diferença é a maneira como são apresentados os registos, através de um DataGridView
  • VisualizarImprimir

Neste Form, tenho um PrintDocument, um PrintPreview, e alguns butões para futuras actualizações, nomeadamente em termos de obter a lista das impressoras, bem como definir a qual usar.
Quanto ao código aqui está

Código:
Public Class VisualizarImprimir
    Public cnome As String
    Public clienteID As String
    Public cemail As String
    Public cemail_antes As String

    Private Sub VisualizarImprimir_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'DCDataSet.tb_clientes' table. You can move, or remove it, as needed.
        Me.Tb_clientesTableAdapter.Fill(Me.DCDataSet.tb_clientes)
        Me.ComboBox1.Text = PrintDocument1.PrinterSettings.PrinterName

    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.DrawString("Dados do Cliente", New Font("arial", 40, FontStyle.Regular), Brushes.Black, 160, 80)
        e.Graphics.DrawString("ClienteID : ", New Font("arial", 15, FontStyle.Regular), Brushes.Black, 20, 200)
        e.Graphics.DrawString(clienteID, New Font("arial", 15, FontStyle.Regular), Brushes.Black, 220, 200)
        e.Graphics.DrawString("Nome : ", New Font("arial", 15, FontStyle.Regular), Brushes.Black, 20, 230)
        e.Graphics.DrawString(cnome, New Font("arial", 15, FontStyle.Regular), Brushes.Black, 220, 230)
        e.Graphics.DrawString("Email : ", New Font("arial", 15, FontStyle.Regular), Brushes.Black, 20, 260)
        e.Graphics.DrawString([B]cemail - cemail_antes[/B], New Font("arial", 15, FontStyle.Regular), Brushes.Black, 220, 260)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        PrintDocument1.Print()

    End Sub

    Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged

        Dim zoomno As Integer

        zoomno = Convert.ToInt32(NumericUpDown1.Value)
        PrintPreviewControl1.Size = New Size(zoomno * 10, zoomno * 10)
        PrintPreviewControl1.AutoZoom = True

    End Sub
End Class
Nota1: cemail, bem com cemail_antes são valores, ou seja o campo não é texto, mas sim possui lá valores em números.

A minha dúvida é, no relatório, na parte que se encontra a bold no código "cemail - cemail_antes", o que eu queria que fosse mostrado no relatório era a diferença entre o valor deste registo e do registo anterior, e é aí que predomina a minha dúvida, como obtenho o valor anterior a este registo.


Peço desculpa pelo extenso post, mas penso que esteja organizado, e fácil de comprender a minha dúvida.
Obrigado e Cumprimentos

PS: "Protótipo" do projecto aqui -> https://dmc-host.net/vb/DC.rar
 
Back
Topo