सेल्सफोर्स ओडीबीसी ड्राइवर का संस्करण 2+ आपको एकाधिक SOQL सम्मिलन कथन बैच करने में सक्षम बनाता है। यह ब्लॉग आपको दिखाता है कि Salesforce में एकाधिक Microsoft Access रिकॉर्ड कैसे सम्मिलित करें।
आरंभ करने के लिए:
- उस मशीन पर जहां Microsoft Access स्थापित है, Salesforce.com ODBC ड्राइवर स्थापित और लाइसेंस करें।
अपने एप्लिकेशन को Salesforce.com से कनेक्ट करने के लिए Salesforce.com ODBC ड्राइवर का उपयोग करने से पहले, आपको ODBC डेटा स्रोत को कॉन्फ़िगर करना होगा। एक ODBC डेटा स्रोत लक्ष्य डेटाबेस (जैसे Salesforce.com) और उससे कनेक्ट होने के लिए आवश्यक ODBC ड्राइवर (उदा. Salesforce.com ODBC ड्राइवर) के लिए कनेक्शन विवरण संग्रहीत करता है।
ODBC व्यवस्थापक (जिसका उपयोग आप डेटा स्रोत बनाने के लिए करते हैं) चलाने के लिए, Windows रन संवाद बॉक्स में, यदि आप Microsoft Office के 64-बिट संस्करण का उपयोग कर रहे हैं तो यह आदेश टाइप करें:
%windir%\system32\odbcad32.exe
–या–
यदि आप Microsoft Office के 32-बिट संस्करण का उपयोग कर रहे हैं तो यह आदेश टाइप करें:
%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 ड्राइवर डेटा स्रोत बनाने के लिए:
- ओडीबीसी प्रशासक में, सिस्टम डीएसएन टैब चुनें, और फिर जोड़ें चुनें।
- नया डेटा स्रोत बनाएं संवाद बॉक्स में, Easysoft Salesforce ODBC SOQL ड्राइवर चुनें, और फिर समाप्त करें चुनें।
- Easysoft Salesforce SOQL ODBC ड्राइवर DSN सेटअप डायलॉग बॉक्स को पूरा करें:
सेटिंग <थ>मानDSN एसएफएसओक्यूएल उपयोगकर्ता नाम आपके Salesforce.com उपयोगकर्ता का नाम। उदाहरण के लिए, [email protected]. पासवर्ड आपके Salesforce.com उपयोगकर्ता के लिए पासवर्ड। टोकन यदि आवश्यक हो तो आपके Salesforce.com उपयोगकर्ता के लिए सुरक्षा टोकन। यह पता लगाने के लिए कि क्या आपको सुरक्षा टोकन की आपूर्ति करने की आवश्यकता है, परीक्षण बटन चुनें। यदि कनेक्शन का प्रयास किसी त्रुटि के साथ विफल हो जाता है जिसमें
LOGIN_MUST_USE_SECURITY_TOKEN
शामिल है , आपको एक आपूर्ति करनी होगी।Salesforce.com आपके Salesforce.com उपयोगकर्ता खाते से जुड़े ईमेल पते पर सुरक्षा टोकन ईमेल करता है। यदि आपको सुरक्षा टोकन नहीं मिला है, तो आप इसे पुन:उत्पन्न कर सकते हैं। इसके बाद Salesforce.com आपको नया सुरक्षा टोकन ईमेल करेगा। अपना सुरक्षा टोकन पुन:उत्पन्न करने के लिए, Salesforce.com में लॉग इन करें और फिर उपयोगकर्ता मेनू से सेटअप चुनें। त्वरित खोज बॉक्स में "सुरक्षा टोकन" खोजें। सुरक्षा टोकन रीसेट करें पृष्ठ में सुरक्षा टोकन रीसेट करें क्लिक करें। जब आप अपने ईमेल क्लाइंट में टोकन प्राप्त करते हैं, तो इसे कॉपी करें और फिर इसे टोकन फ़ील्ड में पेस्ट करें।
- यह सत्यापित करने के लिए परीक्षण बटन का उपयोग करें कि आप Salesforce.com से सफलतापूर्वक जुड़ सकते हैं।
माइक्रोसॉफ्ट एक्सेस
- एक नया Microsoft Access डेटाबेस बनाएँ।
- खाता नामक एक तालिका बनाएं जिसमें इन स्तंभों का उपयोग किया जाए:
स्तंभ डेटा प्रकार आईडी स्वतः संख्या AccName लघु पाठ संपत्ति विवरण लघु पाठ पता लघु पाठ नगर लघु पाठ पोस्टकोड लघु पाठ - तालिका में कुछ नमूना डेटा दर्ज करें। उदाहरण के लिए:
AccName Property Description Address Town PostCode MyCo Head Office 1 MyStreet MyTown AB1 DEF AcmeLtd Workshop 1 MyRoad MyTown AB1 XYZ
- विजुअल बेसिक एडिटर शुरू करने के लिए ALT+F11 दबाएं।
- नया मॉड्यूल डालें और निम्नलिखित कोड जोड़ें। दो सबरूटीन और एक सहायक कार्य हैं। दोनों सबरूटीन्स एक्सेस रिकॉर्ड्स को सेल्सफोर्स में थोक में सम्मिलित करते हैं। दूसरा सबरूटीन दिखाता है कि पैरामीटरयुक्त SOQL इंसर्ट स्टेटमेंट का उपयोग कैसे करें।
- रन मेनू पर, सबरूटीन चलाने के लिए रन सब/यूजरफॉर्म का उपयोग करें।
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