Обновить данные на основе серийного номера - PullRequest
0 голосов
/ 22 января 2019

У меня есть пользовательская форма, которая позволяет пользователям вводить данные в таблицу.

Серийный номер создается для каждой строки данных на основе выбора 2 ComboBox и 0001 в конце.

Например, MAPR0001, где MA берется из ComboBox, а PR от другого и в конце 0001 добавляется и увеличивается для другого выбора MA и PR. (MAPR0002)

Затем у меня есть вторая пользовательская форма, которая должна позволять мне обновлять базу данных.
После выбора серийного номера в ComboBox вторая пользовательская форма возвращает данные из рабочего листа в некоторые текстовые поля. Пока здесь все отлично работает.

Но мне не удается добавить данные к определенному серийному номеру.

Мой код для командной кнопки:

Private sub Commandbuttonclick ()
    If Me.ComboBox1.Value = "" Then
        MsgBox "Request No. Can Not be Blank", vbExclamation, "Request No."
        Exit Sub
    End If

    requestno = Me.ComboBox1.Value
    Sheets("DASHBOARD").Select

    Dim rowselect As Double
    rowselect = Me.combobox1.Value
    rowselect = rowselect + 1
    Rows(rowselect).Select

    Cells(rowselect, 2) = Me.TextBox1.Value
    Cells(rowselect, 3) = Me.TextBox2.Value
    Cells(rowselect, 4) = Me.TextBox3.Value

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Есть несколько способов сделать это.Вот один из вариантов, который вы можете попробовать.

'Private Sub Worksheet_Change(ByVal Target As Range)

Sub ImportDataFromExcel()
    Dim rng As Range
    Dim r As Long
    Dim conn As ADODB.Connection
    Dim strConn As String
    Dim strSQL As String

    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        "C:\Users\Ryan\Desktop\Coding\Integrating Access and Excel and SQL Server\Access & Excel & SQL Server\" & _
        "EXCEL AND ACCESS AND SQL SERVER\Excel & Access\Select, Insert, Update & Delete\Northwind.mdb"
    Set conn = New ADODB.Connection
    conn.Open strConn

    With Worksheets("Sheet1")
        lastrow = .Range("A2").End(xlDown).Row
        lastcolumn = .Range("A2").End(xlToRight).Column
        Set rng = .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
    End With

        'therow = 1

        For i = 2 To lastrow
            'r = rng.Row
            'If r > 1 Then
                strSQL = "UPDATE PersonInformation SET " & _
                    "FName='" & Worksheets("Sheet1").Range("B" & i).Value & "', " & _
                    "LName='" & Worksheets("Sheet1").Range("C" & i).Value & "', " & _
                    "Address='" & Worksheets("Sheet1").Range("D" & i).Value & "', " & _
                    "Age=" & Worksheets("Sheet1").Range("E" & i).Value & " WHERE " & _
                    "ID=" & Worksheets("Sheet1").Range("A" & i).Value
                conn.Execute strSQL
            'End If
            'r = r + 1
        Next i


    conn.Close
    Set conn = Nothing
End Sub

Это только для иллюстрации.Пожалуйста, измените в соответствии с вашими потребностями.

0 голосов
/ 22 января 2019

Используйте метод WorksheetFunction.Match , чтобы найти серийный номер, который вы хотите обновить.Match возвращает номер строки, который вы могли бы использовать вместо rowselect для записи своих данных.

Например, что-то вроде этого:

Dim MySerial As String
MySerial = "MAPR0001" 'adjust to your needs

Dim MyLookupRange As Range
Set MyLookupRange = Sheets("DASHBOARD").Range("A:A") 'adjust to where your serials are

Dim RowToUpdate As Long
On Error Resume Next 'next line throws error if serial not found
RowToUpdate = WorksheetFunction.Match(MySerial, MyLookupRange, 0)
On Error Goto 0 'always re-enable error reporting!

If RowToUpdate > 0 Then
    'serial found, update here eg …
    'Sheets("DASHBOARD").Cells(RowToUpdate, 2) = Me.TextBox1.Value
Else
    MsgBox "Serial " & MySerial & " was not found."
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...