Versi 2+ dari driver ODBC Salesforce memungkinkan Anda untuk mengelompokkan beberapa pernyataan Sisipan SOQL. Blog ini menunjukkan cara memasukkan beberapa catatan Microsoft Access ke Salesforce.
Untuk memulai:
- Instal dan lisensikan Driver ODBC Salesforce.com pada mesin tempat Microsoft Access diinstal.
Sebelum Anda dapat menggunakan Driver ODBC Salesforce.com untuk menghubungkan aplikasi Anda ke Salesforce.com, Anda perlu mengonfigurasi sumber data ODBC. Sumber data ODBC menyimpan detail koneksi untuk database target (misalnya Salesforce.com) dan driver ODBC yang diperlukan untuk menyambungkannya (misalnya driver ODBC Salesforce.com).
Untuk menjalankan ODBC Administrator (yang Anda gunakan untuk membuat sumber data), di kotak dialog Windows Run, ketik perintah ini jika Anda menggunakan Microsoft Office versi 64-bit:
%windir%\system32\odbcad32.exe
–Atau–
Ketik perintah ini jika Anda menggunakan Microsoft Office versi 32-bit:
%windir%\syswow64\odbcad32.exe
Jika Anda tidak yakin apakah versi Microsoft Office Anda 32-bit atau 64-bit, jalankan aplikasi Office mis. Microsoft Access, lalu cari proses aplikasi di Pengelola Tugas. Jika nama prosesnya adalah (untuk Microsoft Access) MSACCESS.EXE *32, Microsoft Office adalah 32-bit. Jika nama prosesnya adalah MSACCESS.EXE, Microsoft Office adalah 64-bit.
Untuk membuat sumber data Driver ODBC Salesforce.com:
- Di ODBC Administrator, pilih tab System DSN, lalu pilih Add.
- Dalam kotak dialog Create New Data Source, pilih Easysoft Salesforce ODBC SOQL Driver, lalu pilih Finish.
- Lengkapi kotak dialog Easysoft Salesforce SOQL ODBC Driver DSN Setup:
Setting Nilai DSN SFSOQL Nama Pengguna Nama pengguna Salesforce.com Anda. Misalnya, [email protected]. Kata Sandi Kata sandi untuk pengguna Salesforce.com Anda. Token Token keamanan untuk pengguna Salesforce.com Anda, jika diperlukan. Untuk mengetahui apakah Anda perlu menyediakan token keamanan, pilih tombol Uji. Jika upaya koneksi gagal dengan kesalahan yang berisi
LOGIN_MUST_USE_SECURITY_TOKEN
, Anda harus menyediakannya.Salesforce.com mengirimkan token keamanan melalui email ke alamat email yang terkait dengan akun pengguna Salesforce.com Anda. Jika Anda belum menerima token keamanan, Anda dapat membuatnya kembali. Salesforce.com kemudian akan mengirimkan email token keamanan baru kepada Anda. Untuk membuat ulang token keamanan Anda, masuk ke Salesforce.com lalu pilih Setup dari menu pengguna. Cari "token keamanan" di kotak Cari Cepat. Klik Atur Ulang Token Keamanan di halaman Atur Ulang Token Keamanan. Saat Anda menerima token di klien email Anda, salin dan tempelkan ke bidang Token.
- Gunakan tombol Uji untuk memverifikasi bahwa Anda berhasil tersambung ke Salesforce.com.
Akses Microsoft
- Buat database Microsoft Access baru.
- Buat tabel bernama Account dengan kolom berikut:
Column Jenis Data ID NomorOtomatis NamaAku Teks Pendek Deskripsi Properti Teks Pendek Alamat Teks Pendek Kota Teks Pendek Kode Pos Teks Pendek - Masukkan beberapa contoh data ke dalam tabel. Sebagai contoh:
AccName Property Description Address Town PostCode MyCo Head Office 1 MyStreet MyTown AB1 DEF AcmeLtd Workshop 1 MyRoad MyTown AB1 XYZ
- Tekan ALT+F11 untuk memulai Editor Visual Basic.
- Masukkan modul baru dan tambahkan kode berikut. Ada dua subrutin dan fungsi pembantu. Kedua subrutin memasukkan catatan Access ke Salesforce secara massal. Subrutin kedua menunjukkan cara menggunakan pernyataan penyisipan SOQL berparameter.
- Pada menu Jalankan, gunakan Jalankan Sub/UserForm untuk menjalankan subrutin.
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