如何在PB程序中调用外面的文本(例如:rules.txt)里的语句?

jackygan 2002-03-01 09:53:27
如何在PB程序中调用外面的文本(例如:rules.txt)里的语句?

如果我想写一些 if 语句,以及sql语句.
...全文
60 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2002-03-02
  • 打赏
  • 举报
回复
这个没尝试过,
不过有一个替代方法:
比如
ls_syntax='SELECT max(id) FROM '+is_tablename+' where id like ~''+ls_priorid+'%~' '
这句话可以用if...then ls_syntax= else ls_syntax=解决
jackygan 2002-03-02
  • 打赏
  • 举报
回复
多谢上层上位人兄,方法可然好用,先行谢谢!
但我再有一个问题,动太执行If等等的语可以做到吗?因为我做的一个软件他们经常要更改那些规则,要是可以动态就不用经常收改代码了。谢谢!
abcn 2002-03-02
  • 打赏
  • 举报
回复
对呀,用动态SQL语句,
假如你得到的sql语句存入字符串型变量ls_sql中
1
execute immdiate :ls_sql;(立即执行)
2
prepare sqlsa from :ls_sql using sqlca;
execute sqlsa using :变量1,:变量2....;
3.游标或存储过程
delcare youcursor dynamic cursor for sqlsa;
prepare sqlsa from :ls_sql;
open dynamic youcursor;
fetch youcursor [into 变量列表]
close youcursor;
4.
declare youcursor cynamic cursor for sqlca ;
prepare sqlsa from :ls_sql;
describe sqlsa into sqlda;
open youcursor;
fetch youcursor descriptor sqlda;
close cursor;
pbworm 2002-03-02
  • 打赏
  • 举报
回复
你将文件中的数据使用fileOpen,fileRead,fileClose等语句读出来,按照下面的样子写就可以了。
string Mysql
Mysql = "CREATE TABLE Employee "&
+"(emp_id integer not null,"&
+"dept_id integer not null, "&
+"emp_fname char(10) not null, "&
+"emp_lname char(20) not null)"
EXECUTE IMMEDIATE :Mysql USING SQLCA;
yjs_lh 2002-03-02
  • 打赏
  • 举报
回复
方法有二:
1.调用数据库批处理工具,并将文件名作为输入参数(查查相应的数据库工具)
2.使用楼上的读文件方法,将内容读入ls_sql,然后
Execute Immediate :ls_sql using sqlca;

jackygan 2002-03-02
  • 打赏
  • 举报
回复
各位同僚,我说的是执行里SQL语句。请帮忙。
531MT 2002-03-02
  • 打赏
  • 举报
回复
2.7 文件操作函数文件操作函数完成文件的输入、修改、输出、有效性检查、删除以及确定文件长度等功能。在访问文件中的数据之前,需要首先打开文件。文本用毕之后,需要关闭文件。文件的打开方式有两种:行模式(Line Mode)和流模式(StreamMode)。在行模式下,读取数据时,一次读入一行,直到读取到回车(CR)换行(LF)字符或文件的结束符时停止;写文件时,一次写入一行,在每行的末尾自动添加上回车换行字符(具体添加的字符与操作系统有关)。在流模式下,读取数据时,按字节依次读取,直到读到文件结束符(EOF)时才算读完文件;写数据时,按数据原样写入文件,并不另加其它任何控制字符(包括回车换行符)。文件操作函数包括:
函数 返回值 功能
FileClose ( fileno) Integer 关闭文件
FileDelete ( filename) Boolean 删除文件
FileExists ( filename) Boolean 检查指定的文件是否存在
FileLength ( filename) Long 得到指定文件的长度(以字节为单 位)
FileOpen(filename Integer 打开文件
{,filemode{,fileaccess
{,filelock ,writemode
{creator,filetype}}}}})
FileRead ( fileno, variable) Integer 从指定文件中读取数据
FileSeek ( fileno, position, origin) Long 将文件指针移动到指定位置FileWrite ( fileno, variable) Integer 写文件
GetFileOpenName(title, pathname,
filename {,extension {, filter}}) Integer 显示打开文件对框,让 用户选择要打开的文件
GetFileSaveName(title, pathname,
rfilename {, extension {, filter}}) Integer 显示保存文件对话框,让用户选择要保存到的文件
jackygan 2002-03-02
  • 打赏
  • 举报
回复
Reply: pbworm(pb菜鸟)兄:
是这样的,我编写了一个工人计件程序,碰到了计加班费的问题。
其中有几个数分别为"工号(如:CDAF0029)","出勤小时",
"加班小时","请假小时",然后某部门的员工加班费的计算方法会为:
("出勤小时"-192+请假小时+加班小时)*1.5="加班费"
就针对上述的工式,由于工公司可能会随时改变计算方法,所以以上的工式必须
可以灵活更改,请问pbworm(pb菜鸟)兄 有什么好办法?
Methodor 2002-03-02
  • 打赏
  • 举报
回复
Execute Immediate ~~
Dyna要注意规则,有限制
zuoyangguang 2002-03-02
  • 打赏
  • 举报
回复
学学
pbworm 2002-03-02
  • 打赏
  • 举报
回复
to jackygan(剑)

你的动态是什么意思?在sql中还是在pb中
abcn 2002-03-01
  • 打赏
  • 举报
回复
还有一错!!
就是第三行,将ls_filename和ls_filepath位置换一下
我太急了!
abcn 2002-03-01
  • 打赏
  • 举报
回复
sorry,
上倒数第二行前应加 //
:P
abcn 2002-03-01
  • 打赏
  • 举报
回复
string ls_sql.ls_filename,ls_filepath
int li_sql,li_fd,li_flen,li_rc
li_sql=getfileopenname('选择文件',ls_filename,ls_filepath,'*.txt','文本文件(*.txt),*.txt')
if li_sql=1 then
li_flen=filelength(li_filename)
li_fd=fileopen(ls_filename,streammode!)
if li_flen<32767 then
li_rc=fileread(fd,ls_sql)
filecolse(li_fd)
end if
ls_sql得到的值就是你的文本文件
end if
vcpb 2002-03-01
  • 打赏
  • 举报
回复
filewrite、fileopen、FileRead系列函数

integer li_FileNum
li_FileNum = FileOpen("C:\HR\EMP_DATA.TXT", &
LineMode!, Write!, LockWrite!, Append!)
FileWrite(li_FileNum, "New Employees")

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧