2012-08-03 38 views
0

我有一个搜索按钮,当我点击它,结果显示,但它有这个消息框,说“从字符串转换”“类型整数无效“。这里是我的搜索代码:Datagridview和搜索按钮从字符串“”转换为类型整数无效

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 

我不知道什么是错的。有什么建议么?提前致谢。上帝保佑!

+0

什么是'bims_expenditure' SQL表'type_id'和 '代码' 列的数据类型? – hims056 2012-08-07 04:06:09

+0

type_id是int,而代码是varchar ... – bayan0926 2012-08-08 00:21:38

回答

0

尝试RecordCount转化为String这样的:

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

正如你在bims_expendituretype_id列说是INT,所以你需要从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 
+0

type_id是int,而代码是varchar ... – bayan0926 2012-08-08 01:26:16

+0

@christianuscatholicus根据您的意见,我改进了答案现在就试试。 – hims056 2012-08-08 04:03:48

相关问题