存档

2009年12月 的存档

如何记录用户错误提示

2009年12月25日 没有评论

在Navision系统中,有一个公共的GetLastErrorText 表示最后一次错误提示文本.

ClearLastError表示清除最后一次错误.

那么可以通过下面的设计方式:

在Codeunit 1的Company Open中设计代码。

运行Object 99901, 99901中主要有NavTimer控件。

NavTimer控件设置为每1秒钟 检查一次错误,即GetLastErrorText<>” 来进行检查.

将对应的错误信息写入Table中,主要存储产生错误的当前用户,错误描述,错误产生日期/时间等。

注意,需要设置Object 99901中的SingleInstance为Yes, 表示只运行一次。

分类: C/AL 标签: ,

使用ExcelBuf读取指定工作表

2009年12月24日 没有评论

首先通过下面代码 读取Sheet. 注意:这里的ExcelBuf 和 ExcelBuf2都是定义的临时表。

ExcelBuf.OpenBook(FileName,SheetName);

ExcelBuf.ReadSheet;

IF ExcelBuf.FIND(‘-‘) THEN REPEAT

ExcelBuf2.COPY(ExcelBuf);

ExcelBuf2.INSERT;

UNTIL ExcelBuf.NEXT=0;

接着按照下面方法处理数据,将处理结果存入SaleHeader中。

l_intRow:=2;

ExcelBuf.SETRANGE("Row No.",l_intRow);

WHILE ExcelBuf.COUNT()<>0 DO BEGIN

OrderDate:=”;

IF ExcelBuf.FIND(‘-‘) THEN REPEAT

IF ExcelBuf2.GET(1,ExcelBuf."Column No.") THEN

BEGIN

CASE ExcelBuf2."Cell Value as Text" OF

‘XXX’:OrderDate:=ExcelBuf."Cell Value as Text";

END;

END;

UNTIL ExcelBuf.NEXT=0;

IF "SalesOrderNo."<>” THEN

BEGIN

IF SalesHeader.GET(SalesHeader."Document Type"::Order,"SalesOrderNo.") THEN

BEGIN

SalesHeader."XXX":=OrderDate;

SalesHeader.MODIFY(FALSE);

END;

END;

l_intRow+=1;

ExcelBuf.SETRANGE("Row No.",l_intRow);

END;

分类: C/AL 标签:

Codeunit的SingleInstance属性

2009年12月24日 没有评论

当设置了Codeunit的SingleInstance属性后,这个Codeunit在启动Navision后就会处于执行状态。

并且用户每启动1个Navision, 只会执行一次。

分类: C/AL 标签: