经验法则如下:如果您实例化了一个 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 ... 阅读更多