背景:
我正在创建从前端企业管理软件传递数据到后端的SAP Business One。我用的是SBO10.0,数据库MSSQL2017,开发工具VS2019。SBO连接时遇到了一些问题,解决方案于大家共享一下。
问题描述
我编写的代码如下:
SapB1Company = new Company();
SapB1Company.Server = "192.168.XXX.XXX";
SapB1Company.DbServerType = BoDataServerTypes.dst_MSSQL2017;//数据库类型
SapB1Company.UserName = "manager";
SapB1Company.Password = "password";
SapB1Company.CompanyDB = "DBName";
SapB1Company.DbUserName = "sa";
SapB1Company.DbPassword = "Password";
SapB1Company.UseTrusted = false;//连接方式
SapB1Company.language = BoSuppLangs.ln_Chinese;//DI语言
SapB1Company.LicenseServer = "192.168.XXX.XXX:30000";
int conectado = int.MinValue;
conectado = SapB1Company.Connect();
问题1:
在运行SapB1Company = new Company();报异常:CSLID没有注册。
问题2:
解决问题1后,又报错误-132,认证不通过。
原因分析&解决方案:
提示:这里填写问题的分析:
问题1:
这里的原因是由于DIAPI没有正确的注册。如下解决:
1)在SAPB1安装目录,找到B1_SHR目录,一般安装B1后会留存该目录。
2)找到目录里面的DIAPI安装程序,重新进行安装。把32位的和64位的都装上。
3)安装好以后,重新引入SAPbobsCOM100.dll,不会再报组件没有注册的错误。
如果没有找到B1_SHR,那只有找SAP供应商去解决了。又些变态会删除B1_SHR目录。
问题2:
查阅了国外网站, Company属性只需要设置如下几个:
SapB1Company = new Company();
SapB1Company.Server = "WIN-FFC3UUM"; //此处改为服务器名称
SapB1Company.DbServerType = BoDataServerTypes.dst_MSSQL2017;//数据库类型
SapB1Company.UserName = "manager";
SapB1Company.Password = "password";
SapB1Company.CompanyDB = "DBName";
SapB1Company.UseTrusted = false;//连接方式
SapB1Company.language = BoSuppLangs.ln_Chinese;//DI语言
int conectado = int.MinValue;
conectado = SapB1Company.Connect();
特别留意的是SapB1Company.Server 用IP地址过不了,改成服务器名称就过了。
conectado 返回值是0,就代表没有错误连接成功了。
希望我的建议对大家有帮助。