首页 > 解决方案 > Accessviolationexception 在保存文件对话框中未处理 vb.net

问题描述

尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

当我按日期过滤我的 datagridview 并将其保存为 .dat 文件时出现此错误。

Dim sv As New SaveFileDialog()
    sv.FilterIndex = 2
    sv.RestoreDirectory = True
    sv.FileName = ""
    sv.Filter = "Text Document |*.dat"
    sv.Title = "Save as"
    Dim mm As String = DateTimePicker1.Value.Month
    Dim yy As String = DateTimePicker1.Value.Year
    Dim dd As String = mm & yy
    sv.FileName = "123456789" & "P" & dd
    If sv.ShowDialog = DialogResult.OK Then
        Dim writer As TextWriter = New System.IO.StreamWriter(sv.FileName)
        writer.Write("H,P," & "123456789" & "," & "ABC CORP" & "," & "DELA CRUZ" & "," & "JUAN POGI" & "," & "MADLANGTUTA" & "," & "ABC CORP TRADENAME" & "," & "BATANGAS CITY" & "," & "BATANGAS PROVINCE" & " " & "4200" & "," & totalExempt & "," & totalZeroRated & "," & totalServices & "," & totalCapitalGoods & "," & totalGoodsOther & "," & totalInputTax & "," & Creditable & "," & totalNonCreditable & "," & "058" & "," & DateTimePicker1.Text & "," & "12")
        writer.WriteLine("")
        For i As Integer = 0 To DataGridView1.Rows.Count - 1 Step +1
            writer.Write("D,P" & ",")
            For j As Integer = 0 To 12
                writer.Write(DataGridView1.Rows(i).Cells(j).Value.ToString() & ",")
            Next
            writer.Write("123456789" & "," & DateTimePicker1.Text)
            writer.WriteLine("")
        Next
        writer.Close()
        MsgBox("Generated Successfully", MsgBoxStyle.Information, "Transaction Complete")
    End If

https://drive.google.com/file/d/18lODhowILSuyl7zKZyJ55cH9U9DvL393/view 这里是我项目的录屏

enter code here

'' 这是我的过滤器代码

调用 connectDB() Try con.Open() cmd = New OleDbCommand("select colDate, colSupplierTin, ColSupplierName, colLastName, colFirstName, colMiddleName, colAddress1, colAddress2, colExempt, colZeroRated,colDomesticServices,colCapitalGood, colDomesticGoods, colInputTax, colNetofvat from tblPurchases where colDate像 '%" + DateTimePicker1.Text + "%'", con)

        adp = New OleDbDataAdapter(cmd)
        Dim table As New DataTable()
        adp.Fill(table)
        DataGridView1.DataSource = table
        Dim src As New BindingSource
        src.DataSource = DataGridView1.DataSource

        DataGridView1.Columns(0).HeaderText = "DATE"
        DataGridView1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(0).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(1).HeaderText = "SUPPLIER TIN"
        DataGridView1.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(1).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(2).HeaderText = "SUPPLIER NAME"
        DataGridView1.Columns(2).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(2).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(3).HeaderCell.Value = "LAST NAME"
        DataGridView1.Columns(3).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(3).SortMode = DataGridViewColumnSortMode.Programmatic
        DataGridView1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        DataGridView1.Columns(4).HeaderCell.Value = "FIRST NAME"
        DataGridView1.Columns(4).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(4).SortMode = DataGridViewColumnSortMode.Programmatic
        DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft

        DataGridView1.Columns(5).HeaderCell.Value = "MIDDLE NAME"
        DataGridView1.Columns(5).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(5).SortMode = DataGridViewColumnSortMode.Programmatic
        DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft

        DataGridView1.Columns(6).HeaderCell.Value = "BARANGAY / SUBSTREET"
        DataGridView1.Columns(6).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(6).SortMode = DataGridViewColumnSortMode.Programmatic
        DataGridView1.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft

        DataGridView1.Columns(7).HeaderCell.Value = "CITY / PROVINCE"
        DataGridView1.Columns(7).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(7).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(8).HeaderCell.Value = "EXEMPT PURCHASES"
        DataGridView1.Columns(8).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(8).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(9).HeaderCell.Value = "ZERO-RATED PURCHASES"
        DataGridView1.Columns(9).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(9).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter
        DataGridView1.Columns(9).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(10).HeaderCell.Value = "DOMESTIC SERVICES"
        DataGridView1.Columns(10).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(10).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        DataGridView1.Columns(10).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(11).HeaderCell.Value = "CAPITAL GOODS"
        DataGridView1.Columns(11).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(11).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        DataGridView1.Columns(11).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(12).HeaderCell.Value = "GOODS OTHER THAN CAPITAL GOODS"
        DataGridView1.Columns(12).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(12).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        DataGridView1.Columns(12).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(13).HeaderCell.Value = "TOTAL INPUT TAX"
        DataGridView1.Columns(13).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(13).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        DataGridView1.Columns(13).SortMode = DataGridViewColumnSortMode.Programmatic

        DataGridView1.Columns(14).HeaderCell.Value = "TAXABLE NET OF VAT"
        DataGridView1.Columns(14).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        DataGridView1.Columns(14).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        DataGridView1.Columns(14).SortMode = DataGridViewColumnSortMode.Programmatic
        DataGridView1.Columns(14).DefaultCellStyle.Format = "c"
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    Call Computation()
    con.Close()

标签: vb.net

解决方案


推荐阅读