我正在尝试运行一个在 NAV 2015 中执行一些 SQL 查询的报告
如果我手动运行报告,它运行良好,但是当我将它设置到任务计划程序中时,它会出错,因为它有一个试图加载到客户端的自动化。
我已将 CREATE 参数更改为 (FALSE, FALSE) 而不是 (FALSE, TRUE),因此它在服务器而不是客户端中运行,但是当我尝试编译时会出现此错误:
翻译: 无法在 NAV 服务器中创建自动化对象“sqlConnection”。您必须在客户端中创建它。
但是如果我在客户端创建它 CREATE(FALSE, TRUE) 它会给出错误:
翻译: NAV 服务器试图返回客户端调用以创建自动化对象。 NAV Server 中不允许来自客户端的调用返回。
这是代码:(循环公司表)
IF (STRPOS(LOWERCASE(Company.Name), 'prueba') = 0) AND (STRPOS(LOWERCASE(Company.Name), 'test') = 0) AND (STRPOS(LOWERCASE(Company.Name), 'uat') = 0) AND (STRPOS(LOWERCASE(Company.Name), 'prova') = 0) THEN BEGIN
recWasteHeader.CHANGECOMPANY(Company.Name);
IF recWasteHeader.COUNT > 0 THEN BEGIN
recWasteLine.SETRANGE("Document Type", 4);
recWasteLine.SETRANGE("Business Type", 2);
recWasteLine.SETFILTER("Sub Contract No.", '<>%1', '*NUL*');
IF recWasteLine.FINDSET THEN BEGIN
IF ISCLEAR(sqlConnection) THEN
CREATE(sqlConnection, FALSE, FALSE);
sqlConnection.Open(ConnectionString);
IF ISCLEAR(sqlCommand) THEN
CREATE(sqlCommand, FALSE, FALSE);
sqlCommand.ActiveConnection := sqlConnection;
sqlCommand.CommandText := 'DELETE FROM [Noc Services Price] WHERE Empresa=' + q + Company.Name + q;
sqlCommand.CommandType := 1;
sqlCommand.Execute;
REPEAT
querydata := STRSUBSTNO(dataset, Company.Name, recWasteLine."Document No.", recWasteLine."Line No.", recWasteLine.Amount);
sqlCommand.CommandText := 'INSERT INTO [Noc Services Price] (Empresa, Contracte, [Linea contracte], [PREU ACTUAL]) VALUES ( ' + querydata + ');';
sqlCommand.Execute;
UNTIL recWasteLine.NEXT = 0;
sqlConnection.Close;
END;
END;
END;
我也找不到 dotnet System.Data.SqlClient