从字符串“”到类型整数的数据网格视图和搜索按钮转换无效

时间:2012-08-03 05:44:04

标签: vb.net string search datagridview integer

我有一个搜索按钮,当我点击它时,结果显示但是它有一个消息框,上面写着“从字符串转换”“到类型整数无效”。这是我的搜索代码:

Private Sub btnSearchExpenditure_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearchExpenditure.Click
  Try
    If txtSearchExpenditure.Text = "" Then
        MsgBox("Please fill up search field!", MsgBoxStyle.Exclamation)
        Exit Sub
        Else
        modGlobalFunctions.Connection.Close()
        modGlobalFunctions.connectDatabase()
        RecordCount = modGlobalFunctions.loadDataGrid("SELECT * " & _
                      "FROM bims_expenditure " & _
                      "WHERE type_id='" & TypeId & "' " & _
                      "AND (code LIKE '%" & txtSearchExpenditure.Text & "%' " & _
                      "OR object_name LIKE '%" & txtSearchExpenditure.Text & "%' ) " & _
                      "ORDER BY code ASC", dgvExpenditureItems)
                 If RecordCount = 0 Then
                    txtCodeExpenditure.Clear()
                    txtNameExpenditure.Clear()
                    MsgBox("No records found!", MsgBoxStyle.Exclamation)
                End If
                With dgvExpenditureItems
                    .Font = gridFont.Font
                    .Columns(1).Visible = False
                    .Columns(4).Visible = False
                    .Columns(5).Visible = False
                    .Columns(6).Visible = False
                    .Columns(7).Visible = False

                    .Columns(0).HeaderText = ""
                    .Columns(2).HeaderText = "Code"
                    .Columns(3).HeaderText = "Name"

                    .Columns(0).Width = 0
                    .Columns(2).Width = 150
                    .Columns(3).Width = 540
                End With
                frmMain.recordsLabel.Visible = True
                frmMain.tssRecords.Text = RecordCount
                modGlobalFunctions.Connection.Close()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "BIMS", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

我不知道出了什么问题。有什么建议?提前致谢。上帝bLess!

1 个答案:

答案 0 :(得分:0)

尝试将RecordCount转换为String,如下所示:

frmMain.tssRecords.Text = Convert.ToString(RecordCount)

正如您所说type_id表中的bims_expenditureINT,因此您需要从''的值中移除type_id(ig您的查询应该是WHERE type_id=" & TypeId & " "而不是WHERE type_id='" & TypeId & "' ")。

请尝试以下代码:

Private Sub btnSearchExpenditure_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearchExpenditure.Click
  Try
    If txtSearchExpenditure.Text = "" Then
        MsgBox("Please fill up search field!", MsgBoxStyle.Exclamation)
        Exit Sub
        Else
        modGlobalFunctions.Connection.Close()
        modGlobalFunctions.connectDatabase()
        RecordCount = modGlobalFunctions.loadDataGrid("SELECT * " & _
                      "FROM bims_expenditure " & _
                      "WHERE type_id=" & TypeId & " " & _
                      "AND (code LIKE '%" & txtSearchExpenditure.Text & "%' " & _
                      "OR object_name LIKE '%" & txtSearchExpenditure.Text & "%' ) " & _
                      "ORDER BY code ASC", dgvExpenditureItems)
                 If RecordCount = 0 Then
                    txtCodeExpenditure.Clear()
                    txtNameExpenditure.Clear()
                    MsgBox("No records found!", MsgBoxStyle.Exclamation)
                End If
                With dgvExpenditureItems
                    .Font = gridFont.Font
                    .Columns(1).Visible = False
                    .Columns(4).Visible = False
                    .Columns(5).Visible = False
                    .Columns(6).Visible = False
                    .Columns(7).Visible = False

                    .Columns(0).HeaderText = ""
                    .Columns(2).HeaderText = "Code"
                    .Columns(3).HeaderText = "Name"

                    .Columns(0).Width = 0
                    .Columns(2).Width = 150
                    .Columns(3).Width = 540
                End With
                frmMain.recordsLabel.Visible = True
                frmMain.tssRecords.Text = Convert.ToString(RecordCount)
                modGlobalFunctions.Connection.Close()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "BIMS", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub