存档

2006年12月 的存档

通过程序运行报表的方法

2006年12月24日 没有评论

设置一个Record 和当前Form的Table一致。

然后将其设置为一致。

Record:=Rec;

设置当前记录的Filter

Record.SetRecFilter;

然后使用report.Run(Object,是否显示Req Window,是否使用系统打印机,Record)

 

 

也可以通过Report.SaveHTML和SaveXML方式运行报表。

分类: C/AL 标签: ,

CaptionClass属性的运用

2006年12月5日 没有评论

在维定义时, CaptionClass属性作用如下:

‘1,1,1’ 表示全局维1

‘1,1,2’ 表示全局维2

全局维1和全局维2 也是 捷径维1和捷径维2

‘1,2,3’ 表示捷径维3

分类: C/AL 标签:

为Navision数据库配置SQL Server环境

2006年12月5日 没有评论

Navision采用SQL Server2005作为数据库,需要做一定配置

1. SQL SERVER启动参数,选择SQL Server服务,在最后附加启动参数;-T4616

2. 将xp_ndo.dll复制到Program FilesSQL Server2005安装目录,运行SQL Server管理器.
    在管理器中选择Master数据库,选择扩展存储过程,添加
    1)命名为xp_ndo_enumusergroups, DLL文件指定为xp_ndo.dll,并添加{Public}用户的访问权限; 
    2)命名为xp_ndo_enumusersids, DLL文件仍然指定为xp_ndo.dll,添加{Public}用户的访问权限;

    这2个Dll文件位于Navision的安装程序文件夹中,如果服务器是64位环境,那么xp_ndo.dll 需要改用64位环境的Dll.

    usersids 主要用于Windows 登录处理,    usergroups用于Windows 组登录处理。

3.使用合乎语言的fin.stx文件,这个文件需要注意不同的环境下都不一样.特别是中文语言环境.

4.使用Navision的Finsql.exe启动客户端,sa登录,创建数据库. OK

分类: Installation 标签:

Navision报表制作过程中的一些技巧

2006年12月5日 没有评论

1.报表的常量和变量
都可以使用Text控件,但是文字需要使用” 引号括起来,如果要表示页面,可以写成’Page ‘+CurrReport.PAGENO
2.COMPANYNAME是当前公司名的变量,USERID是当前用户的变量.都是属于DATABASE的变量.

  • CHECKLICENSEFILE(KeyName)  检查License文件
  • COMMIT Function (DATABASE)  用于实现事务处理操作
    BeginWriteTransactions
        (C/AL Statements) // Transaction 1
    COMMIT(…)
        (C/AL Statements) // Transaction 2
    EndWriteTransactions
  • COMPANYNAME 返回公司名称
  • CURRENTTRANSACTIONTYPE    检查当前数据库的工作模式
  • LOCKTIMEOUT(Timeout)  锁定数据库
  • SELECTLATESTVERSION   返回上一次使用的数据库版本
  • SERIALNUMBER     得到当前系统的序列号
  • TRANSACTIONTYPE 存储当前数据库的工作模式
  • USERID 返回当前的用户ID
    WORKDATE表示当前的工作日期 Format(Workdate,9) 表示得到yy-mm-dd格式的日期
    TIME表示当前时间
    CurrReport.PageNo 表示当前页码
    3.控制报表的节显示
    Body节是报表的记录遍历节,通过CurrReport.Skip可以跳过当前记录,进入下一条记录.
    CurrReport.ShowOutput(True/False) 可以控制当前节的输出是否开启
    而CurrReport.Break 或 CurrReport.Quit 都可以用来关闭报表
    Error() 提示错误信息也可以用来关闭所有应用,报表也会关闭
    Message() 只是提示信息
    4.报表交互信息提示
    通过创建Filter,在报表中要使用GetFilter来得到一个Filter的值设置,GetFilters可以得到所有Filter的值,是文本值.
    也可以通过ReqForm来实现需求,要将ReqForm设置为首选Form.需要将报表的DataItem设置DataItemTableView属性,设置里面的排序条件.
    ReqForm的输入条件需要使用 全局变量来关联,这样就可以在报表中进行处理,如果是针对每一条记录的条件判断,就可以通过报表的DateItem的OnAfterGetRecord()事件进行程序判断处理.
    ReqForm的值判断可以设置ReqForm不可关闭来控制,不过用户不太喜欢这样.ReqForm有QueryClose这个事件,Exit(False)就表示不能关闭这个ReqForm.
    5.日期数据处理
    可以通过CALCDATE(‘-M1’,WORKDATE)表示工作日期的月份的第一个月,而-W1,表示当前日期的第一个星期,D1表示第一天
    CALCDATE(‘CM-0D’,WORKDATE)表示当月的最后一天
    6.字符数据处理
    copyStr(字符串,起点,长度) 表示截取字符串
    GetSubText是针对BigText操作,无法对Text操作
分类: C/AL 标签:

将小数求取固定长度的字符函数

2006年12月2日 没有评论

下面的Fixed函数和VB总的Fixed函数用法完全一致。

Fixed(source : Decimal;Length : Integer) Result : Text[50]

//This is created by Yeats.

IF Length<0 THEN

Length:=0;

IF Length>8 Then

Length:=8;

CASE Length OF

0:Prec:=1;

1:Prec:=10;

2:Prec:=100;

3:Prec:=1000;

4:Prec:=10000;

5:Prec:=100000;

6:Prec:=1000000;

7:Prec:=10000000;

8:Prec:=100000000;

END;

source:=source*Prec;

source:=ROUND(source,1);

Result:=FORMAT(source,0,'<sign><integer>’);

IF Length<>0 THEN

Result:=COPYSTR(Result,1,STRLEN(Result)-Length)+’.’+COPYSTR(Result,STRLEN(Result)-Length+1,1000)

ELSE

Result:=COPYSTR(Result,1,STRLEN(Result)-Length);

分类: C/AL 标签: