經驗法則如下:如果您例項化了一個 DI API 物件,則必須釋放它。如果您沒有顯式釋放它,則會導致記憶體洩漏。您可以使用 ReleaseComObject 方法釋放物件記憶體。如果您嘗試釋放一個空物件,它將丟擲一個異常。因此,在嘗試釋放物件之前進行空值檢查會更好。示例程式碼片段:if (obj != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
我建議使用帶有 DI API 的記錄集 -SAPbobsCOM.Recordset rs = ((SAPbobsCOM.Company)oCompany.GetDICompany()).GetBusinessObject(BoObjectTypes.BoRecordset); rs.DoQuery("SELECT DocEntry, DocNum, DocDate, TaxDate, CardCode, CardName, DocTotal FROM OPOR ORDER BY DocDate ASC"); while (!rs.EoF) { int DocEntry = rs.Fields.Item("DocEntry").Value; //或者 DocEntry = rs.Fields.Item(0).Value; rs.MoveNext(); }
在 SAP Business One 中,SBO-Common 僅用於功能處理或遵循您的公司資料庫。日常的業務功能完全在公司資料庫中進行。您可以透過重新安裝 SAP B1 伺服器來建立一組新的示例資料庫 SBO-COMMON。SBO-Common 資料庫儲存以下資訊 - 資料庫列表(具有 SAP 資料庫結構的資料庫)資料庫詳細資訊,如版本、升級詳細資訊許可證詳細資訊有關 SBO-COMMON 資料庫的更多詳細資訊,您可以參考以下連結 - https://archive.sap.com/discussions/thread/1447063
這看起來像是查詢中聯接的問題。嘗試將內部聯接替換為左聯接,如下所示。我運行了此查詢,它工作正常:select T0.DocNum as 'Payment Number', T0.DocDate 'Payment Date', T0.CardCode, T0.CardName 'Customer Name', T1.BankCode 'Bankcode', T3.BankName 'Bank Name', T2.Phone1 , T0.CreditSum, T0.CashSum, T0.TrsfrSum, t0.CheckSum, t1.CheckNum as 'Check Number', t1.DueDate as 'check date', t6.VoucherNum as 'Voucher Number', t0.TrsfrRef as 'Transfer No', t0.TrsfrDate AS 'Transfer Date', ousr.USER_code as 'user code', T5.DocNum, t11.U_P_BuildingName as 'Building Name', CASE when T5.DocNum is null then 'On Account' else 'Paid For Invoice' END AS 'Payment Status', CASE when T5.DocStatus = 'O' then ... 閱讀更多