PrintDocument第二次打印失败

问题描述 投票:0回答:1

这里是完整代码

Imports System.Data.OleDb
Public Class veterinarycgpa

    Private Sub veterinarycgpa_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim matricno, sessionad As String
        matricno = pretranscript.matric.Text
        sessionad = pretranscript.session.Text
        'semester = checkresult.semester.Text
        Dim allunit, allwgp As Decimal

        Try

            Dim con As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=cgpa.accdb")
            Dim cmd As New System.Data.OleDb.OleDbCommand
            If con.State = ConnectionState.Closed Then
                con.Open()
            End If

            Dim dr As OleDbDataReader
            cmd.CommandText = System.Data.CommandType.Text
            Dim str As String
            str = "SELECT [fullname],[matric], [maiden_name], [gender], [session_admitted], [mode_of_entry], [programme] FROM student WHERE [matric]='" & matricno & "' AND [session_admitted] = '" & sessionad & "' "
            Dim cd As OleDbCommand = New OleDbCommand(str, con)
            dr = cd.ExecuteReader
            dr.Read()

            If dr("matric") = pretranscript.matric.Text Then 'checkresult.matric.Text
                fullname.Text = dr("fullname").ToString
                matric.Text = dr("matric").ToString
                mname.Text = dr("maiden_name").ToString
                session.Text = dr("session_admitted").ToString
                gender.Text = dr("gender").ToString
                mode_of_entry.Text = dr("mode_of_entry").ToString
                programme.Text = dr("programme").ToString
            End If
            'MsgBox("No Result found for the given matric no and session", MsgBoxStyle.Critical)
            con.Close()

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            str = " SELECT [matric], [session], [pvp711] ,[pvp713] ,[pvp719] ,[pvp703] ,[pvp715], [pvp717], [pvp701] FROM veterinaryone WHERE [matric]='" & matricno & "' AND [session] = '" & sessionad & "'"
            Dim cd1 As OleDbCommand = New OleDbCommand(str, con)
            dr = cd1.ExecuteReader
            dr.Read()

            If dr("matric") = pretranscript.matric.Text Then
                score1.Text = dr("pvp711").ToString
                score2.Text = dr("pvp713").ToString
                score3.Text = dr("pvp719").ToString
                score4.Text = dr("pvp703").ToString
                score5.Text = dr("pvp715").ToString
                score6.Text = dr("pvp717").ToString
                score7.Text = dr("pvp701").ToString
            End If
            con.Close()

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            str = " SELECT [matric], [session], [pvp710] ,[pvp712] ,[pvp714] ,[pvp716] ,[pvp702], [pvp704], [pvp718], [pvp722], [pau3101], [pau3104] FROM veterinarytwo WHERE [matric]='" & matricno & "' AND [session] = '" & sessionad & "'"
            Dim cd2 As OleDbCommand = New OleDbCommand(str, con)
            dr = cd2.ExecuteReader
            dr.Read()

            If dr("matric") = pretranscript.matric.Text Then
                score8.Text = dr("pvp710").ToString
                score9.Text = dr("pvp712").ToString
                score10.Text = dr("pvp714").ToString
                score11.Text = dr("pvp716").ToString
                score12.Text = dr("pvp702").ToString
                score13.Text = dr("pvp704").ToString
                score14.Text = dr("pvp718").ToString
                score15.Text = dr("pvp722").ToString
                score16.Text = dr("pau3101").ToString
                score17.Text = dr("pau3104").ToString

            End If
            con.Close()

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            str = " SELECT [matric], [session], [pvp721] FROM veterinarythree WHERE [matric]='" & matricno & "' AND [session] = '" & sessionad & "'"
            Dim cd3 As OleDbCommand = New OleDbCommand(str, con)
            dr = cd3.ExecuteReader
            dr.Read()

            If dr("matric") = pretranscript.matric.Text Then
                score18.Text = dr("pvp721").ToString
            End If
            con.Close()

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            str = " SELECT [matric], [session], [pvp720], [pvp724] FROM veterinaryfour WHERE [matric]='" & matricno & "' AND [session] = '" & sessionad & "'"
            Dim cd4 As OleDbCommand = New OleDbCommand(str, con)
            dr = cd4.ExecuteReader
            dr.Read()

            If dr("matric") = pretranscript.matric.Text Then
                score19.Text = dr("pvp720").ToString
                score20.Text = dr("pvp724").ToString
            End If
            con.Close()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "ALERT")
        End Try
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Visible = False
        Button2.Visible = False
        PrintPreviewDialog1.Document = PrintDocument1
        'PrintPreviewDialog1.PrintPreviewControl.Zoom = 1
        PrintPreviewDialog1.ShowDialog()
        'PrintDocument1.DefaultPageSettings.Landscape = True
        PrintDocument1.Print()
        Button1.Visible = True
        Button2.Visible = True
    End Sub

    Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim groupbox As New Bitmap(Me.Width, Me.Height)
        Me.DrawToBitmap(groupbox, New Rectangle(0, 0, Me.Width, Me.Height))
        e.Graphics.DrawImage(groupbox, 0, 0)

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Me.Close()
    End Sub
End Class

我也有其他包含此类代码的表单,因此,如果我从中进行打印,它将自动成功打印为PDF,但是如果我关闭该表单并再次打开它或第二次打印任何其他表单,则它将中断并且导致此错误。

Pau_CGPA.exe中0x5adf7ecf(dui70.dll)处的首次机会异常:0xC0000005:访问冲突读取位置0x0000001c。 Pau_CGPA.exe中0x5adf7ecf(dui70.dll)处的未处理异常:0xC000041D:0xC000041D:在用户回调期间遇到未处理的异常。

所以我不知道怎么了。

vb.net visual-studio-2012 printing printdocument
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.