1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Obter valor do registo anterior

Discussão em 'Programação' iniciada por Diogo Cardoso, 20 de Dezembro de 2008. (Respostas: 0; Visualizações: 380)

  1. 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
     

Partilhar esta Página