Foxtable和js的差异
前面已经介绍了如何在前端js调用Foxtable,有关js的基础语法,大家请自行学习掌握
本节介绍前端js在调用Foxtable时要注意的几个小问题,是Foxtable用户在编写js代码时很容易踩坑的地方。
创建对象
Foxtable创建一个SQlCommand的代码为:
Dim cmd As New
SQLCommand();
创建一个GroupTableBuilder的代码为:
Dim
gtb
As
New
GroupTableBuilder("统计表1",
DataTables("订单"))
js创建Foxtable对象,不需要New关键词,完成同样任务的代码为:
const cmd =
ft.SQLCommand();
const
gtb = ft.GroupTableBuilder("统计表1",
ft.DataTables["订单"]);
区分大小写
js的严格区分大小写, 例如:
const cmd = ft.SQLCommand();
写成下面这样是不行的:
const cmd = ft.SqlCommand(); //错误,大小写错误
类名、变量名、属性命、方法名和函数名等等,都是区分大小写的。
除外,Foxtable 的 True/False 在 JavaScript 中是 true/false(小写),写错了也会出错。
坑爹的括号
关于括号要记住三点:
1、创建对象、执行函数必须加上括号,例如:
const cmd = ft.SQLCommand();
写成下面这样是不行的:
const cmd = ft.SQLCommand; //错误,漏掉了括号
Foxtable对于这种情况,加不加括号都是可以的,导致新手很容易在这里踩坑。
2、访问属性和变量时,不可以加上括号,例如获取主程序路径的js代码为:
const pth = ft.ApplicationPath;
如果写成下面这样是不可以的:
const pth = ft.ApplicationPath();//错误,ApplicationPath是全局变量(属性),不是函数,不需要括号
下面这段启动QQServer的代码,包括了两个错误,你能找出来吗:
const qs = ft.QQServer();
qs.ServerIp = "192.168.100.6";
qs.ServerPort = 52177;
qs.HeartbeatInterval = 30;
qs.HeartbeatTimeout = 100;
qs.Start;
正确的代码应该是:
const qs = ft.QQServer; //QQServer是全局变量(属性),不可以加括号
qs.ServerIp = "192.168.100.6";
qs.ServerPort = 52177;
qs.HeartbeatInterval = 30;
qs.HeartbeatTimeout = 100;
qs.Start(); //Start是一个方法,必须加括号
3、访问集合和数组要用方括号,不能用圆括号,例如:
const Orders = ft.Tables["订单"];
关于符号"\"
"\"在js中有特殊意义,在向Foxtable传递字符"\"时,必须用写成"\\"。
例如对于下面的Foxtable代码:
Dim
st As
New
LayerTreeSetting()
st.PathCol
= "物料"
st.ValueCol
= "数量"
st.Separator
= "\"
st.IncludeSub
= False
Tables("物料清单D").OpenLayersBomTree(st)
在js中的写法是:
const
st =
ft.LayerTreeSetting();
st.PathCol =
"物料";
st.ValueCol =
"数量";
st.Separator =
"\\";
//单个"\"写成双"\\"
st.IncludeSub =
False;
ft.Tables("物料清单D").OpenLayersBomTree(st);
关于列类型
在js中,不能使用GetType获得数据类型,所以在增加临时表(或列)的时候,列类型用字符串表示。
例如在js中创建一个临时表的代码:
const
dtb = ft.DataTableBuilder("统计");
dtb.AddDef("产品",
"String",
32);
dtb.AddDef("客户",
"String",
32);
dtb.AddDef("数量",
"Integer");
dtb.AddDef("金额",
"Double");
dtb.Build();
ft.MainTable = ft.Tables["统计"];
关于BuildDataSource
所有类型的BuildDataSource方法都无法在js中使用,请用BuildDataSource2方法代替。
关于数组
数组在Foxtable中用"{}"括起来,而在js中用"[]"括起来。
例如对于下面的Foxtable代码:
Dim
st As
New
GroupTreeSetting()
st.GroupCols
= {"产品","客户"}
st.AggregateCols
= {"数量","金额"}
Tables("订单").ShowGridTree(st)
在js中的写法是:
const
st =
ft.GroupTreeSetting();
st.GroupCols = ["产品",
"客户"];
st.AggregateCols =
["数量",
"金额"];
ft.Tables("订单").ShowGridTree(st);