2015-08-08 78 views
0

我与下列的表MS Access和VB.net查询错误

ID(integer) 
mat_id(integer) 
move_date(Date/Time) 
rec_num (Short text) 
Qty (number(double)) 

我已经做编程 的连接,并试图查询 代码如下

Public Class ViewMatInfo 
    Dim ConStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\RMM\RMMDB.mdb;Persist Security Info=True" 
    Dim Conn As New OleDb.OleDbConnection(ConStr) 
    Dim ShowTable As New OleDb.OleDbCommand 
    Dim RAD As OleDb.OleDbDataReader 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Try 
      ShowTable.Connection = Conn 
      ShowTable.CommandType = CommandType.Text 
      ShowTable.CommandText = "SELECT Sum(qty) AS [totqty] FROM moves WHERE [mat_id] = " & MT_TEXT.SelectedValue.ToString & "" 
      Conn.Open() 
      RAD = ShowTable.ExecuteReader() 
      While RAD.Read 
       SUM_TEXT.Text = RAD.GetDouble("totqty") 
      End While 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 
     Try 
      Me.MovesTableAdapter.FillByMat(Me.RMMDS.moves, MT_TEXT.SelectedValue) 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 

    End Sub 
End Class 

当我运行应用程序并从“MT_TEXT”组合框中选择材料时,然后单击按钮 ,数据网格视图会充满所有材料移动。 但SUM_TEXT文本框仍为空。 并得到错误信息 “从字符串转换‘totqty’到整数无效”

请有此问题的

+0

的[文档SELECT](https://msdn.microsoft.com/en-us/library/office/ff821148.aspx)不显示任何分隔符排序别名 - 它是否工作,如果你使用'SELECT Sum(qty)AS totqty FROM'...?另外,我建议使用SQL参数,而不是将查询值串联到SQL字符串中。 –

+0

哪一行会引发错误?这是一个吗? SUM_TEXT.Text = RAD.GetDouble(“totqty”) – HarveyFrench

+0

@Andrew。你是否修复了代码?我给了一个修复的答案? – HarveyFrench

回答

1
= " & MT_TEXT.SelectedValue.ToString & "" 

这看起来前途未卜的任何解决方案。为什么最后有两个双引号,而且之前只有一个。

如若线读取:

ShowTable.CommandText 
= "SELECT Sum(qty) AS [totqty] 
FROM moves WHERE [mat_id] = """ & MT_TEXT.SelectedValue.ToString & """"