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);


本页地址:http://www.foxtable.com/webhelp/topics/6238.htm