想必初学者以前接触过c语言,java吧
genexus的语法和他们也差不多,但是定义变量有所不同,这对初学者要注意
我们来举个例子
c是如何定义变量的
int a = 100;//定义整型变量a,赋初值100
float f = 20.0; //定义浮点型变量f,赋初值20
char c[20];//定义字符数组,大小为20个字符,没有赋初值,在c语言中,必须赋初值后才可以调用,否则编译出错。
最后,我们来看看在gx中来如何定义变量
1.打开object后(workpanel,trans,procedure等),按 ctrl + w (推荐),或 点菜单insert -> variable ,弹出Select Variable对话框,点击Add,弹出Define Variable对话框,我们需要在这里输入变量的name ,data type(数据类型),有选择性的修改length,decimals,Signed,Dimensions.最后点确定,我们的变量就定义好了
2.针对9.0,还可以这样定义,直接在代码中输入未定义的变量,如&dept,鼠标指在变量上,点右键,选择define,会弹出define variable对话框
gx中变量的使用
gx变量都是前面有&符号的,但是没有大小写区分,记住gx中没有大小写的概念哦,这个与其它语言不同,大家要注意有符号和没有符号的区别
有符号,表示变量 variable
没符号,表示属性 attribute,不能在panel,transaction,report中赋值,只能调用,是只读的,但是在procedure中可以写了。
举例:
workpanel:
for each
&name = Name//从数据库Customer表中读取Name,循环赋值到变量name
endfor
//给初学者提一个问题,为什么会从Customer表中读取吗?我们没有指定到Customer啊,这是gx系统自动找到的,因为Name是Customer中主健,我们也可以强制从Customer表中读取
for each
defined by Name,Addr//看这里哦,Customer表的Name,Addr在整个谈saction中是唯一的话,gx就会从Customer中读取数据了,如果不唯一,我们只能再加一个属性了,如defined by Name,Addr,email ,从这看出gx是符合数据库第3范式。
&name = Name//从数据库Customer表中读取Name,循环赋值到变量name
endfor
procedure:
New
Name = &name//把name变量值写到数据库Customer表
Addr = &addr
......
EndNew