0

如何在访问表的列中找到最大值。并显示在文本框中。我将 101 作为列的默认值,并且表为空。我尝试这样..但它不起作用。代码如下

Dim empid As Integer
empid=101
TXTEMPID.Text=empid
getConnect()
    Dim strSQL As String = "SELECT MAX(EMP_ID) FROM EMPLOYEE "
    Dim cmd As OleDb.OleDbCommand
    Dim Reader As OleDb.OleDbDataReader
    cmd = New OleDb.OleDbCommand(strSQL, Conn)
    Try
        Conn.Open()
        Reader = cmd.ExecuteReader()
        If Reader.Read Then
            empid = CInt(Reader("EMP_ID"))
        End If
        MessageBox.Show(empid)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        Conn.Close()
    End Try
    TXTEMPID.Text = empid + 1
4

3 回答 3

1

如果表为空,则没有“最大值”,因为表根本不包含任何值。

编辑

啊好吧。听起来您好像被以下事实绊倒了:对于一个空表,诸如DMax("EMP_ID","YourTable")will returnNullNull + 1will return之类的表达式Null,那么我们如何开始呢?你可以尝试类似...

Me.txtEMP_ID.Value = Nz(DMax("EMP_ID","YourTable"), 100) + 1

...在Form Load事件中,虽然我应该提到这种类型的方法可能会导致问题是您的数据库是(或将成为)多用户。

于 2013-05-01T11:49:11.513 回答
0

这是查询

Select Top 1 MAX(col 2), col1 from Table1 group by col1

得到你必须执行的结果

Dim cnnOLEDB As New OleDbConnection
Dim cmdOLEDB As New OleDbCommand
Dim strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &    System.Environment.CurrentDirectory & "\URDataBaseName.mdb"
cnnOLEDB.ConnectionString = strConnectionString
cnnOLEDB.Open()

cmdOLEDB.CommandText ="Select Top 1 MAX(col 2), col1 from Table1 group by col1"
cmdOLEDB.Connection = cnnOLEDB

txtbox.text = cmdOLEDB.ExecuteScalar().ToString()

ExecuteScalar 执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行被忽略

于 2013-05-01T11:52:35.287 回答
0

我像下面给出的那样更改我的代码..它的工作很酷......

 getConnect()
    Conn.Open() 
    Dim str As String
    Dim newNumber As Integer
    str = "SELECT MAX(EMP_ID) AS MAXIMUM FROM EMPLOYEE"
    Dim cmd As OleDbCommand = New OleDbCommand(str, Conn)
    Dim dr As OleDbDataReader
    dr = cmd.ExecuteReader
    If dr.HasRows Then
        While dr.Read()
            TXTEMPID.Text = dr("MAXIMUM").ToString
            newNumber = CInt(Val(TXTEMPID.Text))
            If newNumber = 0 Then
                newNumber = 101
                TXTEMPID.Text = CStr(newNumber)
            Else
                newNumber = newNumber + 1
                TXTEMPID.Text = CStr(newNumber)
            End If
        End While
    End If
    Conn.Close() 

谢谢大家重播和评论我的问题

于 2013-05-02T07:58:47.257 回答