SHAREPOINT VBA EXCEL ADDOB запись AddNew

#sql #excel #vba #sharepoint

#sql #преуспеть #vba #sharepoint

Вопрос:

Я могу добавить новые данные в пустой список, но когда список заполнен. У меня возникает проблема, когда в списке есть элемент. У меня есть следующее сообщение об ошибке, которое отображает: «дескриптор строки ссылается на удаленную строку или строку, помеченную для удаления».

Вот код:

 Option Explicit 
Sub AddNew_SP()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim mySQL As String
Dim intRowActive As Integer
Dim intcolumnActive As Integer

Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
intRowActive = ActiveCell.Row
intcolumnActive = ActiveCell.Column
 mySQL = "SELECT * FROM [test Prestations actif] WHERE [Test] = '"   Sheets("Plannification").Cells(intRowActive, 2).Value   "'And [Date] = #"   Format(Sheets("Plannification").Cells(6, intcolumnActive).Value, "dd/MM/yyyy")   "#;"


With cnt
    .ConnectionString = _
    "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE= url;LIST={47D821D1-325A-44CC-A22A-E838B6C6B8E1};"
    .Open
End With

rst.Open mySQL, cnt, adOpenDynamic, adLockOptimistic

rst.AddNew
    rst.Fields(1) = "Nom1"
    rst.Fields(2) = "PréNom1"
    rst.Fields(3) = "addresse"



rst.Update

If CBool(rst.State And adStateOpen) = True Then rst.Close
Set rst = Nothing
If CBool(cnt.State And adStateOpen) = True Then cnt.Close
Set cnt = Nothing

End Sub
 

Не могли бы вы мне помочь?

Ответ №1:

Попробуйте использовать инструкцию INSERT

 Sub AddNew_SP()

    Const mySQL = "INSERT INTO [test1] VALUES (?,?,?)"
    
    Dim cnt As new adodb.Connection
    With cnt
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;" amp; _
         "DATABASE= URL;LIST={47D821D1-325A-44CC-A22A-E838B6C6B8E1};"
        .Open
    End With
    
    Dim cmd As adodb.Command
    Set cmd = New adodb.Command
    With cmd
        .ActiveConnection = cnt
        .CommandText = mySQL
        .CommandType = 1 'adCmdText
        .Parameters.Append .CreateParameter("P1", adVarChar, 1, 10) ' varchar(10)
        .Parameters.Append .CreateParameter("P2", adVarChar, 1, 10) ' 1 = adParamInput
        .Parameters.Append .CreateParameter("P3", adVarChar, 1, 10) '
    End With
    
    ' new record
    Dim n As Integer, ar
    ar = Array("Nom1", "PréNom1", "address")
    cmd.Execute n, ar
    
    MsgBox n amp; " record(s) inserted", vbInformation, "Done"
        
    If CBool(cnt.State And adStateOpen) = True Then cnt.Close
    Set cnt = Nothing
End Sub