/ /誰か私にqu​​ickbooksに顧客を追加するvb.netの簡単なサンプルを表示することができます - wpf、vb.net、サンプル、intuit

誰かが私にvb.netの簡単なサンプルをquickbookに追加することができますか? - wpf、vb.net、sample、intuit

私はVB.netのWPFプログラムを書こうとしていますが、それは顧客にカスタムノートを追加することになります。Intuitは、C#からVB.netへの変換に成功したコード例を使ってサークルに入ります。

誰かが私に非常に簡単なサンプルを表示できますか?顧客名を追加するだけですか?何かエラーチェックなどを残して、私はそれを把握することができます。クイックブックへの接続を書いてリクエストを送信する方法はわかりません。テキストボックスに名前を入力し、ボタンをクリックして顧客名を追加する機能を備えた、テキストボックスとボタン付きのシンプルなフォーム。

回答:

回答№1は0

私は、QuickBook SDKのIntuitの貧弱なコードサンプルに長い間嫌われてきました。それを言って、私はまだそれらを使用します。コードを修正した後、それらは非常に便利です。

また、Intuit Quickbooks SDK QBFC7Libへの参照を追加する必要があります。バージョンによって若干異なる場合があります。

コードを便利にするために必要な作業は、次のとおりです([編集]> [クイックリプレース]を使用)。

  1. 置換 // 〜と " (コメント)
  2. すべて削除する ; (セミコロン)
  3. 置換 == 〜と =
  4. 置換 For j = 0 〜と For j as Integer = 0
  5. 置換 responseList.GetAt(i) 〜と responseList.GetAt(j)
  6. 末尾を削除する . (ドット)
  7. 置換 Integerfor 〜と Integer (次の行) for
  8. 置換 DataExtRet 〜と DataExtRet. (エラーが表示されている場合のみ)
  9. その他のエラーがないか確認してください
  10. あなたが必要としないものを削除する

初めてQuickbooksを起動し、Quickbooksからアクセス許可を与える必要があります。ここでは、エラーが修正されたサンプルを示します。

Imports QBFC7Lib

Module QBSample

Public Class Customer

Public Sub DoCustomerAdd()
Dim sessionBegun As Boolean
sessionBegun = False
Dim connectionOpen As Boolean
connectionOpen = False
Dim sessionManager As QBSessionManager
sessionManager = Nothing

Try

"Create the session Manager object
sessionManager = New QBSessionManager

"Create the message set request object to hold our request
Dim requestMsgSet As IMsgSetRequest
requestMsgSet = sessionManager.CreateMsgSetRequest("US", 7, 0)
requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue

BuildCustomerAddRq(requestMsgSet)

"Connect to QuickBooks and begin a session
sessionManager.OpenConnection("", "Your application")
connectionOpen = True
sessionManager.BeginSession("", ENOpenMode.omDontCare)
sessionBegun = True

"Send the request and get the response from QuickBooks
Dim responseMsgSet As IMsgSetResponse
responseMsgSet = sessionManager.DoRequests(requestMsgSet)

"End the session and close the connection to QuickBooks
sessionManager.EndSession()
sessionBegun = False
sessionManager.CloseConnection()
connectionOpen = False

WalkCustomerAddRs(responseMsgSet)
Catch e As Exception
MessageBox.Show(e.Message, "Error")
If (sessionBegun) Then
sessionManager.EndSession()
End If
If (connectionOpen) Then
sessionManager.CloseConnection()
End If
End Try
End Sub
Private Sub BuildCustomerAddRq(ByVal requestMsgSet As IMsgSetRequest)
Dim CustomerAddRq As ICustomerAdd
CustomerAddRq = requestMsgSet.AppendCustomerAddRq()
"Set field value for Name
CustomerAddRq.Name.SetValue("Test Customer 2")
"Set field value for IsActive
CustomerAddRq.IsActive.SetValue(True)
"Set field value for CompanyName
CustomerAddRq.CompanyName.SetValue("ab")
"Set field value for Salutation
CustomerAddRq.Salutation.SetValue("ab")
"Set field value for FirstName
CustomerAddRq.FirstName.SetValue("ab")
"Set field value for MiddleName
CustomerAddRq.MiddleName.SetValue("ab")
"Set field value for LastName
CustomerAddRq.LastName.SetValue("ab")
"Set field value for Addr1
CustomerAddRq.BillAddress.Addr1.SetValue("ab")
"Set field value for Addr2
CustomerAddRq.BillAddress.Addr2.SetValue("ab")
"Set field value for Addr3
CustomerAddRq.BillAddress.Addr3.SetValue("ab")
"Set field value for Addr4
CustomerAddRq.BillAddress.Addr4.SetValue("ab")
"Set field value for Phone
CustomerAddRq.Phone.SetValue("ab")
"Set field value for AltPhone
CustomerAddRq.AltPhone.SetValue("ab")
"Set field value for Fax
CustomerAddRq.Fax.SetValue("ab")
"Set field value for Email
CustomerAddRq.Email.SetValue("ab")
"Set field value for Contact
CustomerAddRq.Contact.SetValue("ab")
"Set field value for AltContact
CustomerAddRq.AltContact.SetValue("ab")

"May create more than one of these if needed
CustomerAddRq.IncludeRetElementList.Add("Name")
CustomerAddRq.IncludeRetElementList.Add("ListID")

End Sub

Private Sub WalkCustomerAddRs(ByVal responseMsgSet As IMsgSetResponse)
If (responseMsgSet Is Nothing) Then
Exit Sub
End If

Dim responseList As IResponseList
responseList = responseMsgSet.ResponseList
If (responseList Is Nothing) Then
Exit Sub
End If

"if we sent only one request, there is only one response, we"ll walk the list for this sample
For j As Integer = 0 To responseList.Count - 1
Dim response As IResponse
response = responseList.GetAt(j)
"check the status code of the response, 0=ok, >0 is warning
If (response.StatusCode >= 0) Then
"the request-specific response is in the details, make sure we have some
If (Not response.Detail Is Nothing) Then
"make sure the response is the type we"re expecting
Dim responseType As ENResponseType
responseType = CType(response.Type.GetValue(), ENResponseType)
If (responseType = ENResponseType.rtCustomerAddRs) Then
""upcast to more specific type here, this is safe because we checked with response.Type check above
Dim CustomerRet As ICustomerRet
CustomerRet = CType(response.Detail, ICustomerRet)
WalkCustomerRet(CustomerRet)
End If
End If
End If
Next j
End Sub

Private Sub WalkCustomerRet(ByVal CustomerRet As ICustomerRet)
If (CustomerRet Is Nothing) Then
Exit Sub
End If

"Go through all the elements of ICustomerRet
"Get value of ListID
Dim ListID1 As String
ListID1 = CustomerRet.ListID.GetValue()
"Get value of Name
Dim Name5 As String
Name5 = CustomerRet.Name.GetValue()

End Sub

End Class

End Module

私がよく見ている別の問題はコードジャンプです「retlist」から「ret」へと変化する。これは通常クエリなどで発生します。 ReceivePaymentQuery。 DoCustomerAddでは問題ありません。他の方法を変換しているときには、ここで言及します。

OSRのコード:

Public Sub WalkReceivePaymentRet(ByVal ReceivePaymentRet As IReceivePaymentRetList)
If (ReceivePaymentRet Is Nothing) Then
Exit Sub
End If

次のように修正してください:

Public Sub WalkReceivePaymentRet(ByVal ReceivePaymentRetList As IReceivePaymentRetList)

For a As Integer = 0 To ReceivePaymentRetList.Count - 1
Dim ReceivePaymentRet As IReceivePaymentRet

ReceivePaymentRet = ReceivePaymentRetList.GetAt(a)

If (ReceivePaymentRet Is Nothing) Then
Exit Sub
End If