Автоматическое увеличение Excel OleDb Connection Vb.net - PullRequest
0 голосов
/ 08 сентября 2018

Я хочу автоматически увеличить идентификатор, когда я добавляю новые данные в Excel, и этот код не имеет автоматического увеличения, это только увеличение на 2, и я не могу понять, почему, пожалуйста, помогите thankssss

Dim Value As Integer
    cn = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "C:\\Users\\Barbatos\\Desktop\\Book3.xlsx " + ";Extended Properties=Excel 12.0;")
    cm = New OleDbCommand("SELECT MAX ([ID]) FROM [Sheet1$]", cn)
    cn.Open()
    Dim dr As OleDbDataReader = cm.ExecuteReader()
    If dr.HasRows Then
        dr.Read()
        Value = dr(0)
    Else
    End If
    dr.Close()
    Dim str As String
    Dim empid As Integer
    Dim newNumber As Integer
    str = "SELECT MAX([ID]) AS MAXIMUM FROM [Sheet1$]"
    Dim cmd2 As OleDbCommand = New OleDbCommand(str, cn)
    'Dim dr As OleDbDataReader
    dr = cmd2.ExecuteReader
    If dr.HasRows Then
        While dr.Read()
            If empid = IsDBNull(dr("MAXIMUM")) Then
                newNumber = CInt(Val(empid)) + 1
            End If
            If newNumber = 0 Then
                newNumber = 1
                empid = CStr(newNumber)
            ElseIf newNumber = 1 Then
                newNumber = newNumber + 1
                empid = CStr(newNumber)
            Else
                newNumber = newNumber + 1
                empid = CStr(newNumber)
            End If
        End While
    End If
    dr.Close()
    Me.Label2.Text = empid

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Подводя итог моим комментариям, я буду делать это:

Dim nextId As Integer

Using connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Barbatos\\Desktop\\Book3.xlsx;Extended Properties=Excel 12.0;"),
      command As New OleDbCommand("SELECT MAX([ID]) FROM [Sheet1$]", connection)
    connection.Open()

    Dim currentId = command.ExecuteScalar()

    nextId = If(currentId Is DBNull.Value, 1, CInt(currentId) + 1)
End Using

или, если поддерживается, это:

Dim nextId As Integer

Using connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Barbatos\\Desktop\\Book3.xlsx;Extended Properties=Excel 12.0;"),
      command As New OleDbCommand("SELECT ISNULL(MAX([ID]), 0) FROM [Sheet1$]", connection)
    connection.Open()

    nextId = CInt(command.ExecuteScalar()) + 1
End Using
0 голосов
/ 08 сентября 2018

РЕШЕНО

If dr.HasRows Then
        dr.Read()
        If IsDBNull(dr("MAXIMUM")) Then
            empid = 1
        Else
            empid = CInt(dr("MAXIMUM")) + 1
        End If
    Else
        empid = 1
    End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...