QAD Progress编程
QAD三种程序(查询、报表、维护)模板介绍

QAD系统内主要有三类程序:维护程序,报表程序,查询程序。
Progress程序一般都有比较固定的模式。
一、维护类程序模板。
{mfdtitle.i} /* 程序头,全局变量定义等,标准QAD的程序都需要加载此文件 */define variables. /* 变量定义 */form with frame a. /* frame定義,維護畫面內容 */setFrameLabels(frame a:handle). /* 畫面標簽設置 */Mainloop:repeat:prompt-for … editing: /*通常输入關鍵字段 */{mfnp.i ……} /* 按上下鍵前后显示记录功能盤 */end./* 记录的增改删处理 */assign global…find …/* 在记录表中查询此条记录 */if not available … /* 如果不存在此记录,则新增一条记录 */{mfmsg.i 1 1} /* 类似mfmsg的子程序,都是信息提示类 */create … /* 创建记录*/assign … /* 给记录赋值 */end.Status = stline{2}.update go-on (F5 or Ctrl-D) /* 继续维护剩余字段 */if F5 or CTRL-D then do: /* 判断是否按了删除键,一般为F5或者Ctrl + D */del-yn = yes.{mfmsg01.i 11 1 del-yn} /* 刪除的處理 */end.End.Status input.二、报表类程序的模板。
{mfdtitle.i} /* 頭文件,必須要有*/define variables. /* 变量定义 */form……with frame a side-labels width 80. /*报表输入画面,限定输入参数,为一个frame */setFrameLabels(frame a:handle).{wbrp01.i}repeat:……. /* 报表输入参数的控制 */if c-application-mode <> ‘web’ then update…… with frame a. /* 更新输入内容*/{wbrp06.i &command = update &fields = ‛ ……‛ &frm = ‚a‛}bcdparm = ‚‛.{mfquoter.i part }{mfquoter.i part1 }{mfquoter.i effdate}{mfquoter.i effdate1 }……….end.{mfselbpr.i ‚printer‛ 132} /* 选择打印机的子程序 */for each… /* 根据输入参数在相关表中查询记录 */display{mfrpchk.i} or {mfrpexit..i} /* 报表结束 */end.{mfrtrail.i} or {mftr0801.i} or {mfreset.i} /* 报表结束、打印结束等 */end.三、查询类程序模板。
progress 用法

progress 用法
progress是一个英文单词,意思是“进步”或“进展”。
在计算机编程中,progress也可以表示进度条的意思。
下面是progress用法的详细解释:
1. 表示进步或进展的意思。
例如:We’ve made great progress in our project. (我们在这个项目中取得了巨大的进展。
)
2. 在计算机编程中,progress可以表示进度条的意思。
例如:The progress bar shows how much of the file has been downloaded. (进度条显示了已经下载了多少文件。
)
3. progress还可以作为一个动词,表示“逐步前进”或“逐渐发展”。
例如:We’re progressing well in our studies. (我们在学业上进展顺利。
)
4. progress还有一个特殊的用法,可以表示“进步派”或“进步主义者”。
例如:She’s a progress advocate. (她是一个进步主义者。
)
总之,progress是一个非常常用的词汇,在不同的语境中有不同的用法。
无论是在日常生活还是在计算机编程中,掌握好progress 的用法都是非常重要的。
- 1 -。
qt中 c语言progressbar的应用实例

qt中 c语言progressbar的应用实例一、概述ProgressBar是Qt中常用的进度条控件,可以用于显示操作的进度。
本文将介绍如何在Qt中使用C语言编写ProgressBar的应用实例。
二、环境准备在开始编写ProgressBar应用之前,需要先准备好以下环境:1. Qt Creator IDE2. C语言编译器三、创建工程1. 打开Qt Creator IDE,选择File -> New File or Project。
2. 在弹出的窗口中选择Non-Qt Project -> Plain C Project。
3. 输入工程名称和路径,点击Next。
4. 选择编译器和调试器,点击Next。
5. 选择Empty Project模板,点击Finish。
四、添加ProgressBar控件1. 在工程目录中创建一个名为“mainwindow.ui”的文件。
2. 打开该文件,在左侧的Widget Box中找到ProgressBar控件,拖拽到界面上。
3. 调整ProgressBar控件的大小和位置。
五、编写代码1. 在工程目录中创建一个名为“main.c”的文件。
2. 在该文件中添加以下代码:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <time.h>#include <QApplication>#include <QWidget>#include <QProgressBar>int main(int argc, char *argv[]){QApplication app(argc, argv);QWidget window;window.resize(300, 150);QProgressBar *progressBar = new QProgressBar(&window);progressBar->setRange(0, 100);progressBar->setValue(0);progressBar->setGeometry(10, 10, 280, 30);window.show();int i;for (i = 0; i <= 100; i++) {progressBar->setValue(i);usleep(100000);app.processEvents();}return app.exec();}3. 代码解释:(1)创建一个QWidget窗口。
python progress包用法

python progress包用法题目:Python Progress包的使用指南引言:在Python编程中,经常需要在长时间运行的程序中添加进度条,以提醒用户程序的运行进度。
而Python Progress是一个强大的第三方库,可用于创建各种类型的进度条。
本文将详细介绍Python Progress包的用法,并逐步回答有关其使用的问题。
一、什么是Python Progress包?Python Progress是一个用于创建进度条的Python库。
它提供了多种类型的进度条,包括简单进度条、百分比进度条、长任务进度条等。
通过使用Python Progress包,我们可以轻松地向Python程序中添加进度条,从而提升用户体验。
二、如何安装Python Progress包?要使用Python Progress包,首先需要在系统中安装它。
可以使用Python 包管理器pip来安装Python Progress。
打开终端或命令提示符,运行以下命令:pip install progress等待安装完成后,即可开始使用Python Progress包。
三、如何创建一个简单进度条?创建一个简单进度条非常简单。
首先,我们需要导入progress包,然后实例化进度条对象。
以下是一个创建简单进度条的示例代码:pythonfrom progress.bar import Barbar = Bar('Processing', max=20)for i in range(20):# 模拟任务的执行time.sleep(0.1)bar.next()bar.finish()在上述代码中,我们首先导入了progress包中的Bar类。
然后,通过实例化Bar类,创建了一个名为'Processing'的进度条,并设置最大值为20。
然后,使用一个循环来模拟任务的执行,每完成一次任务,调用`bar.next()`来更新进度条。
QAD-Progress编程

PROGRESS语言PROGRESS语言是一种非可视化的编程语言,符合4GL规范,具有高级语言的优点,可以进行条件选择(IF、WHERE)、嵌套循环(FOR)、计算(如求和、求平均)等操作,还可以直接进行打印、显示(PUT、DISPLAY),并且不区分大小写。
PROGRESS源程序一般由4部分组成:全局变量定义、图形变量定义(一般是用户指定的查询选择条件)、输出数据的格式和主程序(如何利用数据库中的字段生成用户需要的正确数据)。
全局变量的定义全局变量用DEFINE VARIABLE 关键字定义。
格式如下:DEFINE VARIABLE W1 LIKE(数据格式INTEGER,CHARACTER……)DEFINE VARIALBE W2 AS VARIABLE2使用AS可以直接引用已经定义好的数据格式。
比如我们要把某个变量定义成和表中的字段类型一致时,可直接定义如下:DEFINE VARIALBE1 AS 表中定义的字段这样我们就不用再到后台数据库中去查询该字段的数据格式,提高了编程速度。
如果这个变量在调用过程中也要用到,则分别定义如下://在主过程中DEFINE SHARED VARIABLE W1 LIKE (数据格式INTEGER,CHARACTER……)//在调用过程中DEFINE NEW SHARED VARIABLE W1 LIKE (数据格式INTEGER,CHARACTER……)变量的主要数据类型如下表所示:数据类型缺省格式示例字符型(Character) X(8)Dongnan日期型(Data)99/99/99 03/02/99布尔型(Logical)Yes/No Yes浮点型(Decimal)->>,>>9.99 12.00整型(Integer)->,>>>,>>.9 12图形变量的定义图型变量的定义主要是把已经定义好的变量在界面上显示出来。
Progress+培训

PROGRESS程序开发培训文档目录1PROGRESS概述及学习1.1学习PROGRESS的必要1.2学习要点2PROGRESS数据字典的使用3PROGRESS常用命令3.1数据类型(参考APPENDIX B)3.2定义命令3.3输出显示命令3.4数据记录操作命令 43.5其他命令3.6判断、循环4PROGESS常用函数(参考APPENDIX A)4.1转换函数4.2截取函数4.3运算函数4.4记录状态函数4.5逻辑函数4.6mfg/pro的函数5开发惯例116PROGRESS程序模式7PROGRESS其他常用模式8例子81PROGRESS概述及学习PROGRESS是大型数据库系统,4GL语言,目前的版本是V9.0,有很高的安全性,满足企业ERP系统数据安全管理,系统特点是易于管理,语法简洁,方便程序开发,在国内应用较少,因为它被MFG/PRO和SYMIX 等ERP系统用作其主流数据库和程序支持,在国内有一定的市场范围,PROGRESS的程序员不多。
1.1 学习PROGRESS的必要▪QAD公司的MFG/PRO产品使用PROGRESS,了解PROGRESS,便于实施和客户化开发,更好的使用系统。
▪从安全的角度讲,需要对PROGRESS数据库的数据导入、导出及数据备份有详细了解。
▪利用PROGRESS易于开发的特点,针对PROGRESS用户,使用PROGRESS开发系统模块,对MFG/PRO是很好的补充和扩展。
1.2 学习要点▪了解PROGRESS数据字典的使用▪熟悉常用函数及命令▪熟悉维护、处理、查询报表的格式▪了解MFG/PRO的基本表关系▪熟悉一些文件输入、输出等其他操作▪读例子学习2PROGRESS数据字典的使用数据字典建立表建立字段建立索引DUMP/LOAD功能3PROGRESS常用命令3.1 数据类型(参考APPENDIX B)▪char▪decimal(deci) format “>>>9.99”▪integer(int) format “>>>9”▪logical(log)▪date format “9999/99/99”3.2 定义命令▪define var part1 as char format “x(8)” init ‘1’.-----------------变量定义▪define (new) shared var part1 as char format “x(8)” init ‘1’.-----------------变量定义▪define var part1 like pt_part.----------------类似变量定义▪define var qty as decimal extent 10.--------数组定义,初始化 qty = 0▪Define buffer part_m for pt_mstr.------------BUFFER定义3.3 输出显示命令▪disp part label ‘零件号’ descry label ‘描述’.▪put part at 1.▪Skip(n)▪Message “加入新记录”▪Message "系统控制文件必须维护" VIEW-AS ALERT-BOX INFORMATION(warn/error) BUTTONS OK title "提示".3.4 数据记录操作命令▪Create▪Delete▪set▪Update▪Prompt-for▪Assign▪release▪Find▪break by part by type desc▪where3.5 其他命令▪Undo,retry.▪Validate(part begins ’1’,”零件号应以1开头”)▪begins : if var1 begins ‘a’ then …. 以什么打头▪leave▪next▪100 modulo 3 = 1:取余数▪+ - * / = <> <= >= < > : 加、减、乘、除、等于、不等于。
Progress环境及编程

1.安装Progress.此部分略.(注意:安装文档中有License文件,安装的过程中需要一个个填入).2.安装我司ERP客户端:在192.168.0.9上将sp9setup共享文件夹中的eb2GuiCli文件夹拖到电脑本地C盘下面.将该文件夹中hosts和services两个文件复制到C:\WINDOWS\system32\drivers\etc覆盖原有的文件. 3.开通一个ERP账号,并向权限管理员在36.3.1申请编辑器的权限.4.进入编程环境Progress Editor:双击快捷方式,先进入ERP系统/测试系统点击”运行”输入用户名和口令点击”确定”,进入系统.快捷键”Alt+G”或者直接在”用户菜单”下面可以见到下图的编辑器5.工具条中常用的选项:A)File下面的都比较常用B)Compile下面的Run是用来运行一个没有错误的程序的,Check Syntax则是用来检查是否有语法错误的.它们的快捷键也在途中有所体现.C)Tools下面的:Data Dictionary是用来查找数据库字段的,Pro*tools是用来添加路径的,以及红色标记里的Application Compiler是对一个没有问题的程序进行编译用的.D)Options下面的则是当编译遇到错误的时候根据相关提示进行语法错误查找,以及对某个关键字等有疑问时进行的相关参考查找:6.Progress其实很简单的学习:一、变量定义。
变量必须在第一次被使用之前定义,可以定义在程序的任何地方!但是通常为了增加程序的可读性,变量定义都放在程序的开始处!以下是变量定义的几个实例:define variable str01 as string label "DemoString" initial "hello".def var str02 like str01.def var dt01 as date extent 5.def var inte01 as inte format ">>>9".说明,第一行:str01 是变量名,变量名不要与系统关键字重复,字符或者下划线开头,比如strModel,_Model ;string 表示变量类型,本例指字符型变量,其它类似的比如integer,date,logical等;label 就是后续程序中对变量的描述,比如需要用户输入这个变量值时,系统提示“De moString" ;initial 变量的初始值第二行:def和var都是简写,def是define的简写,var是variable的简写;PROGRESS支持语法简写,但是初学者最好先写全,后面有经验了再简写。
QAD和BPM整合开发说明

QAD和BPM整合开发说明此文档简单介绍比较常用的BPM和QAD数据交互的一种方法,其中BPM平台为Ultimus,开发语言为C#;QAD使用Unix服务器和Progress数据库作为数据存储平台。
一般通过外部程序(如C#)读取QAD中的数据有两种方式:1.通过OLEDB直接连接QAD中Progress数据库,并直接操作相关数据表,这样做可以直接在外部程序中写SQL语句操作QAD,但问题会很多:连接不稳定,一旦操作QAD 错误,数据不可回滚。
2.通过FTP服务中转操作,因为QAD自带FTP服务功能,从QAD中可以自动把Progress数据库表中数据导出并上传到QAD FTP目录中,QAD也可以自动从其FTP目录中读取相关文件并写入数据到Progress数据库相关表中。
而通过外部程序(如C#)读取和写入FTP目录中的文件相比较而言也会比较稳定。
所以我们使用第二种方式来操作外部程序和QAD的数据交互保证系统的稳定性和安全性。
示例说明:1.如下图所示:Ftp服务器中建两个目录in和out,其中in为Workflow传入到QAD中的文件,out为QAD传出到Workflow服务器目录中的文件;Workflow服务器建两个目录in和out,其中in为QAD传出到Workflow中的文件,out为Workflow传入到QAD中文件。
所以通过程序对文件目录和ftp目录操作是非常稳定且更易操作。
但流程处理结束后,通过机器人生成传入到QAD中的文件并上传到FTP服务器目录中,QAD操作人员在QAD客户端直接读取FTP目录中的文件来实现数据的同步和共享,如下图所示:2.下图为Ftp目录和workflow服务器目录中的文件及文件内容示例:从QAD导出的文件名称、内容和格式可根据业务的需求做变换,下图中文件内容以“|”作为分隔符,QAD和Workflow外部程序读取此文件内容时可以以“|”做判断来操作表数据及表之间的关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PROGRESS语言PROGRESS语言是一种非可视化的编程语言,符合4GL规范,具有高级语言的优点,可以进行条件选择(IF、WHERE)、嵌套循环(FOR)、计算(如求和、求平均)等操作,还可以直接进行打印、显示(PUT、DISPLAY),并且不区分大小写。
PROGRESS源程序一般由4部分组成:全局变量定义、图形变量定义(一般是用户指定的查询选择条件)、输出数据的格式和主程序(如何利用数据库中的字段生成用户需要的正确数据)。
全局变量的定义全局变量用DEFINE VARIABLE 关键字定义。
格式如下:DEFINE VARIABLE W1 LIKE(数据格式INTEGER,CHARACTER……)DEFINE VARIALBE W2 AS VARIABLE2使用AS可以直接引用已经定义好的数据格式。
比如我们要把某个变量定义成和表中的字段类型一致时,可直接定义如下:DEFINE VARIALBE1 AS 表中定义的字段这样我们就不用再到后台数据库中去查询该字段的数据格式,提高了编程速度。
如果这个变量在调用过程中也要用到,则分别定义如下://在主过程中DEFINE SHARED VARIABLE W1 LIKE (数据格式INTEGER,CHARACTER……)//在调用过程中DEFINE NEW SHARED VARIABLE W1 LIKE (数据格式INTEGER,CHARACTER……)变量的主要数据类型如下表所示:数据类型缺省格式示例字符型(Character) X(8)Dongnan日期型(Data)99/99/99 03/02/99布尔型(Logical)Yes/No Yes浮点型(Decimal)->>,>>9.99 12.00整型(Integer)->,>>>,>>.9 12图形变量的定义图型变量的定义主要是把已经定义好的变量在界面上显示出来。
/*账户余额查询报表中部分源程序*/FORM /*显示一个FORM *//*定义一个相当于容器的框*/RECT-FRAME AT ROW 1 COLUMN 1.25RECT-FRAME-LABEL AT ROW 1 COLUMN 3 NO-LABEL VIEW-AS TEXT SIZE-PIXELS 1 BY 1SKIP(.1) /*GUI*//*把变量entity的选择条件显示出来*/entity colon 25 label ‘会计单位’entity1 colon 50 label “至”cname colon 25 label‘摘要’acc colon 25 label ‘账户’acc1 colon 50 label “至”sub colon 25 label ‘分账户’sub1 colon 50 label “至”ctr colon 25 label ‘成本中心’ctr1 colon 50 label “至”begdt colon 25 label ‘生效日期’enddt colon 50 label “至”subflag colon 25 label ‘汇总分账户’ccflag colon 25 label ‘汇总成本中心’rpt_curr colon 25 label ‘货币’with frame a side-labels attr-space width 80NO-BOX THREE-D /*GUI*/cname colon 25 label ‘摘要’第一行在窗口中的显示如下:摘要方框中是供用户输入的选择条件。
报表格式的定义报表格式的定义非常简单,只要用at和to标出相对位置即可:FORM /*GUI*/ header“期初借方余额”to 65“期初贷方余额”to 85“期间活动金额”to 92“借方活动金额”to 109“贷方活动金额”to 128“期末借方余额”to 148“期末贷方余额”to 164 skip“Account Description” at 1“账户摘要”at 1“---------------”at 1“---------------”to 85“--------------”to 134“--------------”to 164with STREAM-IO /*GUI*/ frame phead1 page-top width 186.at和to 表示数据在frame phead1 上的相对位置。
不同之处在于,at后边的数据表示从该点开始,而to后边的数据表示到该点结束。
特别要注意的是,在PROGRESS中,只能画横线,不能画竖线。
数据处理对于数据的处理,本文主要介绍如何读取数据,以及在编程时需要注意的地方。
我们以账户余额查询报表为例。
当在数据库的表中查找数据时,使用下述语句:FOR EACH (表)WHERE (条件)//对表中数据进行处理//对符合条件的每个数据进行处理END只访问表中指定的一个数据:FIND FIRST OR LAST (表)WHERE (条件)。
//对表中数据进行处理END。
查找条件之间用OR 或者AND 连接。
在PROGRESS中,有两对语句FIRST 和FIRST-OF、LAST和LAST-OF,这两个判断语句非常重要,常用于判断循环的开始还是结束以及循环中的分类是开始还是已经结束。
FIRST(BREAK-GROUP ):当前的循环是循环体的第一次循环则返回TRUE,如果不是则返回FALSE;FIRST-OF(BREAK-GROUP ):当前的循环是循环中的分类的第一次循环则返回TRUE,如果不是则返回FALSE;LAST(BREAK-GROUP ):当前的循环是循环体的最后循环则返回TRUE,如果不是则返回FALSE;LAST-OF(BREAK-GROUP ):当前的循环是循环中的分类的最后一次循环则返回TRUE,如果不是则返回FALSE。
如果程序需要处理大量的数据,可以使用调用过程。
调用过程可以采用*.P或者*.I文件。
它们的区别在于*.I文件是包含文件,在编译时不生成相应的*.R文件;而*.P文件生成相应的*.R文件。
注意:如果在过程中多次使用到同一个表,必须定义一个BUFFER格式:DEFINE BUFFER WW LIKE (表名)WW为表的别名。
如果不定义BUFFER,编译时将出现“TABLE 无法辨别!”的警告。
PROGRESS编程其实很简单(二)PROGRESS程序架构。
PROGRESS启动应用程序,通常都是先启动一个主程序,比如mf.p,这个mf.p做一些全局变量设置,并初始化应用程序菜单。
当用户执行菜单功能时,实际上是运行菜单所指定的程序!在这种模式下,PROGRESS的程序一般都不大,结构明了可读性很强,每个程序目的非常明确,但是也要遵循一定的准则,方便以后的阅读和修改。
一、程序扩展名的设定。
.p 主程序(可直接运行,或者编译以后挂主菜单被调用).i 子程序(经常使用的执行某一特定功能,或者为了使主程序易于阅读脱离出来).v 验证程序.w Windows的程序(Windows版的Progress支持可视化的组件编程,组件拉一拉放一放,就自动生成.w的文件了).r 编译后的程序(菜单调用时,实际上是执行.r的程序)二、程序的命名规则。
主程序格式:aa + bb + cc + dd.p其中:aa --- 系统模块IDbb --- 系统功能cc --- 程序类型(mt -维护、iq -查询或者rp -报表等)dd --- 序列号子程序格式:通常是主程序a.i 主程序b.i 这样子//关于程序的命名,个人觉得也没必要一定要遵循特定格式,一家公司有自己固定的命名方式,容易区分即可;如果是咨询公司或者系统集成公司,则要先了解客户的命名习惯和规则;同理,下面的“程序头”。
三、程序头。
以注释的形式,标明尽可能多的程序相关的信息,比如:程序名(路径,不过路径一般都是企业自己规定好了)、作者、菜单号、功能(菜单标题)、创建日期、修改日志等。
至于格式,也就是POSE,爱怎么摆怎么摆,清楚明了即可。
但是,在同一家公司,风格应该统一。
另外,关于修改日志,个人觉得最好在程序头和程序体,都明显说明一下修改的日期和原因,要点。
(注释不记入程序长度,所以不要担心程序太长,:p )四、维护类程序模板。
注意:为方便说明,注释暂时用“//”,但是在PORGRESS程序里是错误的哈!define variables.{mfdtitle.i} //程序头,全局变量定义等,是标准QAD的菜单程序就请加上这个,不要问为什么form with frame a. //定义格局(包含输入输出)Mainloop:repeat:prompt-for … editing: //通常这里输入主要字段(如果比如订单号,料件名称等){mfnp.i} //前后记录显示功能,常用end./* ADD/MODI/DELETE */assign global…find …if not available …//新记录{mfmsg.i 1 1} //类似mfmsg的子程序,都是信息提示类create …assign …end.Status = stline{2}.update go-on (F5 or Ctrl-D) //继续维护剩余字段if F5 or CTRL-D then do: //判断是否按了删除键,一般定义是F5或者Ctrl + Ddel-yn = yes.{mfmsg01.i 11 1 del-yn}end.End.Status input.五、报表类程序的模板。
{mfdtitle.i}form definition [selection criteria]part colon 15 part1 colon 40 label {t001.i}effdate colon 15 effdate1 colon 40 label {t001.i}with frame a side-labels width 80.//以上4行定义用户输入“限制报表输出”的条件,比如生效日期啊什么的repeat:if part1 = hi_char then part1 = “”. //如果用户不输任何东西,则默认最大字符或者最小字符,以下类似if effdate = low_date then effdate = ?.if effdate1 = hi_date then effdate1 = ?.data statements [selection criteria]bcdparm = "".{mfquoter.i part } //BATCH专用,至今没用过,体会不到好处,哪位帮忙解释一下?{mfquoter.i part1 }{mfquoter.i effdate}{mfquoter.i effdate1 }{mfselbpr.i “printer”132} //选择打印机的子程序if part1 = “” then par t1 = hi_char.if effdate = ? Then effdate = low_date.if effdate1 = ? Then effdate1 = hi_date.{mfphead.i or mfphead2.i} //报表头for each…display{mfrpchk.i} or {mfrpexit..i} //报表结束end.{mfrtrail.i} or {mftr0801.i} or {mfreset.i} //报表结束、打印结束等end.六、查询类程序模板。