【发布时间】:2018-06-27 18:37:16
【问题描述】:
我想将一个变量设置为来自 aspx.vb 的 Access 数据库表中的一个值。我想将最高的“PalletNumber”返回到 txbPalletNumber 文本框。我做错了什么?
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim conn As New OleDbConnection
Dim connString As String
Dim cmd As New OleDbCommand
Try
' Set the connection string.
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\Users\SF7\Desktop\Shore Fresh Logistics_be_be.accdb"
' Open the connection.
conn.ConnectionString = connString
conn.Open()
'Set the command properties.
cmd.Connection = conn
cmd.CommandText = "SELECT PalletNumber, MAX(PalletNumber) FROM
tblPalletNumber"
txbPalletNumber.Text = cmd.ExecuteScalar()
conn.Close()
GridView1.DataBind()
Catch ex As Exception
'Error handling
End Try
txbPackday.Text = DateAndTime.Now
End Sub
【问题讨论】:
-
你的SQL语句不行,需要分组
PalletNumber -
您将在查询中返回 2 列供初学者使用。可能只需要有“MAX(PalletNumber)”
-
阿布尼说的。这里似乎不需要 PalletNumber。我真的希望这是一个有用的目的,而不是计算下一个要插入的 ID,而不是使用自动生成的唯一 ID。还有
Catch ex As Exception 'Error handling End Try我希望这还没有完成,因为它不处理错误,它只是挤压它们并假装它们不存在,然后你不知道出了什么问题,或者它的原因是什么。最后,如果您拥有多个用户,则将 Access 用于网站后端通常不是一种可扩展的方法。 -
只选择最大值就不需要group-by,只需要
SELECT MAX(PalletNumber) FROM tblPalletNumber -
只是为了澄清上面已经解释的内容。由于您的查询按原样将不起作用,并且也不是标量,因为您返回多个值。您需要:“SELECT MAX(PalletNumber) FROM tblPalletNumber”
标签: sql asp.net vb.net ms-access