Access
 sql >> база данни >  >> RDS >> Access

Масови вмъквания на Salesforce от Microsoft Access

Версия 2+ на Salesforce ODBC драйвера ви позволява да групирате множество оператори за вмъкване на SOQL. Този блог ви показва как да вмъкнете множество записи на Microsoft Access в Salesforce.

За да започнете:

  • Инсталирайте и лицензирайте Salesforce.com ODBC драйвера на машината, където е инсталиран Microsoft Access.

Преди да можете да използвате Salesforce.com ODBC драйвера, за да свържете приложението си към Salesforce.com, трябва да конфигурирате източник на ODBC данни. Източникът на ODBC данни съхранява подробностите за връзката за целевата база данни (напр. Salesforce.com) и ODBC драйвера, който е необходим за свързване с нея (например Salesforce.com ODBC драйвер).

За да стартирате ODBC Administrator (който използвате за създаване на източник на данни), в диалоговия прозорец Изпълнение на Windows въведете тази команда, ако използвате 64-битова версия на Microsoft Office:

%windir%\system32\odbcad32.exe

–Или–

Въведете тази команда, ако използвате 32-битова версия на Microsoft Office:

%windir%\syswow64\odbcad32.exe

Ако не сте сигурни дали вашата версия на Microsoft Office е 32-битова или 64-битова, стартирайте приложение на Office, напр. Microsoft Access и след това потърсете процеса на приложението в диспечера на задачите. Ако името на процеса е (за Microsoft Access) MSACCESS.EXE *32, Microsoft Office е 32-битов. Ако името на процеса е MSACCESS.EXE, Microsoft Office е 64-битов.

За да създадете източник на данни за Salesforce.com ODBC драйвер:

  1. В ODBC Administrator изберете раздела System DSN и след това изберете Добавяне.
  2. В диалоговия прозорец Създаване на нов източник на данни изберете Easysoft Salesforce ODBC SOQL драйвер и след това изберете Край.
  3. Попълнете диалоговия прозорец Easysoft Salesforce SOQL ODBC Driver DSN Setup:
    Setting Стойност
    DSN SFSOQL
    Потребителско име Името на вашия потребител на Salesforce.com. Например [email protected].
    Парола Паролата за вашия потребител на Salesforce.com.
    Токен Токенът за защита за вашия потребител на Salesforce.com, ако е необходимо.

    За да разберете дали трябва да предоставите токен за защита, изберете бутона Тест. Ако опитът за свързване е неуспешен с грешка, която съдържа LOGIN_MUST_USE_SECURITY_TOKEN , трябва да предоставите такъв.

    Salesforce.com изпраща по имейл токена за сигурност на имейл адреса, свързан с вашия потребителски акаунт в Salesforce.com. Ако не сте получили токен за сигурност, можете да го регенерирате. След това Salesforce.com ще ви изпрати по имейл новия токен за сигурност. За да регенерирате своя токен за сигурност, влезте в Salesforce.com и след това изберете Настройка от потребителското меню. Потърсете "сигурен маркер" в полето за бързо намиране. Щракнете върху Нулиране на маркера за защита на страницата Нулиране на маркера за защита. Когато получите маркера във вашия имейл клиент, копирайте го и след това го поставете в полето Token.

  4. Използвайте бутона Тест, за да потвърдите, че можете успешно да се свържете със Salesforce.com.

Microsoft Access

  1. Създайте нова база данни на Microsoft Access.
  2. Създайте таблица, наречена акаунт с тези колони:
    Колона Тип данни
    ИД Автоматичен номер
    AccName Кратък текст
    Описание на свойството Кратък текст
    Адрес Кратък текст
    Град Кратък текст
    Пощенски код Кратък текст
  3. Въведете някои примерни данни в таблицата. Например:
    AccName	Property Description	Address		Town	PostCode
    MyCo	Head Office		1 MyStreet	MyTown	AB1 DEF
    AcmeLtd	Workshop		1 MyRoad	MyTown	AB1 XYZ
  4. Натиснете ALT+F11, за да стартирате редактора на Visual Basic.
  5. Вмъкнете нов модул и добавете следния код. Има две подпрограми и помощна функция. И двете подпрограми вмъкват групово записите на Access в Salesforce. Втората подпрограма показва как да използвате параметризиран оператор за вмъкване на SOQL.
  6. Option Compare Database
    
    Sub InsertAccounts()
    
        Dim con As New ADODB.Connection
        Dim comm As New ADODB.Command
        Dim PrmName As New ADODB.Parameter
        Dim PrmAddress As New ADODB.Parameter
        Dim PrmTown As New ADODB.Parameter
        Dim PrmPostCode As New ADODB.Parameter
        Dim PrmDescription As New ADODB.Parameter
        Dim RowCount As Long
        Dim i As Integer
        
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        
        Dim BlockCount As String
        Dim isPosted As Boolean
        
        RowCount = 0
        
        ' Open the connection to the Easysoft Salesforce SOQL ODBC Driver data source
        con.Open "SFSOQL"
        
        comm.ActiveConnection = con
        
        ' Set up the initial insert statement using ? for each column I am going to pass in
        comm.CommandText = "insert into Account (Name, BillingStreet, BillingCity, BillingPostalCode, Description ) values ( ?, ?, ?, ?, ? )"
        
        ' Bind all the columns to the statement
        Set PrmName = comm.CreateParameter("P1", adVarWChar, adParamInput, 255, Null)
        Set PrmAddress = comm.CreateParameter("P2", adVarWChar, adParamInput, 255, Null)
        Set PrmTown = comm.CreateParameter("P3", adVarWChar, adParamInput, 120, Null)
        Set PrmPostCode = comm.CreateParameter("P4", adVarWChar, adParamInput, 60, Null)
        Set PrmDescription = comm.CreateParameter("P5", adLongVarWChar, adParamInput, 255, Null)
        comm.Parameters.Append PrmName
        comm.Parameters.Append PrmAddress
        comm.Parameters.Append PrmTown
        comm.Parameters.Append PrmPostCode
        comm.Parameters.Append PrmDescription
        
        ' Create a connection to the local database and start working through the rows
        Set db = CurrentDb
        Set rs = db.OpenRecordset("select * from Account order by Id")
        BlockCount = 0
        Do While Not rs.EOF
        
            RowCount = RowCount + 1
        
            If BlockCount = 0 Then
                ' Start a new transaction
                con.BeginTrans
                isPosted = False
            End If
            BlockCount = BlockCount + 1
            
            Debug.Print RowCount & " : " & rs.Fields("AccName")
            DoEvents
            
            ' Prepare to transfer the data to the ODBC driver
            PrmName.Value = rs.Fields("AccName")
            
            If Not IsNull(rs.Fields("Address")) Then
                PrmAddress.Value = Replace(rs.Fields("Address"), ",", vbCrLf)
            Else
                PrmAddress.Value = Null
            End If
    
            If Not IsNull(rs.Fields("Town")) Then
                PrmTown.Value = rs.Fields("Town")
            Else
                PrmTown.Value = Null
            End If
            
            If Not IsNull(rs.Fields("Town")) Then
                PrmPostCode.Value = rs.Fields("PostCode")
            Else
                PrmPostCode.Value = Null
            End If
            
            If Not IsNull(rs.Fields("Property Description")) Then
                PrmDescription.Value = rs.Fields("Property Description")
            Else
                PrmDescription.Value = Null
            End If
            
            comm.Execute
        
            ' When 200 rows have been sent to the driver, commit
            If BlockCount = 200 Then
                Debug.Print "Block posted"
                con.CommitTrans
                isPosted = True
                BlockCount = 0
            End If
            
            ' Loop through the block until the end is reached
            rs.MoveNext
        Loop
        rs.Close
        db.Close
        
        ' Finally, if there are any rows left to commit, send them
        If Not isPosted Then con.CommitTrans
        
        con.Close
        
    End Sub
    
    Sub InsertAccountsParameterisedSOQL()
    
        Dim con As New ADODB.Connection
        
        Dim SQL As String
        Dim SQLBase As String
        Dim BlockCount As Long
        Dim isPosted As Boolean
        
        Dim RowCount As Long
        Dim i As Integer
        
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        
        RowCount = 0
        
        ' Open the connection to the Easysoft Salesforce SOQL ODBC Driver data source
        con.Open "SFSOQL"
        
        SQLBase = "insert into Account (Name, BillingStreet, BillingCity, BillingPostalCode, Description ) values ( "
    
        ' Create a connection to the local database and start working through the rows
        Set db = CurrentDb
        Set rs = db.OpenRecordset("select * from Account order by Id")
        BlockCount = 0
        Do While Not rs.EOF
        
            RowCount = RowCount + 1
        
            If BlockCount = 0 Then
          
                ' Start a new transaction
                con.BeginTrans
                isPosted = False
            End If
            BlockCount = BlockCount + 1
            
            Debug.Print RowCount & " : " & rs.Fields("AccName")
            DoEvents
            
            ' Prepare to transfer the data to the ODBC driver
            SQL = SQLBase
            If IsNull(rs.Fields("AccName")) Then
                SQL = SQL & "NULL, "
            Else
                SQL = SQL & "'" & EscQuotes(rs.Fields("AccName")) & "', "
            End If
            
            If IsNull(rs.Fields("Address")) Then
                SQL = SQL & "NULL, "
            Else
                SQL = SQL & "'" & EscQuotes(Replace(rs.Fields("Address"), ",", vbCrLf)) & "', "
            End If
    
            If Not IsNull(rs.Fields("Town")) Then
                SQL = SQL & "NULL, "
            Else
                SQL = SQL & "'" & EscQuotes(rs.Fields("Town")) & "', "
            End If
            
            If IsNull(rs.Fields("PostCode")) Then
                SQL = SQL & "NULL, "
            Else
                SQL = SQL & "'" & EscQuotes(rs.Fields("PostCode")) & "', "
            End If
            
            If IsNull(rs.Fields("Property Description")) Then
                SQL = SQL & "NULL) "
            Else
                SQL = SQL & "'" & EscQuotes(rs.Fields("Property Description")) & "')"
            End If
            
            con.Execute SQL
        
            ' When 200 rows have been sent to the driver then commit
            If BlockCount = 200 Then
                Debug.Print "Block posted"
                con.CommitTrans
                isPosted = True
                BlockCount = 0
            End If
            
            ' Loop through the block until the end is reached
            rs.MoveNext
        Loop
        rs.Close
        db.Close
        
        ' Finally, if there are any rows left to commit, send them
        If Not isPosted Then con.CommitTrans
        
        con.Close
        
    End Sub
    
    Function EscQuotes(inpStr As String) As String
    
        EscQuotes = Replace(inpStr, "'", "''")
    
    End Function
    
    
  7. В менюто Run използвайте Run Sub/UserForm, за да стартирате подпрограмите.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво представляват макросите и как да ги използвам?

  2. Очакват ви нови функции за достъп до Microsoft!

  3. Как да премахнете парола от база данни в Access 2016

  4. Каква е истинската стойност на предоставянето на Microsoft Access във вашата организация?

  5. Изграждане на база данни на Microsoft Access