PB编程示例
pb 时间函数
pb时间函数介绍在编程中,时间函数是非常重要的一部分。
时间函数可以帮助我们获取、操作和格式化时间,以满足不同的需求。
在Python编程语言中,有一个非常常用的时间函数库,就是pb时间函数。
什么是pb时间函数pb时间函数是Python编程语言中的一个模块,提供了一系列的函数来处理时间。
它可以帮助我们获取当前的时间、计算时间间隔、格式化时间等操作。
通过使用pb时间函数,我们可以更加方便地处理时间相关的任务。
pb时间函数的常用功能pb时间函数提供了多个常用的功能,下面将逐个介绍。
1. 获取当前时间使用pb时间函数,我们可以轻松地获取当前的时间。
下面是一个示例代码:import pbcurrent_time = pb.get_current_time()print(current_time)上述代码中,我们使用了get_current_time函数来获取当前的时间,并将结果打印出来。
2. 计算时间间隔pb时间函数还可以帮助我们计算时间间隔。
下面是一个示例代码:import pbstart_time = pb.get_current_time()# 执行一些操作end_time = pb.get_current_time()time_interval = pb.calculate_time_interval(start_time, end_time)print(time_interval)上述代码中,我们使用了calculate_time_interval函数来计算开始时间和结束时间之间的时间间隔,并将结果打印出来。
3. 格式化时间pb时间函数还可以将时间格式化为指定的格式。
下面是一个示例代码:import pbcurrent_time = pb.get_current_time()formatted_time = pb.format_time(current_time, "YYYY-MM-DD HH:mm:ss")print(formatted_time)上述代码中,我们使用了format_time函数将当前时间格式化为”YYYY-MM-DD HH:mm:ss”的格式,并将结果打印出来。
PB基本语句,循环语句
PB 基本语句一、赋值语句赋值语句用于给变量、对象属性赋值,这是应用程序中使用最频繁的语句,其语法格式为:variablename = expression其中:⑴variablename是变量名或对象属性;⑵expression是表达式,其数据类型应该与variablename的数据类型兼容。
下面是赋值语句的几个简单示例:Address = "北京"TaxRate = .05Age = 30mle.text="北京欢迎你"PowerScript的赋值语句不支持多重赋值,也就是说,一条赋值语句只对一个变量赋值,不能同时对多个变量赋值。
下面的语句:A=B=0在有些编程语言中同时把A和B均赋值0,但PowerScript中,该语句等价于:A=(B=0)其意义为,检查B等于0是否成立,成立时将TRUE赋给变量A,否则把FALSE赋给变量A。
如果A不是Boolean类型的变量,则上述语句将引起编译错误。
二、条件语句IF语句有两种形式,下面我们按照从简单到复杂的次序逐一介绍。
1. 单行IF ... THEN语句单行IF ... THEN语句的格式为:IF逻辑表达式THEN语句1 [ELSE语句2]单行IF ... THEN语句书写时整条语句写在一行上,当逻辑表达式的结果为True时执行语句1,否则执行语句2(如果有该子句的话)。
例如:IF sle_State.text="BJ" THEN MessageBox("欢迎","北京")2.多行IF ... THEN语句多行IF ... THEN语句的语法格式为:IF 逻辑表达式1 THEN语句1[ ELSEIF 逻辑表达式2 THEN语句2. . .] [ ELSE 语句n]END IF本语句的执行过程为:计算逻辑表达式1,如果其结果为True,则执行语句1,然后离开整个IF语句;否则计算逻辑表达式2,如果其结果为True,则执行语句2,然后离开整个IF 语句;... 如果逻辑表达式的结果都是False,且存在ELSE子句,则执行语句3。
pb代码
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
sle_3.text=string(m+n)
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
sle_3.text=string(m - n)
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
sle_3.text=string(m*n)
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
if integer(sle_2.text)=0 then
messagebox("出错","除数不能为零")
CASE is<n
sle_3.text="小于"
END CHOOSE
显示:
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
CHOOSE CASE m
CASE is>n
messagebox("提示",sle_1.text+"大于"+sle_2.text)
else
sle_3.text=string(m/n)
end if
模拟三:
比较:
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
CHOOSE CASE m
PB常用代码
----------------------------------------------------------------------
数据压缩加密
//判断是否存在目录
nv_compression lnv_cmp
lnv_cmp = CREATE nv_compression
string ls_dir
//
//自定义事件: uo_enter 返回值: long event id: pbm_keydown
//
// keycode key
//
// unsignedlong keyflags
//
//////////////////////////////////////////////////////
ls_dir = gstr_option.path+'\prodcut_lsj'
if DirectoryExists (ls_dir) then
// messagebox('','请先删除原来的存放数据的"txt"目录!')
// return
else
if createdirectory(ls_dir) = -1 then
if keydown(keyenter!) then
MESSAGEBOX('你按了回车键','你按了回车键')
keybd_event(9,0,0,0) //api
keybd_event(9,0,2,0)
Return 1
end if
dw_2.SetColumn('thp10')
PB编程实例_100(一)
nbPrinters = UpperBound(printers)
FOR i = 1 TO nbPrinters
lb_1.addItem(printers[i])
NEXT
(2)获得当前的用户名和机器名
在这个应用中,需要定义下面的两个API函数
注意:通过一些实验,在使用函数GetUserNameA获得用户名时,如果定义的BUFFERLENGTH
小于实际的用户名长度,函数可能会出现异常.
(3)获得当前的目录
首先定义API函数
FUNCTION long GetCurrentDirectoryA( long length , ref string path) &
RegistryGet(\"HKEY_CLASSES_ROOT\\.\" + as_extension, \"\", ls_class)
IF isNull(ls_class) OR trim(ls_class) = \"\" THEN
// The class is not found, try with .txt (why not ?)
使应用休眠2秒
Sleep(2000)
(8)使用文件关联的应用来打开一个文档
使用外部函数ShellExecuteA().函数如下定义:
FUNCTION long ShellExecuteA &
(long hwnd, string lpOperation, &
string lpFile, string lpParameters, string lpDirectory, &
pb choose case用法
pb choose case用法Pb编程语言中的`choose`语句用于实现多分支选择结构,类似于其他编程语言中的`switch`语句。
以下是`choose`语句的基本用法:1. 语法结构:`choose`语句的一般结构如下:```pbchoose (expression)case value1:// 当expression的值等于value1时执行的代码case value2:// 当expression的值等于value2时执行的代码 ...otherwise:// 当expression的值不匹配任何case时执行的代码endchoose;```2. 执行流程:程序执行到`choose`语句时,会计算括号内的表达式`expression`的值,然后依次与每个`case`后的`value`进行比较。
如果找到相等的值,则执行该`case`后的代码块。
如果没有找到匹配的`case`,则执行`otherwise`后的代码块(如果提供了`otherwise`部分)。
3. 示例:假设我们有一个变量`x`,我们想要根据`x`的值执行不同的操作:```pbchoose (x)case 1:print("x is 1");case 2:print("x is 2");otherwise:print("x is not 1 or 2");endchoose;```4. 注意事项:在`choose`语句中,一旦找到匹配的`case`,执行完相应的代码后,会跳出`choose`结构,即使后面的`case`也有可能匹配。
如果没有提供`otherwise`部分,且没有任何`case`匹配,程序会继续执行`choose`语句之后的代码。
总的来说,通过以上信息,应该能够理解并使用Pb编程语言中的`choose`语句来实现多分支选择。
在实际编程中,可以根据需要添加更多的`case`分支,或者使用`otherwise`来处理所有未被前面的`case`覆盖的情况。
pb停止代码函数
pb停止代码函数
以下是一个简单的Python示例,使用os模块来停止一个进程:
Python:
import os
import signal
def stop_process(pid):
try:
os.kill(pid, signal.SIGTERM)
except OSError:
print("Process not found")
# 使用函数停止进程
stop_process(1234) # 这里的1234是你要停止的进程的PID
在这个例子中,我们使用os.kill函数发送一个SIGTERM 信号给指定的进程。
这个信号告诉进程应该停止运行。
如果进程不响应这个信号,我们可以发送SIGKILL信号来强制结束它。
但是,请注意,使用SIGKILL会立即终止进程,而不会给它机会进行清理或保存状态。
另外,不同的操作系统和编程语言可能有不同的方式来停止进程。
例如,在Java中,你可能需要使用Runtime.getRuntime().exec("kill " + pid)。
在C++中,你可能需要使用kill函数。
所以,具体的实现方式取决于你的需求和使用的技术栈。
pb数据窗口常用代码
pb数据窗口常用代码一、连接数据库连接数据库也就是指定事务对象。
PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。
语法格式:dw_control.SetTrans(TransactionObject)dw_control.SetTransObject(TransactionObject)其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。
这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。
用户只需要在这里填充一个事务对象,PB 就会自动完成对该事物对象的初始化以及和数据库连接的工作。
而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。
但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。
与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。
因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。
这两个函数都是成功时返回1,发生错误时返回-1。
二、检索数据用于检索数据的函数只有一个,就是Retrieve()函数。
语法格式:dw_control.Retrieve()如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。
而且检索参数必须和数据窗口对象中定义顺序一致。
此函数返回一个长整型的数据,代表检索出来的数据行数。
如果发生错误,将返回-1。
三、更新数据当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。
语法格式:dw_control.Update()这个更新可能成功,也可能失败。
PB基础语句
PB 基本语句循环语句PB 基本语句一、赋值语句赋值语句用于给变量、对象属性赋值,这是应用程序中使用最频繁的语句,其语法格式为:variablename = expression其中:⑴variablename是变量名或对象属性;⑵expression是表达式,其数据类型应该与variablename的数据类型兼容。
下面是赋值语句的几个简单示例:Address = "北京"TaxRate = .05Age = 30mle.text="北京欢迎你"PowerScript的赋值语句不支持多重赋值,也就是说,一条赋值语句只对一个变量赋值,不能同时对多个变量赋值。
下面的语句:A=B=0在有些编程语言中同时把A和B均赋值0,但PowerScript中,该语句等价于:A=(B=0)其意义为,检查B等于0是否成立,成立时将TRUE赋给变量A,否则把FALSE赋给变量A。
如果A不是Boolean类型的变量,则上述语句将引起编译错误。
二、条件语句IF语句有两种形式,下面我们按照从简单到复杂的次序逐一介绍。
1. 单行IF ... THEN语句单行IF ... THEN语句的格式为:IF逻辑表达式THEN语句1 [ELSE语句2]单行IF ... THEN语句书写时整条语句写在一行上,当逻辑表达式的结果为True时执行语句1,否则执行语句2(如果有该子句的话)。
例如:IF sle_State.text="BJ" THEN MessageBox("欢迎","北京") 2.多行IF ... THEN语句多行IF ... THEN语句的语法格式为:IF 逻辑表达式1 THEN语句1[ ELSEIF 逻辑表达式2 THEN语句2. . .] [ ELSE 语句n]END IF本语句的执行过程为:计算逻辑表达式1,如果其结果为True,则执行语句1,然后离开整个IF语句;否则计算逻辑表达式2,如果其结果为True,则执行语句2,然后离开整个IF语句;... 如果逻辑表达式的结果都是False,且存在ELSE子句,则执行语句3。
pb的基本函数
1、Open 两种格式:一个是带参数的还有一个是不带参数的不带参数的是不确定具体的数据类型的2、Opensheet() opensheet(指定窗口名,{指定要打开的窗口的类型},指定要放置的工作表的框架窗口名,所打开的窗口是在第几个菜单下生产默认值为倒数第二个,打开方式arrangeopen。
)打开方式分为三种:cascade、layered、original。
Cascade:向右下方偏移。
默认值如果缺少的话Layered:最大化Original:与cascade相同。
只是打开的时候与原来的一样大3、Close4、Setfocus() 将焦点设置到指定控件上Objectname.setfocus() 如果objectname是列表框的话则控件将指向列表框的第一列表项上。
5、SelectText()返回该控件所选的文本。
返回值为long Singlelineeditname.selecttext(start,length)6、GetColumn()和GetColumnname()两个都没有返回值:第一个是返回当前列的列好,第二个则是返回当前列名7、Update()8、DeleteRow()Dwcontrol.deleteRow(row) row表示要删除的行数,当该值为0时则表示删除该行1、insert row 在数据窗口控件指定行前面插入一行dwcontrol.insertrow(row) scrolltorow():使新插入的行成为当前行。
2、ScrollToRow() 使用方法:rtename .scrolltorow(row)Rtename超文本编辑框的名称。
如果row的值为0的话则就回滚到第一行,如果row的值大于超文本的行数则回滚到最后一行3、selectedColumn()返回插入点后第一个字符的位置rtename.selectedcolumn()4、setcloumn5、print() 以当前字体在打开的打印作业中打印一行或多行文本print(printjobnumber,{tabl},string{,tab2})tab1为文本开始打印的位置,以千分之一英寸为单位。
PB开发技巧代码集合
PB开发技巧代码集合:00. 凡事预则立,不预则废。
生于忧患,死于安乐。
时间就是生命,1分钟可以做什么!01. 获取窗口属性的方法:dw_1.selectrow(0,false)//不选中任何行ls_read = dw_1.Object.DataWindow.ReadOnly // 获取dw_1只读属性ls_read = dw_1.Describe("DataWindow.ReadOnly") // 获取dw_1只读属性(同上) dw_1.Object.DataWindow.ReadOnly="no" // 取消dw_1只读属性02. 程序中使用SQL语句:基本格式如下:Select name,salary,sexInto :ls_name, ls_salary, ls_sexFrom studentWhere id = :li_id; //(注意逗号分隔,冒号变量,分号结束)03. SQL基本语句:1) 创建表:create tableCreate Table Personal(P_id varchar2(25) primary key not null,P_name varchar2(25) not null, P_pwd varchar2(25) not null,P_age varchar2(25) not null);2) 删除表:drop tableDrop table personal;3) 修改表:alter tableAlter table personalAdd notes varchar2(25);4) 单行基本格式:Select (Distinct/All) name, pwd , sexFrom tabA a, tabB bWhere a.id = b.idGroup by name, pwd, sexHaving nameOrder by a.id;5) 嵌套查询:例子1:查询张三所在部门所有人的信息。
简单PB两层程序实例编写文档
简单PB两层程序实例编写文档1、创建一个workspace,取名为“querysometing”;2、创建一个Application,取名为“querysometing”,在script中写入数据库链接串(若名称为SQLCA),为方便后续使用可添加“connect using SQLCA ;”。
3、创建一个Window,取名为“w_main”,将窗口属性中的WindowState改为“maxmized”;4、需要在程序一开始打开“w_main”窗口,则在Application 的script中写入open(w_main);5、创建一个Menu,取名为“menu1”,右击需要添加节点处,选择“Insert submenu Item”添加子节点;6、将“w_main”属性中的MenuName设置为“menu1”,即将菜单添加至主窗口;7、创建另一个Window,取名为“w_query”,将窗口属性中的WindowType改为“response”;8、如需在点击菜单某个节点后跳转到w_query,则在该节点的script中,写入open(w_query);9、创建一个Gird类型的DataWindow,取名为“dw_1”,选择要查询的表中的字段信息,返回操作窗口后,可以修改每一个字段Header的Name值,设置显示的标题信息。
10、在“w_query”窗口中,添加一个datawindow Contorl控件,将其DataObject设置为“dw_1”这个数据窗口。
添加一个CommandButton Contorl 控件(名称为cb_1),在点击后需要查询数据,则在cb_1的click事件中,写入dw_1.settransobject(sqlca),dw_1.retrieve()设置数据窗口与数据库连接方式和接收信息显示方式。
11、保存后,即可运行。
注意:Application 中数据库连接串格式:SQLCA.DBMS = "O90 Oracle9i (9.0.1)" SQLCA.LogPass = “onlytest”SQLCA.ServerName = "POWERSI_CJ" SQLCA.LogId = "test_csx"SQLCA.AutoCommit = FalseSQLCA.DBParm = "PBCatalogOwner='test_csx'"。
PB编程实例
(1)获得安装的打印机在这个例子中,我们生成一个以打印机名的下拉框string printers[]int rtn, i, nbPrintersrtn = RegistryKeys &(\"HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Print\\Printers\", &printers)nbPrinters = UpperBound(printers)FOR i = 1 TO nbPrinterslb_1.addItem(printers[i])NEXT(2)获得当前的用户名和机器名在这个应用中,需要定义下面的两个API函数FUNCTION long GetComputerNameA(ref string ComputerName, ref ulong BufferL ength)LIBRARY \"KERNEL32.DLL\"FUNCTION long GetUserNameA(ref string UserName, ref ulong BufferLength) LIBRARY \"ADVAPI32.DLL\"and thenlong ll_retstring ls_ComputerName, ls_UserNameulong BufferLength = 250 // you may need to adjust this. see Notels_ComputerName = Space(BufferLength)ls_UserName = Space(BufferLength)ll_ret = GetComputerNameA(ls_ComputerName, BufferLength)ll_ret = GetuserNameA(ls_UserName, BufferLength)注意:通过一些实验,在使用函数GetUserNameA获得用户名时,如果定义的BUFFERLE NGTH小于实际的用户名长度,函数可能会出现异常.(3)获得当前的目录首先定义API函数FUNCTION long GetCurrentDirectoryA( long length , ref string path) &LIBRARY \"Kernel32\"接下来long ll_retstring ls_pathls_path = Space(250)ll_ret = GetCurrentDirectoryA(250, ls_path)IF ll_ret > 0 THENls_path = Left(ls_path,ll_ret)MessageBoxBox(\"\", ls_path)ELSEMessagebox(\"Error\",\"Err GetCurrentDirectory \" + String(ll_ret))END IF(4)创建或删除目录首先定义如下API函数FUNCTION boolean CreateDirectoryA(ref string path, long attr)LIBRARY \"kernel32.dll\"FUNCTION boolean RemoveDirectoryA( ref string path )LIBRARY \"kernel32.dll\"接下来CreateDirectoryA( \"C:\\TempDir\", 0 ) // always 0RemoveDirectoryA( \"C:\\TempDir\" )注意:没有办法同时创建两个以上的目录.可以一个一个的创建.(5)文件改名使用下面的函数,把文件\"移动\"成一个新的名字(没有关系,不会真的移动文件,只是改名)Simply \"move\" it under a new name with the functionFUNCTION BOOLEAN MoveFileA(STRING oldfile, STRING newfile)LIBRARY \"Kernel32.dll\"(6)禁止ODBC的“LOGIN”窗口在DbParm中使用如下的连接选项Use this ConnectOption in your DbParm :SQLCA.DBParm=\"ConnectString=\'DSN=mydb;UID=dba;PWD=sql\',\" + & \"ConnectOption=\'SQLDRIVER_CONNECT,SQL_DRIVER_NOPROMPT\'\ "(7)使应用休眠定义:SUBROUTINE Sleep(Long lMilliSec) LIBRARY \"Kernel32.dll\"使应用休眠2秒Sleep(2000)(8)使用文件关联的应用来打开一个文档使用外部函数ShellExecuteA().函数如下定义:FUNCTION long ShellExecuteA &(long hwnd, string lpOperation, &string lpFile, string lpParameters, string lpDirectory, &integer nShowCmd ) LIBRARY \"SHELL32\"在脚本中,例如:启动一个缺省的浏览器string ls_Nulllong ll_rcSetNull(ls_Null)ll_rc = ShellExecuteA &( Handle( This ), \"open\", \"MyPage.html\", ls_Null, ls_Null, 1)可能返回的代码如下:SE_ERR_FNF 2 // file not foundSE_ERR_PNF 3 // path not foundSE_ERR_ACCESSDENIED 5 // access deniedSE_ERR_OOM 8 // out of memorySE_ERR_DLLNOTFOUND 32SE_ERR_SHARE 26SE_ERR_ASSOCINCOMPLETE 27SE_ERR_DDETIMEOUT 28SE_ERR_DDEFAIL 29SE_ERR_DDEBUSY 30SE_ERR_NOASSOC 31使用下面的代码,实现以指定的扩展名对应的程序打开你指定的文件(不是你指定的文件扩展名的关联程序)[structure nvos_shellexecuteinfo]long cbSizelong fMasklong hwndstring lpVerbstring lpFilestring lpParametersstring lpDirectorylong nShowlong hInstApplong lpIDListstring lpClasslong hkeyClasslong dwHotKeylong hIconlong hProcess[External Function]FUNCTION long ShellExecuteEx(REF nvos_shellexecuteinfo lpExecInfo) LIBRARY \"shell32.dll\" ALIAS FOR ShellExecuteExA[powerscript]function boolean of_execute(readonly string as_file, readonly string as_extension)CONSTANT long SEE_MASK_CLASSNAME = 1CONSTANT long SW_NORMAL = 1string ls_classlong ll_retnvos_shellexecuteinfo lnvos_shellexecuteinfoInet l_InetIF lower(as_extension) = \"htm\" OR lower(as_extension) = \"html\" THEN // Open html file with HyperlinkToURL// So, a new browser is launched// (with the code using ShellExecuteEx, it is not sure)GetContextService(\"Internet\", l_Inet)ll_ret = l_Inet.HyperlinkToURL(as_file)IF ll_ret = 1 THENRETURN trueEND IFRETURN falseEND IF// Search for the classname associated with extensionRegistryGet(\"HKEY_CLASSES_ROOT\\.\" + as_extension, \"\", ls_class)IF isNull(ls_class) OR trim(ls_class) = \"\" THEN// The class is not found, try with .txt (why not ?)RegistryGet(\"HKEY_CLASSES_ROOT\\.txt\", \"\", ls_class)END IFIF isNull(ls_class) OR Trim(ls_class) = \"\" THEN// No class : errorRETURN falseEND IFlnvos_shellexecuteinfo.cbsize = 60lnvos_shellexecuteinfo.fMask = SEE_MASK_CLASSNAME // Use classname lnvos_shellexecuteinfo.hwnd = 0lnvos_shellexecuteinfo.lpVerb = \"open\"lnvos_shellexecuteinfo.lpfile = as_filelnvos_shellexecuteinfo.lpClass = ls_classlnvos_shellexecuteinfo.nShow = SW_NORMALll_ret = ShellExecuteEx(lnvos_shellexecuteinfo)IF ll_ret = 0 THEN// ErrorRETURN falseEND IFRETURN true例如,创建一个C:\\test.txt文件,使用如下的脚本:// Open c:\\test.txt with Word, or Wordpad (or with another .doc file viewer) of_execute(\"c:\\test.txt\", \"doc\")// Open c:\\test.txt with the default browserof_execute(\"c:\\test.txt\", \"htm\")这段代码在你打算以不同的扩展名保存文件(保密)时有用。
利用PB编程轻松排考场
考 室号 。 自动 生成 连 续 编 号 的考 室 。如 果 已经 安 排 ,需 要 重 新 安 排 ,则 可 用 下 面语 句 清 空 :
/ > > 按 钮 的 代码 片断 / > > >
与
…
s r g my q ti s l n it g rms ne e g
图 2的左 边
( )再 选 择 考 室 编 号 , 图 2的 中 间 ,选 择 考 室 号 后 .右 2 边 的 窗 口就 会呈 现 出该 考 室 中 的 已安 排 的学 生 。接 下 来 的 工作
就 是 将 左 边 的学 生 搬 运 到 右边 .有 两 种方 法 。
es le
r l a k ol c ; b
空 的 所 有记 录 ,经 过 这 3个 条 件 的 筛 选 ,得 到 的是 某 班 未 安 排
考 室 的考 生 。右 边 的 窗 口显 示 的 是 某 考 室 中 的学 生 ,这 样 可 以 清 楚 地看 到 该 考 室 中 已安 排 的 考生 及 人 数 。
20 中文版 。 00
2 手动 安 排 考 室
( )先 选 择 年 级 和班 级 调 出所 有 该 班 未 安 排 考 室 的学 生 。 1
1 自动 生成 考 室 数 量
如 图 1 示 .点 击 清 空 考 室按 钮 ,则 删 除 所 有 考 室 号 。代 所
码 如下 :
c om m i t
2 )另 一 种 方 法 选 择 多 个考 生 ( 住 S i 键 再 点 击 可 选 择 按 hf t 连 续 的考 生 ,或 按 住 C d键 选 择 不 连 续 的 多 个 考 生 ) 再 点 t ,
击 > > > 按 钮 ,一 次 安 排 多 个 考 生 。 如 果 在 这 个 步 骤 中 出现 > >>
pb编程
限制程序运行次数//方法1:1>声明Global External Functionsfunction ulong CreateMutexA (ulong lpMutexAttributes, int bInitialOwner, ref string lpName) library "kernel32.dll"function ulong GetLastError () library "kernel32.dll"2>Open事件中:ulong ll_mutex, ll_errstring ls_mutex_nameif handle (GetApplication (), false) <> 0 thenls_mutex_name = this.AppName + char (0)ll_mutex = CreateMutexA (0, 0, ls_mutex_name)ll_err = GetLastError ()if ll_err = 183 thenMessageBox ("提示信息", "程序已经运行了!")Halt closeelseopen(w_test)end ifelseopen(w_test)end if//方法2//使用方法2需要把程序及主窗口的AppName和DisplayName等于下边声明变量ls_name1>FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library "user32"2>ulong l_handle, lu_classstring ls_namels_name = "querymode" // 此处ls_name为系统主窗口的标题Titlel_handle = FindWindow A(lu_class, ls_name)if l_handle > 0 thenMessageBox("提示信息", "应用程序" + This.AppName + "已经运行,不能多次启动!")Halt Closeelseopen(w_test) // 此处为系统主窗口end if来源: /bbs/view30-19695-1.htm我是这样做的:先建一个表,把运行次数放到这个表中,然后当程序每运行一次就更新一次这个表就可以了。
PB编程示例
• 注意:在这一步骤里不要输入数据,而要在后面的数据窗口里,按 预览图标输入数据。 Pic字段的数据类型即所谓Blob类型,其数据类型在不同的 DBMS中有一定的差别:在SQL Anywhere 中是Long binary;在SQL Server中是Image。 2.建立一个新的应用程序。具体操作步骤为:按Application图 标,再按New图标,文件名填test,按保存,Application填test,按 OK,出现一"Would you like……"的对话框,问是否要应用程序模板, 按"是",为简化制作步骤,要模板。 3.建立数据窗口并准备输入数据。步骤为:按DataWindow图标, 在"Select datawindow"对话框中选New,在New Datawindow对话框 中选SQL Slect和Freeform,即SQL 选择的数据源,自由格式的风格。 按OK,在Select talbe对话框中选中aaa表,按Open。点选ID列,使 ID出现在Select list的右边,在窗口下方按Where按钮,按Colume, 并在Cloume的下拉条中选中"aaa"."id",在Valua的一栏中填入 :temp, 注意,这里的temp前面有一冒号 按窗口上方的Desion菜单,选 Retriveal Arguments,在Name一栏填temp,注意,这里的temp前面 没有冒号,type一栏选String(注意),按OK。
鼠标点按window图标新建一窗口在窗口中添加一个datawindow控件在datawindow控件上按鼠标右键选择并单击properties快捷菜单项在在datawindowobjectname旁按browse按钮选择装入前面制作的aaa数dit控件和一commandbutton按钮控件点中按钮控件并按右键选择properties将其显示文本修改为查询按钮名称仍为cb1点中按钮控件并按右键选择si输入以下脚本并按右键选择script
pb dirlist 函数
pb dirlist 函数PB DirList函数详解及应用示例在编程开发中,经常会遇到需要查看某个目录下的文件列表的需求。
为了满足这个需求,PB (PowerBuilder) 提供了一个非常有用的内置函数,即DirList函数。
该函数可以返回指定目录下的文件列表,开发者可以根据自己的需要进行进一步的处理和展示。
本文将一步一步地介绍DirList函数的使用方法以及一些常见的应用示例。
1. DirList函数的基本介绍DirList函数用于返回指定目录下的文件列表。
其语法如下:csharpDirList (string sPathname, string sFileMask, int nAttribute)参数说明:- sPathname:要查询的目录的路径。
- sFileMask:文件名的匹配模式。
可以使用通配符*(表示任意字符)和?(表示一个任意字符)。
- nAttribute:需要过滤的文件属性。
可以使用以下常量之一:FILE_READONLY, FILE_HIDDEN, FILE_SYSTEM, FILE_VOLUME,FILE_DIRECTORY, FILE_ARCHIVE。
2. DirList函数的返回值DirList函数返回一个字符串数组,数组的每个元素是指定目录下满足条件的文件路径。
如果未找到任何文件,则返回一个空的字符串数组。
3. DirList函数的使用示例为了更好地理解DirList函数的使用方法,下面给出一些常见的示例。
3.1 获取指定目录下的所有文件列表下面的代码演示了如何使用DirList函数获取指定目录下的所有文件列表,并将其输出到控制台:csharpstring ls_directory = "C:\myfolder"string ls_files[]ls_files = DirList(ls_directory, "*", FILE_ARCHIVE)if upperbound(ls_files) = -1 thenMessagebox("提示", "该目录下没有文件")elsefor i = 1 to upperbound(ls_files)Messagebox("文件路径", ls_files[i])nextend if3.2 获取指定目录下的某类文件列表下面的代码演示了如何使用DirList函数获取指定目录下的某类文件列表(例如,所有以".txt" 结尾的文件),并将其输出到控制台:csharpstring ls_directory = "C:\myfolder"string ls_files[]ls_files = DirList(ls_directory, "*.txt", FILE_ARCHIVE)if upperbound(ls_files) = -1 thenMessagebox("提示", "该目录下没有符合条件的文件")elsefor i = 1 to upperbound(ls_files)Messagebox("文件路径", ls_files[i])nextend if3.3 获取指定目录下的文件列表(不包括子目录)下面的代码演示了如何使用DirList函数获取指定目录下的文件列表,但是不包括子目录中的文件,并将其输出到控制台:csharpstring ls_directory = "C:\myfolder"string ls_files[]ls_files = DirList(ls_directory, "*", FILE_ARCHIVE)if upperbound(ls_files) = -1 thenMessagebox("提示", "该目录下没有文件")elsefor i = 1 to upperbound(ls_files)判断是否为目录long ll_attributeFileGetInfo(ls_files[i], ll_attribute)if Not IsNull(ll_attribute) and bitand(ll_attribute,FILE_DIRECTORY) = 0 thenMessagebox("文件路径", ls_files[i])end ifnextend if通过以上示例,我们可以看到DirList函数的灵活性和强大功能,您可以根据自己的需求对返回的文件列表进行进一步处理或展示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
4.用数据窗口的预览方式输入数据。具体操作步骤为:按Desion菜 单,选Data Source使Data Source前面不打钩,从insert--control菜单中 选择OLE Database Blob项,然后在设计窗口中适当位置点鼠标左键, 此时出现Database Blob object对话框。逐渐填写对话窗: ClientClass:填入DataWindow,可选。 ClientName:填入当前DataWindow的名字,可选。 Table:选择aaa表。 Large Binary/Text Columns:选择pic字段。
PB中关于动态工资项目问题的解决办法
• 在做人事管理软件时会发现一个问题就是, 工资管理中工资的发放项目经常会发生变 化,而且工资项目之间的计算关系也经常 发生变化,这为实际的编程带来了很大的 麻烦。其实实际工作中还有很多类似的情 况需要解决,希望能为大家提供多一种思 路以供参考。
用PB开发多媒体数据库管理系统
图像、声音、数字视频是多媒体的基本要素,目前多媒体数据库正得到是 益广泛的应用. 怎样用PowerBuilder创建并展示多媒体数据库呢?它可分为两部分:
1. 怎样将图象、声音、动画存入数据库 2. 查询系统的制作. 下面以PowerBuilder6.5和SQL Anywhere为例。让我们快速制作一个简单的查 询系统。制作婚姻介绍系统,查询到符合条件的人后,显示该人的人事档案 卡上有个人的照片,要求双击个人照片,能调用Acdsee展示该照片(顾客能 任意放大、缩小欣赏照片);或者双击该个人档案某处放映一段该个人档案 的个人生活录相,个人喜欢的音乐等.
• 注意:在这一步骤里不要输入数据,而要在后面的数据窗口里,按 预览图标输入数据。 Pic字段的数据类型即所谓Blob类型,其数据类型在不同的 DBMS中有一定的差别:在SQL Anywhere 中是Long binary;在SQL Server中是Image。 2.建立一个新的应用程序。具体操作步骤为:按Application图 标,再按New图标,文件名填test,按保存,Application填test,按 OK,出现一"Would you like……"的对话框,问是否要应用程序模板, 按"是",为简化制作步骤,要模板。 3.建立数据窗口并准备输入数据。步骤为:按DataWindow图标, 在"Select datawindow"对话框中选New,在New Datawindow对话框 中选SQL Slect和Freeform,即SQL 选择的数据源,自由格式的风格。 按OK,在Select talbe对话框中选中aaa表,按Open。点选ID列,使 ID出现在Select list的右边,在窗口下方按Where按钮,按Colume, 并在Cloume的下拉条中选中"aaa"."id",在Valua的一栏中填入 :temp, 注意,这里的temp前面有一冒号 按窗口上方的Desion菜单,选 Retriveal Arguments,在Name一栏填temp,注意,这里的temp前面 没有冒号,type一栏选String(注意),按OK。
KeyClause:选id=:id,用于构造where子句,即where id=:id,用于 定位相位记录。
File template:浏览选择并填入一个bmp文件,可不填。 OLE Class:通过下拉菜单选择Pbrush画笔程序。 Client Name Expression:填入某一字符串表达式,当OLEServer运 行时,显示在其标题处,如填写入id+".bmp",按OK键。
• 单击Positions标签,选中"Resizable",单击General标签,在Border 列表框中选择"Resize"如此选择这两个属性后,程序运行时,用 户能够通过拖拽改变图片的大小,单击OK关闭对话框。 此时,PB关闭该对话窗,并回到DataWindow的设计窗口, OLE字段以一小方框的形式显示出来。
同理:若想将动画存入数据库则另加一字段,将音乐存入 数据库则另加一字段。
• 二. 查询系统的制作
1. 制作从键盘输入记录号,可查询到该人的档案记录。
①制作查询窗口。步骤为:鼠标点按Window图标,新建一窗 口,在窗口中,添加一个DataWindow控件,在DataWindow控件上 按鼠标右键,选择并单击Properties快捷菜单项,在在Datawindow object name旁按Browse按钮,选择装入前面制作的aaa数据窗口, 调整好窗口的大小,再在窗口上放一SingleLineEdit控件,和一 CommandButton按钮控件,点中按钮控件并按右键选择Properties , 将其显示文本修改为"查询",按钮名称仍为cb_1,点中按钮控件 并按右键选择Script…,输入以下脚本 dw_1.settransobject(sqlca) dw_1.retrieve(sle_1.text)
单击Preview预览图标,在跳出的对话框中给temp的值填1, 点Insert Row 图标,在表中添加一行,填入id后,双击方框,打 开画图程序,这时可以通过绘制,复制等手段制作图片,制作 好后,单击文件菜单中的"退出并返回到…"关闭画图程序,再次 单击预鉴图标,系统提示"save……",将数据窗口取名为aaa,选 择"是"将结果保存到表中。
• 一.怎样将图象、声音、动画存入数据库
首先要有一个包含Blob数据类型的表,,然后 利用Bb数据窗口的"OLE database Blob"(OLE数据库二 进制大对象),可以轻易地把图片等多媒体数据存入 数据库或展示在屏幕上。 步骤如下: 1.建立一个表aaa,内含两个字段,记录号和相 片,一个字段取名为ID,另一个字段名为Pic,类型 分别为char和Long binary,ID为主ID字段取type 为char,不许为空,即Null为No,Pic字段type为 Long binary,可为空,即Null为Yes(重要)。
PowerBuilder 7.0中实现电子邮件的收发
关闭并保存,按Save图标保存该窗口,窗口取名为w_pic,
树形目录在PB中的实现与应用
• 本文结合具体的实际应用,介绍PB中实现树形目录的实现机制,并给出了具 体的实现过程. 1.引言 在管理信息系统的开发中,经常需要获取本地计算机中的树形目录结构和 相应的文件信息,如进行目录的选择和特殊文件的选取,在PowerBuilder(简称 PB)中并没有提供专门的树形目录对象,这样就需要程序开发人员自己来实现 相应的树形目录。本文针对这种情况,提供了一种用纯PB代码实现树形结构的 方法。 2.PB中树形目录的实现方法 PB中的ListBox列表框控件提供了显示目录和文件的能力。在程序中可以利用 PB的树形控件TreeView动态生成树形目录结构。我们使用ListBox控件的函数 DirList来实现,函数DirList以满足条件的文件名填充列表框的列表项,其使 用方法如下: