PB源码大全
餐饮管理程序(PB源代码)

餐饮管理程序(PB源代码)
drui12009-03-14上传
餐饮管理程序
1、在后台管理中增加了前台销售一览表。
2、完成了日志察看中的查找功能。
3、日志过滤(缺省为本日日志)
4、在后改管理的销售项目一览表中增加了排行TOP10
5、增加了版本校验机制
6、增加了错误陷阱
7、增加了程序中颜色自定义
8、修改了挂帐单位可挂帐额度的计算错误
9、修改了XP窗体的拖动
10、限制了程序只能运行1次
11、增加了运行库文件察看。
12、增加了操作日志中的系统提示
百度贴吧pb_v2源码.js

300)
};
Post.removeQuote = function() {
var A = document.getElementById("quote_wrapper");
A.innerHTML = "";
A.style.display = "none";
document.getElementById("quote_id").value = 0
return false
}
if (!Post.Validator._validRichEditorContent()) {
return false
}
if (!Post.Validator._validCaptcha()) {
return false
}
return true
}
try {
if (A()) {
Post.isPosting = true;
Fe.G("add_post_submit").disabled = true;
Post.checkPostStatus();
var B = Post._getData();
};
Post.postDelete = function(tid, pid) {
var params = {
kw: PageData.forum_name,
fid: PageData.forum_id,
tid: tid,
pid: pid
};
this.post("postDelete", params,
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编程实例

(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错误代码详解

pb错误代码详解pb错误代码详解2010-07-20 11:02string ls_msg choose caseerror.number case 1//by zero ls_msg="发生被0除错误"case 2//2 Null object reference ls_msg="空对象引用"case 3//3 Array boundary exceeded ls_msg="数组越界"case 4//4 Enumerated value is out of range for function ls_msg="枚举值超出函数的范围"case 5//5 Negative value encountered in function ls_msg="函数中遇到负数"case 6//6 Invalid DataWindow row/column specified ls_msg="数据窗口的列或行非法"case 7//7 Unresolvable external when linking reference ls_msg="链接调用时不能解决外部对象"case 8//8 Reference of array with null subscript ls_msg="使用空下标引用数组"case 9//9 DLL function not found in current application ls_msg="当前应用中没有找到动态链接库的函数"case 10//10 Unsupported argument type in DLL function ls_msg="使用了动态链接库函数不支持的参数类型"case 11//11 Object file is out of date and must be converted to current version ls_msg="对象文件已经过时并且必须使用当前的版本"case 12//12 DataWindow column type does not match GetItem typels_msg="数据窗口的列的数据类型与GetItem函数的类型不符"case 13//13 Unresolved property reference ls_msg="属性引用尚未解决"case 14//14 Error opening DLL library for external functionls_msg="为外部函数调用而打开动态链接库时发生错误"case 15//15 Error calling external function name ls_msg="调用外部函数时发生错误"case 16//16 Maximum string size exceeded ls_msg="字符串长度超越了最大限制"case 17//17 DataWindow referenced in DataWindow object does not exist ls_msg="数据窗口引用的数据窗口对象不存在"case 18//18 Function doesn't return value ls_msg="函数没有返回值(应该有而没有)"case 19//19 Cannot convert name in Any variable to name ls_msg="不能转换Any类型的变量到另一个类型"case 20//20 Database command has not been successfully prepared ls_msg="数据库命令没有成功准备"case 21//21 Bad runtime function reference ls_msg="引用了错误的运行时函数"case 22//22 Unknown object type ls_msg="不知道的对象类型"case 23//23 Cannot assign object of type name to variable of type name ls_msg="不能将对象赋给变量,两种类型不能赋值"case 24//24 Function call doesn't match its definition ls_msg="函数调用格式与其定义不一致"case 25//25 Double or Real expression has overflowed ls_msg="双精度型或实型表达式溢出"case 26//26 Field name assignment not suppo rted ls_msg="不支持这种字段赋值"case 27//27 Cannot take anegative to anoninteger power ls_msg="不能计算一个负数的非整数次方"case 28//28 VBX Error:name ls_msg="VBX错误"case 29//29 Nonarray expected in ANY variable ls_msg="ANY类型变量期待非数组类型"case 30//30 External object does not support data type namels_msg="外部对象不支持这种变量类型"case 31//31 External object data type name not supported ls_msg="外部对象的数据类型不支持"case 32//32 Name not found calling external object function name ls_msg="调用外部对象函数时函数名称没有找到"case 33//33 Invalid parameter type calling external object function name ls_msg="调用外部对象函数时使用了错误的参数类型"case 34//34 Incorrect number of parameters calling external object function name ls_msg="调用外部对象函数时使用的参数个数不对"case 35//35 Error calling external object function name ls_msg="调用外部对象的函数错误"case 36//36 Name not found accessing external object property name ls_msg="访问外部对象属性时属性名称没有找到"case 37//37 Type mismatch accessing external object property name ls_msg="访问外部对象属性时使用了不匹配的类型"case 38//38 Incorrect numb er of subscripts accessing external object property name ls_msg="访问外部对象属性时使用了错误的下标"case 39//39 Error accessing external object property namels_msg="访问外部对象的属性错误"case 40//40 Mismatched ANY data types in expression ls_msg="表达式中ANY数据类型不匹配"case 41//41 Illegal ANY data type in expression ls_msg="表达式中使用了非法的ANY数据类型"case 42//42 Specified argument type differs from required argument type at runtime in DLL function name ls_msg="指定的参数类型与动态链接库中的函数所需要的参数类型不一致"case 43//43 Parent object doesn't exist ls_msg="父对象不存在"case 44//44 Function has conflicting argument or return type in ancestor ls_msg="函数与祖先的参数或返回值冲突"case 45//45 Internal table overflow;maximum number of objects exceeded ls_msg="内部表溢出;对象的最大数目已经超越"case 46//46 Null object reference cannot be assigned or passed to avariable of this type ls_msg="空对象引用不能赋值或传递给一个这种类型的变量"case 47//47 Array expected in ANY variable ls_msg="ANY类型期待数组"case 48//48 Size mismatch in array to object conversion ls_msg="将数组转换成对象时数组的大小不匹配"case 49//49 Type mismatch in array to object conversion ls_msg="将数组转换成对象不匹配"case 50//50 Distributed Service Error ls_msg="分布式服务错误"case 51//51 Bad argument list for function/event ls_msg="函数/事件的参数列表错误"。
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函数大全及详解

一、数组函数1、LowerBound()功能:得到指定数组第n维的下界。
语法:LowerBound ( array {, n } )参数:array:数组名。
n:数值类型,可选项,指定要得到数组哪一维的下界。
缺省值为1。
返回值:Long。
函数执行成功时返回array数组第n维的下界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,LowerBound()函数返回NULL。
示例:integer a[5], b[2,5]LowerBound(a) // Returns 1LowerBound(a, 1) // Returns 1LowerBound(a, 2) // Returns -1, a has only 1 dim LowerBound(b, 2) // Returns 1integer c[ ]LowerBound(c) // Returns 1c[50] = 900LowerBound(c) // Returns 1integer d[-10 to 50]LowerBound(d) // Returns - 102、UpperBound()功能:得到指定数组第n维的上界。
语法:UpperBound( array {, n } )参数:array:数组名。
n:数值类型,可选项,指定要得到数组哪一维的上界。
缺省值为1。
返回值:Long。
函数执行成功时返回array数组第n维的上界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,UpperBound()函数返回NULL。
示例:integer a[5], b[2,5]LowerBound(a) // Returns 1LowerBound(a, 1) // Returns 1LowerBound(a, 2) // Returns -1, a has only 1 dim LowerBound(b, 2) // Returns 1integer c[ ]LowerBound(c) // Returns 1c[50] = 900LowerBound(c) // Returns 1integer d[-10 to 50]LowerBound(d) // Returns - 10二、Blob(大二进制对象)函数Blob函数得到Blob数据类型的信息、完成数据类型转换以及操作Blob类型数据。
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.在数据输入时,若未保存,而直接退出窗口时,应给出保存数据的提示,实现时应为窗口的CloseQuery事件中加入如下代码:int rc1,rc2dw_1.accepttext()if dw_1.modifiedcount() + dw_1.deletedcount() > 0 thenrc1 = messageBox(…警告:‟,…是否需要保存所做的修改?‟,question!,yesno!,1)if rc1 = 1 thenif dw.1update() > 0 thencommit;message(…‟…提示:‟,…数据保存成功!‟)elserollback;rc2 = messagebox(…‟,…是否回到编辑状态?‟,question!,yesno!,1)if rc2 = 1 thenreturnelsereturn 0end ifend if说明:①. return 0:表示窗口能够关闭1:表示窗口不能够关闭②. dw_1.update() 1:表示成功-1:表示出错③. sqlca.sqlcode 0:表示成功-1:表示出错100:没有找到相关的信息2.数据窗口的插入:long u_rowu_row = dw_1.insertrow(0)dw_1.scrolltorow(u_row)dw_1.setcolumn(1)dw_1.setfocus()3.数据记录的删除①. 删除当前记录dw_1.deleterow(0)if dw_1.update() > 0 thencommit;elserollback;end if②. 删除表中的指定记录如: delete form yggzzzb where ygdh =: ls_string;if sqlca.sqlcode = 0 thencommit;elserollback;end if4.数据记录的更新,保存—在相应按扭的clicked事件中加入:①. int nconnect;dw_1.setTransobject(SQLCA)dw_2.setTransobject(SQLCA)n = dw_1.update(True,False)if n=1 thenn=dw_2.update(True,False)end ifif n=1 thendw_1.resetupdate()dw_2.resetupdate()commit;dw_1.reset()dw_2.reset()end if②. dw_1.accepttext()if dw_1.update() > 0 thencommit;elserollback;end if5.记录指的移动a.移动到第一条记录dw_1.selectrow(dw_1.getrow(),false)dw_1.scrolltorow(0)dw_1.selectrow(1,True)dw_1.setfocus()b.移动到上一条记录if dw_1.getrow()>1 thendw_1.selectrow(dw_1.getrow(),false)dw_1.scrollpriorrow()dw_1.selectrow(dw_1.getrow(),True)dw_1.setfocus()elsemessageBox(‘’,‘已经达到数据库的顶部!’)end ifc.移动到下一条记录integer endofdwendofdw = dw_1.Rowcount()if dw_1.getrow() < endofrow thendw_1.selectrow(dw_1.getrow(),false)dw_1.scrollnextrow()dw_1.solectRow(dw_1.getrow(),true)elsemessageBox(‘’,‘已经达到数据库的底部!’)end ifd.移动到最后一条记录dw_1.selectrow(dw_1.getrow(),false)dw_1.scrolltorow(dw_1.rowcount())dw_1.selectrow(dw_getrow(),true)dw_1.setfocus()6.数据窗口中回车事件的响应①. 先为该数据窗口控件定义一个用户事件:ENTER pbm_dwnprocessenter②. 在该ENTER事件中加入如下代码:send(handle(this),256,long(9,0))return 17.设置数据窗口的查询模式实现:在某一指定按扭的Clicked事件中加入:①.if “yes” = dw_1.describe(“datawindow.Querymode”) thendw_1. modify (“datawindow.Querymode=no”)this.text = “Query off”dw_1.retrieve()elsedw_1.modify(“Datawindow.Querymode =yes”)this.text=“Query on”end if在Querymode模式下,将汉字作为查询条件时,应在汉字前加上等于号,而不必加上引号③. dw_1.setRedrow(false)if cb_1.text=“Execute” thendw_1.modify(“datawindow.querymode=no”)dw_1.Retrieve()st_1.text=…‟cb_1.text=…setQuery‟elsedw_1.modify(“datawindow.querymode=yes”)dw_1.setfocus()cb_1.text=“Execute”st_1.text=“请先输入查询条件,再单击Execute按扭”end ifdw_1.setredrow(true)8.在具有Querymode状态中的单击排序的实现:①.定义窗口的实例变量dwobject idwo_laststring is_last_nameint ii_dwo_colorBoolean ib_ascending②.在窗口的open事件中加入setnull(idwo_last)③.在数据clicked事件中加入if dw_1.describe(“datawindow.Querymode”)=“no” thenint i_rcstring s_nameBoolean b_ascending = TrueIf row = 0 thenIf dwo.type=“text”thenS_name =S_name =left(s_name,len(s_name)-2)If not Isnull(idwo_last) thenIdwo_last.color = ii_dwo_colorIf s_name = is_last_name then b_ascending = not ib_ascendingEnd ifDwo.color = RGB(255,0,0)If b_ascending thenThis.setsort(s_name + “ A”)ElseThis.setsort(s_name + “ D”)End ifI_rc = this.sort()If I_rc<>1 then messageBox(…Error‟, …sort() error‟)Idwo_last = dwoIs_last_name = s_nameIb_ascending = b_ascedingEnd ifEnd ifEnd if注:若用于不具备Querymode状态的数据,此时的绿色语句应省略。
PB程序源码文件结构pbl文件pbd文件

PB程序源码文件结构 pbl文件 pbd文件
最近公司给了一套PB的源码,一个8.0,一个9.0,让给一个客户做软件整合,之前只听过PB看过别人写代码,为了快速上手,了解了一下PB的文件, 记录如下: pbl为pb源码文件 pbd为程序编译后的文件 编译时loy编译输出程序 Executable File Name:输入输出路径(与dll放置在一起) 在正下方选择想要编译为PBD的Library
暂且记录到这,以后有想到的再添加.
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学生管理系统源代码

PowerBuilder的创始人米歇尔克茨曼。
PowerBuilder奠基人大卫李特瓦克。
1991年6月。
Powersoft公司发布了其旗标式客户/服务器硬功开发工具。
1995年PowerBuilder1.01996年PowerBuilder5.02003年PowerBuilder9.0PowerBuilder特点:面向对象的编程和时间去懂的应用开发程序开发工具,支持跨平台开发可以轻松编写语句人性化设计。
拥有独特的库文件画板和层次清晰的系统资源库。
提供了丰富多样不同风格的数据窗口PowerBuilder9.0新特性。
支持快速开发的jsp编辑器。
支持xml、PBNI(PowerBuilder Native Interface)、EJB Client、PB9.0与Web Service 的关系,PB9.0与.NET、其他增强功能。
建立应用对象建立Student的工作区和目标,然后建立一个名为student的对象在其Open事件中加入如下脚本:登录窗口在用户名的单行编辑框的ue_enterkey事件中加入如下脚本:菜单设计在学生管理菜单项的Clicked事件中加入如下脚本:MDI主窗口在主窗口的Open事件中加入如下脚本:学生管理窗口在学生管理窗口的Open事件中加入如下脚本:在查询按钮的Clicked事件中加入如下脚本:在学上管理窗口的ue_preview事件中加入如下脚本:在学生管理窗口的ue_sortasc事件中加入如下脚本:在数据窗口控件dw_stu的Clicked事件中加入如下脚本:成绩录入窗口在查询按钮的Clicked事件中加入如下脚本:入学生学号时,自动从学生基本情况表中找到该学生的姓名,并填入姓名列表中。
页面设置窗口在页面设置窗口的Open事件中加入如下脚本:打印预览窗口在打印预览窗口的Open事件中加入如下脚本:打印设置窗口在打印设置窗口的Open事件中加入如下脚本:在当前页单选按钮(rb_current_page)的Clicked事件中加入如下脚本:在取消按钮中加入如下脚本:查询窗口在查询窗口中声明如下的实例变量:在查询按钮的Clicked事件中加入如下脚本:在取消按钮中加入如下脚本:查选窗口在查询窗口中声明如下的实例变量:专业选择窗口在窗口的Open事件中加入如下脚本:String zyddlb_1.AddItem("全部")//声明游标DECLARE mycursor CURSOR FORSELECT DISTINCT zy //读出各个专业名FROM "xs"OPEN mycursor;If SQLCA.SQLCode<0 ThenMessageBox("数据库错","游标无法打开")ReturnEnd IfFETCH mycursor INTO :zy;//如果执行成功则SQLCode的值为0DO WHILE SQLCA.SQLCode=0ddlb_1.AddItem(zy)FETCH mycursor INTO :zy;LOOPCLOSE mycursor;//初始化下拉列表的选择ddlb_1.SelectItem(1)在确定按钮的Clicked事件中加入如下脚本:s_statictics work//得到菜单传递过来的统计类型-Message.StringParmwork.zy=ddlb_1.text//打开统计窗口,并把结构体作为参数传递给统计窗口OpenSheetWithParm(w_statictics,work,w_main,4)Close(Parent)统计窗口在统计窗口的Open事件中加入如下脚本:String sqlsoures_statictics work//得到专业选择窗口或专业课程选择窗口传递过来的参数work=Message.PowerObjectParm//根据不同的统计是统计窗口中数据窗口控件和不同的用于统计的数据窗口睇相关联Choose Case Case "person"dw_st.DataObjcet="d_personst"Case "lesson"dw_st.DataObject="d_lessonst"End Choosedw_st.SetTransObject(SQLCA)//得到数据窗口的创建语句sqlsource=dw_st.GetSQLSelect()//如果选择了专业,则修改数据窗口的创建语句,加上专业的条件限制If work.zy<>"全部" Thensqlsource=sqlsoucre+"and(xs.zy='"+work.zy+"')"End If//如果选择了课程,则修改数据窗口的创建语句,加上课程的条件限制If work.km<>"" And work.km<>"全部" Thensqlsource=sqlsource+"and(kc.km='"+work.km+"')"End If//设置数据窗口的创建语句dw_st.SetSqlSelect(sqlsource)dw_st.Retrleve()成绩分布窗口在窗口的Open事件中加入如下脚本:Integer thecount[5].seriesnoInteger iString thesql[5],kh//work是由上一个窗口传递过来的自定义结构型参数//work.zy表示当前选择的专业,work.km表示当前选择的课程名称work=Message.PowerObjectParm//添加一个系列seriesno=gr_1.AddSeries("成绩分布")//根据不同的分数段拼写不同的语句查询该份数段的认输thesql[1]="SELECT COUNT(*) FROM xk,xs WHERE xk_xh=xs_xh and xk.cj>=90" thesql[2]="SELECT COUNT(*) FROM xk,xs WHERE xk_xh=xs_xh and xk.cj>=80 and xk.cj<90"thesql[3]="SELECT COUNT(*) FROM xk,xs WHERE xk_xh=xs_xh and xk.cj>=70 and xk.cj<80"thesql[4]="SELECT COUNT(*) FROM xk,xs WHERE xk_xh=xs_xh and xk.cj>=60 and xk.cj<70"thesql[5]="SELECT COUNT(*) FROM xk,xs WHERE xk_xh=xs_xh and xk.cj<60"//如果选择了专业,则在查询语句中加入专业限制If work.zy<>"全部" ThenFor i=1 To 5thesql[i]=thesql[i]+"and xs.zy='"+work.zy+"'"NextEnd If//如果选择了课程,则在查询语句中加入课程限制If work.km<>"全部" Then//找出选择课程的课程编号SELECT khINTO :khFROM "kc"WHERE "kc"."km"=:work.km;For i=1 To 5thesql[i]=thesql[i]+"And xk.kn='"+kh+"'"NextEnd IfFor i=1 To 5//定义动态SQL来执行不同的SQL语句DECLARE mycursor DYNAMIC CURSOR FOR SQLSA;PREPARE SQLSA FROM :thesql[i]OPEN mycursor;If SQLCA.SQLCode<0 ThenMessageBox("数据库错","游标无法打开")ReturnEnd IfFetch myscurso INTO :thecount[i];CLOSE mycursor;Next//添加数据种类gr_1.AddCategory("90分以上")gr_1.AddCategory("80至90分")gr_1.AddCategory("70至80分")gr_1.AddCategory("60至70分")gr_1.AddCategory("不及格")//添加每个数据种类的数据值gr_1.AddData(seriesno,thecount[1],"90分以上") gr_1.AddData(seriesno,thecount[2],"80至90分") gr_1.AddData(seriesno,thecount[3],"70至80分") gr_1.AddData(seriesno,thecount[4],"60至70分") gr_1.AddData(seriesno,thecount[5],"不及格")制作可执行文件。
pb url decode encode 代码

pb url decode encode 代码在Python中,URL编码和解码是常见的任务。
Python提供了内置的urllib.parse模块来处理URL的编码和解码。
以下是一个示例代码,演示了如何使用urllib.parse模块进行URL编码和解码:pythonimport urllib.parse# URL编码def url_encode(params):return urllib.parse.urlencode(params)# URL解码def url_decode(query):return urllib.parse.parse_qs(query)# 示例encoded_params = url_encode({'key1': 'value1', 'key2': 'value2'})print(f"Encoded parameters: {encoded_params}")decoded_params = url_decode(encoded_params)print(f"Decoded parameters: {decoded_params}")上面的代码包含两个函数,url_encode和url_decode,分别用于URL编码和解码。
url_encode函数接受一个字典作为参数,并返回URL编码后的查询字符串。
url_decode函数接受一个查询字符串作为参数,并返回一个字典,其中键和值都是字符串列表。
但是,上述的url_decode函数返回的是字典,其值是列表形式。
如果你想得到单个字符串值,你可以稍微修改一下函数,如下:python# URL解码 (返回单个字符串值)def url_decode_single_value(query):decoded_params = urllib.parse.parse_qs(query)return {k: v[0] for k, v in decoded_params.items()}# 示例encoded_params = url_encode({'key1': 'value1', 'key2': 'value2'})print(f"Encoded parameters: {encoded_params}")decoded_params = url_decode_single_value(encoded_params)print(f"Decoded parameters: {decoded_params}")在这个修改后的url_decode_single_value函数中,我使用字典推导式从解码后的参数中提取每个键的第一个值,因为通常我们只关心每个键的单个值。
PB代码

01 通信录管理系统录入界面设计【窗口代码】dw_1.setTransObject(sqlca)dw_1.retrieve()【按钮代码】l “添加”按钮代码dw_1.reset()dw_1.insertRow(0)l “删除”按钮代码dw_1.deleteRow(0)l “保存”按钮代码if dw_1.update()=1 thencommit;elserollback;end ifl “刷新”按钮代码dw_1.retrieve()l “返回”按钮代码close(parent)【应用代码】SQLCA.DBMS = "ODBC"SQLCA.DBParm = "Connectstring='DSN=addressbook;UID=dba;PWD=sql'" Connect;open(w_input)02 通信录管理系统字段格式修改菜单设计【导航按钮代码】“第一位”按钮中的代码:dw_1.scrollToRow(1)“前一位”按钮中的代码:dw_1.scrollPriorRow()“后一位”按钮中的代码:dw_1.scrollNextRow()“最后位”按钮中的代码:dw_1.scrollToRow(dw_1.rowCount()) 【当前的记录和总记录代码】“第X位(共X位)”"第"+getRow()+"位(共"+rowCount()+" 位)"03 通信录管理系统查询设计(一)【Filter函数“精确查询”按钮代码】Dw_1.setFilter("编号='"+sle_1.text+"'")Dw_1.filter()【Filter函数“模糊查询”按钮代码】Dw_1.setFilter("编号like '%"+sle_1.text+"%'")Dw_1.filter()【Retrieve函数窗口代码】Dw_1.setTransObject(sqlca)【Retrieve函数“精确查询”按钮代码】Dw_1.retrieve(sle_1.text)【Retrieve函数“模糊查询”按钮代码】Dw_1.retrieve("%"+sle_1.text+"%")【Retrieve函数“生日精确查询”按钮代码】Dw_1.retrieve(date(sle_1.text))【Retrieve函数“编号范围查询”按钮代码】Dw_1.retrieve(sle_1.text,sle_2.text)04 通信录管理系统查询设计(二)【Retrieve函数“生日范围查询”按钮代码】Dw_1.retrieve(date(sle_1.text),date(sle_2.text))【函数keydown(KeyEnter!)应用代码】if keydown(KeyEnter!) thencb_1.TriggerEvent(clicked!)End if【函数messageBox()应用代码】if sle_1.text="" thenmessageBox("信息提示","请输入要查询的内容!!!")returnelseif dw_1.retrieve(sle_1.text)=0 thenmessageBox("信息提示","没有查到内容!")end ifend if05 通信录管理系统查询设计(三)【Filter函数“编号范围查询”按钮代码】Dw_1.setFilter("编号>='"+sle_1.text+"' and 编号<='"+sle_2.text+"'") Dw_1.filter()【Filter函数“编号范围查询”窗口代码】Dw_1.setTransObject(sqlca)Dw_1.retrieve()【“工资税计算”按钮中的代码】if real(sle_1.text)>1600 thensle_2.text=string((real(sle_1.text) - 1600)*0.2) elsesle_2.text="0"end if【“成绩分类”按钮中的代码】Integer ss=integer(sle_1.text)IF s>100 or s<0 thenmessageBox("信息提示","成绩错误!!")Elseif s>=90 thensle_2.text="优秀"Elseif s>=80 thensle_2.text="良好"Elseif s>=70 thensle_2.text="中等"Elseif s>=60 thensle_2.text="及格"elsesle_2.text="不及格"End if【任意字段查询窗口代码】Dw_1.setTransObject(sqlca)lb_1.selectItem("编号",0)【任意字段查询窗口代码“查询”按钮代码】string s_old,s_new,s_wheres_old=dw_1.GetSQLSelect()If ddlb_1.text="like" thens_where=" WHERE "+lb_1.SelectedItem()+' '+ddlb_1.text+"+&'%"+sle_1.text+"%'; "Elses_where=" WHERE "+lb_1.SelectedItem()+' '+ddlb_1.text+" '"+sle_1.text+"'; " End ifs_new=s_old+s_whereif dw_1.SetSqlSelect(s_new)=-1 thenbeep(3)messageBox("信息提示","条件窗口条件设置有误,请仔细检查!",StopSign!) elsedw_1.setTransObject(sqlca)dw_1.retrieve()dw_1.SetSqlSelect(s_old)end if【多关系组合查询“增加条件”按钮代码】(2)“增加条件”按钮代码if sle_1.text="" thenmessageBox("信息提示","没有查询条件的值,请仔细检查!")return;end ifif trim(mle_1.text)<> "" thenif ddlb_1.text="like" thenmle_1.text= mle_1.text+" and "+lb_1.SelectedItem()+' '+ddlb_1.text+" '%"+& sle_1.text+"%' "elsemle_1.text= mle_1.text+" and "+lb_1.SelectedItem()+' '+ddlb_1.text+" '"+& sle_1.text+"' "end ifelseif ddlb_1.text="like" thenmle_1.text= mle_1.text+' '+lb_1.SelectedItem()+' '+ddlb_1.text+" '%"+&sle_1.text+"%' "elsemle_1.text= mle_1.text+' '+lb_1.SelectedItem()+' '+ddlb_1.text+"+&'"+sle_1.text+"' "end ifend ifsle_1.text=""【多关系组合查询“查询”按钮代码】string s_old,s_newif trim(mle_1.text)= '' thenmessageBox("信息提示","缺少查询条件!")returnend ifs_old=dw_1.GetSQLSelect()s_new=mle_1.texts_new=s_old+" where "+s_new+";"if dw_1.SetSqlSelect(s_new)=-1 thenbeep(3)messageBox("信息提示","条件窗口条件设置有误,请仔细检查!",StopSign!) elsedw_1.setTransObject(sqlca)dw_1.retrieve()dw_1.SetSqlSelect(s_old)end if【多关系组合查询“清空”按钮代码】mle_1.text=""06-通信录管理系统报表设计(一)【窗口代码】dw_1.setTransObject(sqlca)dw_1.retrieve()【“另存为.txt文件...”按钮代码】dw_1.saveas("",text!,false)【“从.txt文件中读数据...”按钮代码】int valuestring docname,namedvalue = GetFileOpenName("请选中一个文件名:", docname, named, "Doc", & + "Text Files (*.TXT),*.TXT") //读数据文件if value=1 thendelete from addressbook; //清空addressbook表中的数据dw_1.ImportFile(docname) //导入文件数据elsereturnend ifif dw_1.update()=1 then //将文件数据传入数据表中commit;elserollback;end if【“页码”代码】"第" + page() + " 页(共" + pageCount()+" 页)"【“退出”按钮代码】Close(parent)【“打印机设置”按钮代码】printSetup()【“打印预览”按钮代码】if cb_2.text="打印预览" thendw_1.Object.datawindow.print.preview='Yes'cb_2.text="关闭预览"elsedw_1.Object.datawindow.print.preview='No'cb_2.text="打印预览"end if【“打印”按钮代码】dw_1.print()07-通信录管理系统报表设计(二)【单选按钮集成报表窗口代码】dw_1.setTransObject(sqlca)dw_1.retrieve()【单选按钮集成报表窗口中按钮代码】“打印机设置”按钮中的代码为:printSetup()“打印预览”按钮中的代码为:if cb_2.text="打印预览" thendw_1.Object.datawindow.print.preview='Yes'cb_2.text="关闭预览"elsedw_1.Object.datawindow.print.preview='No'cb_2.text="打印预览"end if“打印”按钮中的代码为:dw_1.print()“退出”按钮中的代码为:close(parent)【“RadioButton”控件中代码】dw_1.DataObject="d_report_crosstab" //数据窗口对象要修改dw_1.setTransObject(sqlca)dw_1.retrieve()【选项卡集成报表窗口代码】tab_1.tabPage_1.dw_1.setTransobject(sqlca)tab_1.tabPage_2.dw_2.setTransobject(sqlca)tab_1.tabPage_3.dw_3.setTransobject(sqlca)tab_1.tabPage_4.dw_4.setTransobject(sqlca)tab_1.tabPage_5.dw_5.setTransobject(sqlca)tab_1.tabPage_6.dw_6.setTransobject(sqlca)tab_1.tabPage_7.dw_7.setTransobject(sqlca)tab_1.tabPage_1.dw_1.retrieve()tab_1.tabPage_2.dw_2.retrieve()tab_1.tabPage_3.dw_3.retrieve()tab_1.tabPage_4.dw_4.retrieve()tab_1.tabPage_5.dw_5.retrieve()tab_1.tabPage_6.dw_6.retrieve()tab_1.tabPage_7.dw_7.retrieve()【选项卡集成报表窗口按钮代码】所有标签页共用“打印机设置”按钮中的代码为:printSetup()“退出”按钮中的代码为:close(parent)各个标签页“TabPage_1-7”专用的注意按钮名称和数据窗口名称的修改“打印预览”按钮中的代码为:if cb_2.text="打印预览" thendw_1.Object.datawindow.print.preview='Yes'cb_2.text="关闭预览"elsedw_1.Object.datawindow.print.preview='No'cb_2.text="打印预览"end if“打印”按钮中的代码为:dw_1.print()08 工具栏、主界面修饰;系统登录界面、可执行文件生成【主界面图片定时改变代码】双击主界面窗口空白处,在“open”事件中输入下面代码:randomize(0) //初始化随机序列函数p_p="f"+string(rand(20))+ ".jpg" //rand(n)获取1和n之间的一个随机整数p_1.pictureName=p_ptimer(3) //以指定的时间间隔(3秒钟)重复触发定时器事件中的代码单击“open() returns long [pbm_open]”下拉列表框,选择“timer() returns long [pbm_timer]”,并在下面空白处输入下面代码:p_p="f"+string(rand(20))+ ".jpg"p_1.pictureName=p_p【简单系统登录界面代码】如果用户名为“SIFT”,密码为“A123”,则只要在pb_1按钮的“Clicked”事件中编写如下代码即可。
PB常用代码

pb 常用的一些代码窗口的open 事件或者【浏览】和【查询】按钮的click 事件dw_1.settransobject(sqlca)//指定事务对象dw_1.retrieve()//检索数据【添加】按钮的click 事件dw_1.insertrow(0)dw_1.setfocus()dw_1.scrolltorow(dw_1.rowcount())if dw_1.updata()=1 thenmessagebox("提示","保存成功!")cb_1.enabled=truecb_3.enabled=falseeslemessagebox("提示","保存失败,请核实!")end ifdw_1.setcolumn(1)//将第一列设置为当前列cb_1.enabled=falsecb_3.enabled=true//cb_3 为保存控件【保存】按钮的click 事件if dw_1.update()=1 thenmessagebox("提示","保存成功!")cb_1.enabled=truecb_3.enabled=falseelsemessagebox("提示","保存失败,请核实!")end if【删除】按钮的click 事件if dw_1.deleterow(0) then//其中0 表示删除当前行if dw_1.update()=1 thenmessagebox("提示","删除成功!")elsemessagebox("提示","删除失败!")end ifelsemessagebox("提示","删除失败")end if【退出】按钮click 事件close(parent)【上一条】按钮的click 事件dw_1.scrollpriorrow()dw_1.selectrow(0,false)//0 表示选取或者取消所有行,dw_1.selectrow(1,true)//第一行高亮显示dw_1.selectrow(dw_1.getrow(),true)【下一条】按钮的click 事件dw_1.scrollnextrow()dw_1.selctrow(0,false)dw_1.selectrow(dw_1.getrow(),true)【升序】按钮的click 事件本例按商品编号升序排列dw_1.setransobject(sqlca)dw_1.setsort("商品编号A")//setsort 函数用来定义数据窗口如何排序,sort()函数则实际对数据窗口进行排序。
PB文件操作函数

PB文件操作函数1.读取PB对象:a. `ReadFromIstream`:从输入流中读取PB对象。
函数原型为`bool ReadFromIstream(std::istream* input)`,返回值表示读取成功与否。
b. `ParseFromIstream`:从输入流中解析PB对象。
函数原型为`bool ParseFromIstream(std::istream* input)`,返回值表示解析成功与否。
c. `MergeFromIstream`:从输入流中合并PB对象。
函数原型为`bool MergeFromIstream(std::istream* input)`,返回值表示合并成功与否。
2.写入PB对象:a. `SerializeToOstream`:将PB对象写入输出流。
函数原型为`bool SerializeToOstream(std::ostream* output)`,返回值表示写入成功与否。
b. `SerializeToString`:将PB对象序列化为字符串。
函数原型为`bool SerializeToString(std::string* output)`,返回值表示序列化成功与否。
c. `SerializePartialToCodedStream`:将PB对象部分序列化为编码流。
函数原型为`boolSerializePartialToCodedStream(google::protobuf::io::CodedOutputS tream* output)`,返回值表示序列化成功与否。
3.反序列化PB对象:a. `ParseFromString`:从字符串中解析PB对象。
函数原型为`bool ParseFromString(const std::string& data)`,返回值表示解析成功与否。
b. `ParsePartialFromString`:从字符串中部分解析PB对象。
PB源码大全

PB源码大全getfirstletter.zip 5K 取汉字拼音的首字母ctrl_alt_del.zip 5K 关掉ctrl_alt_del热键multithread.zip 8K 多线程实现的例程wallpaper.zip 10K 显示图片的例程w_test.srw 4K 如何使用COM对象:WORD EXCELerrortrap.zip 19K 错误陷阱模块,错误信息可以是中文的了taskbar5.zip 10K 把PB程序加入到系统任务栏(WIN95/97/98系统)exfuns.zip 23K 常用的外部动态链接库函数alltext45.zip 3419K 现RichText,功能更强大,中文不会出现问题。
(但不能象PB自带的RichText可以和DataWindow紧密结合)closeapp.zip 5K 关闭程序context.zip 14K 实现Win95风格的上下文帮助,原来只有VB才有此功能,请看PB如何实现,帅呆了!multi.zip 41K sybase提供一个关于在在PB中实现多线程的例子。
使用SharedObjectRegister,SharedObjectGet函数实现。
mdigraph_v2.zip 97K 允许在MDI主窗口显示图形,加强程序视觉效果。
解决了当其它应用覆盖MDI窗口会出现图片被盖住的部分不能刷新。
例如切换输入法就会出现上述问题。
numerical.zip 14K 一个用户对象用于实现十进制,二进制,十六进制之间的互相转换,已经写了一个简单的例程.调用很方便.使用PFC的用户只需简单的将n_cst_numerical替换为本程序中的对象即可.pbfix.zip 17383K PB 6.5.1中对以前PB版本进行修正过的错误列表。
pfc.txt 34K PFC入门的中文介绍,PFC是PowerBuilder开发组为PB开发的框架包,结构严谨,功能强大,为PB专业开发人员的首选。
pb进销存源码

pb进销存源码
(原创版)
目录
1.PB 进销存源码的概念与意义
2.PB 进销存源码的功能与特点
3.PB 进销存源码的应用领域与优势
4.如何获取和使用 PB 进销存源码
正文
【提纲】
1.PB 进销存源码的概念与意义
PB 进销存源码是指用于实现进销存管理系统的编程代码,它可以帮助企业有效管理采购、销售和库存等环节,提高企业的运作效率。
进销存源码对于企业的信息化建设和管理水平的提升具有重要意义。
2.PB 进销存源码的功能与特点
PB 进销存源码具有以下功能:采购管理、销售管理、库存管理、报表统计等。
特点包括:操作简便、功能齐全、安全可靠、可扩展性强等。
这些特点使得 PB 进销存源码成为企业进行进销存管理的得力助手。
3.PB 进销存源码的应用领域与优势
PB 进销存源码广泛应用于各类企业,如贸易公司、生产制造企业等。
其优势在于:降低库存成本、提高资金周转率、提升企业管理水平、助力企业转型升级等。
通过使用 PB 进销存源码,企业可以实现信息化管理,提高市场竞争力。
4.如何获取和使用 PB 进销存源码
企业可以通过购买相关软件、招聘程序员开发或者寻求外部技术支持
等途径获取 PB 进销存源码。
在使用过程中,企业需要进行源码的安装、配置、培训和维护等工作,以确保源码能够正常运行并满足企业的实际需求。
总之,PB 进销存源码对于企业的进销存管理具有重要意义,它具有操作简便、功能齐全、安全可靠等优点,广泛应用于各类企业。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
getfirstletter.zip 5K 取汉字拼音的首字母ctrl_alt_del.zip 5K 关掉ctrl_alt_del热键multithread.zip 8K 多线程实现的例程wallpaper.zip 10K 显示图片的例程w_test.srw 4K 如何使用COM对象:WORD EXCELerrortrap.zip 19K 错误陷阱模块,错误信息可以是中文的了taskbar5.zip 10K 把PB程序加入到系统任务栏(WIN95/97/98系统)exfuns.zip 23K 常用的外部动态链接库函数alltext45.zip 3419K 现RichText,功能更强大,中文不会出现问题。
(但不能象PB自带的RichText可以和DataWindow紧密结合)closeapp.zip 5K 关闭程序context.zip 14K 实现Win95风格的上下文帮助,原来只有VB才有此功能,请看PB如何实现,帅呆了!multi.zip 41K sybase提供一个关于在在PB中实现多线程的例子。
使用SharedObjectRegister,SharedObjectGet函数实现。
mdigraph_v2.zip 97K 允许在MDI主窗口显示图形,加强程序视觉效果。
解决了当其它应用覆盖MDI窗口会出现图片被盖住的部分不能刷新。
例如切换输入法就会出现上述问题。
numerical.zip 14K 一个用户对象用于实现十进制,二进制,十六进制之间的互相转换,已经写了一个简单的例程.调用很方便.使用PFC的用户只需简单的将n_cst_numerical替换为本程序中的对象即可.pbfix.zip 17383K PB 6.5.1中对以前PB版本进行修正过的错误列表。
pfc.txt 34K PFC入门的中文介绍,PFC是PowerBuilder开发组为PB开发的框架包,结构严谨,功能强大,为PB专业开发人员的首选。
需要深入全面学习还需仔细阅读Online Book。
虽然是英文的,但是目前介绍最全面的书籍。
另外《PowerBuilder 6.0程序设计大全》也有一章是中文入门介绍。
wangsamp.zip 8K 一个使用Windows自带的扫描仪控件的例子,用VB编写的,可以用到PB 中.是微软自Windows97开始附加的一个kodak提供的ImagingControls.并且还带有在线帮助.在windows 97中有它的1.0版本,windows 98是2.1版本.并且在Win97中带有VB制作的例子,只要安装Win97就有,它的存放路径是windows\wangsamp(使用win97朋友不用下载了).此控件有四组功能,分别为:(控件的详细使用方法可以看windows\help\wangocxd.hlp) kodak 图像编辑控件(ImgEdit.ocx)kodak 图像管理控件(ImgAdmin.ocx)kodak 图像扫描控件(ImgScan.ocx)kodak 图像缩略图控件(ImgThumb.ocx).account.zip 2296K 一个财务系统源代码pb65ckb2.zip 2004K pb65汉化核心模块PB701Maint.zip 19144K pb7.1patchpb6v11.zip 73K 例程query.zip 11K 有一些朋友提出对于记录个数很多的表进行查询的问题,得到的大多数解答是限制返回的结果集大小,例如SQL Server 7.0中可以通过Select Top N..... (N表示返回的记录数),而周游第二天就写了一个例程来说明查询大结果集的问题。
采用的方法是使用ID字段,定义游标,能过循环读取并放入到Datawindow中,大家可以下载看看,(注意下载后不要直接运行,要改动Application Open事件中的代码,以便联接到自己所用的数据库)。
此例程还可以进一步改进,因为通过游标读取效率不高,需要多次与后台数据库通讯。
可以改用Datawindow使用Retrieve来实现,在Where条件中可以加上对于ID的辨断。
这两种方法可以反复试验,希望能对大家有所帮助。
fxgold.zip 4197K 是实现多媒体功能的控件,是罕有能兼容PB的多媒体设计控件,带有几十个VB例子.可以改为在PB使用.taskbar.zip 10K 增加了一个PB程序驻留在System Tray区的例子(Win95/98右下角),已经封装成了用户对象,随意挂接,超级好用。
(编译成exe后将显示正确图标)pb5zlib.zip 74K 一个简单的压缩/解压缩程序,附有PB例子,可以应付一般的用途。
ChgPrn.zip 3K 使用注册表和win.ini文件动态改变当前默认打印机,调用方便,调用完成后自动恢复系统默认打印机,你可以使用此对象在程序中控制,当前打印输出到本地打印机或网络打印机,如果需要更多功能应该使用PowerPrint DLL。
trigger.txt 2K 关于触发器的使用PBuild.exe 1166K 一个InstallShield For PB 6.0的模板。
很好用,里面包含一些常用的odbc驱动程序,最关心的SQL Anywhere也包含在其中,请先安装InstallShield 5.0。
如果你的程序使用MS SQL Server,最简单的方法是将两个Sql Server 的DLL文件包含在你的安装程序,Copy到Windows\system目录下即可。
它们是DBMSSHRN.DLL,NTWDBLIB.DLL。
saxsetup.exe 4298K 除了可以制作安装程序以外,和其它同类产品有所不同,它可以监控你运行的程序需要用到哪些DLL文件.可以利用此功能判断出PB连接SQL Server 7.0需要的两个SQL 7.0中的DLL文件.可以如法炮制用于判断其它程序需要的附加文件.另外在Visual Studio 6.0也带有一个工具叫Dependency Walker,它也可以实现此功能.settime.zip 6K 一个设置系统时间的程序,弥补了PB没有的功能,已经封装成为用户对象。
getfont.zip 81K 用API读取Windows安装的字体,非常感谢ZeXian.Wang。
使用Watcom C++制作的DLL,附有源程序,并有PB例程。
ick.zip 62K IC卡读写程序xceedzip.exe 1219K Xceedzip的加密功能很特别,安装在自己的电脑上时无论是在设计环境还是EXE执行的时候都不会有任意问题,但当你将此EXE在另一台已经安装了Xceedzip的电脑上运行,则会提示你没有买正式版本crc.zip 17K 使用CRC检验,确保程序不被人非法修改和数据的完整性sim_shutdown.zip 37K 在PB程序中使屏幕变暗,模拟关闭Windows的效果(第一版) execsql.zip 43K 直接在程序中执行*.sql中的内容timer.zip 26K 用PB编制定时关闭电脑程序org.zip 108K 制作组织结构图,来自PB4.0的例子,虽然很老,但有许多可供参考地方,有很强的实用价值,是学习动态Datawindow的好例程htmlhelp.zip 23K 在PB中调用Htmlhelp的例程iconviewer.zip 34K 查看程序图标资源文件的程序很常见,但这个可是用PB写的。
superbar.zip 13K PB中的微帮助状态栏一直不尽如人意,单一、不能定制,于是很多高手想办法来增强它的功能,SuperBar是其中的一个例子,很精彩,向各位推荐。
Date_Time.zip 19K 一个在PB中输入日期、时间的例子,有各种样式,非常实用。
WordDlg.Zip 39K 通过OLE自动化获取Word(97)中的有用工具,如字数统计、拼写检查、打开文件等。
Pzti.Zip 128K 会计记帐凭证界面设计MicroHelp_Time.zip 7K 在MDI窗口的微帮助栏右边显示系统时间的例程,用一个popup窗口覆盖信息栏部分实现。
Regedit.zip 6K 用来访问和修改Windows 95/98/NT的计算机用户名和公司名称。
calendar3.zip 26K 新款日历,界面漂亮,推荐!Bubble.ZIP 50K 在命令按钮、数据窗口等控件上显示类似于中文之星提示文本的程序,推荐!Search.ZIP 126K 根据部分网友的要求,将组合查询作成了演示程序供下载,其中模板可作通用组合查询。
Font.zip 7K 更改程序中的字体的程序范例,推荐!Explorer.zip 24K 类似于Window资源管理器,TreeView与ListVew实现。
PBComment.zip 102K 可为你的PB脚本添加注释3d_word.zip 38K 在PB中显示3D字,用DataWindow实现,已经封装成用户对象,并制作了相应的例程,非常Cool。
menu.zip 8K 菜单(menu)上增加图标的例子。
tooltip.zip 15K 一个更好的ToolTips实现方法,效率更高,方法更加标准。
Tooltip.zip 15K 一个更好的ToolTips实现方法,效率更高,方法更加标准。
和4月27日的提供的ToolTips相比,今天提供的方法是和VB,DELPHI,VC内部实现的机制一样,4月27日提供的程序可以从中学习许多编程技巧,可以改为其它用途。
mscomctl32.zip 41K 实现3个PB中没有标准WIN95界面控件,强力推荐,非用不可。
multitree.zip 13K 超强TreeView,实现checkbox(多项选择)和radio button(单项选择)功能,喷血推荐!outlook6.zip 52K Outlook对象,超级专业效果,就连VB控件中都少见,吐血推荐DW_Ref.zip 42K 关于datawindowprogress.zip 12K 一个好用的进度条对象newdwsort.zip 22K 单击标题栏即可排序的数据窗口picture_button.zip 3K 图像按钮实现例程resize.zip 42K 动态改变MDI窗口大小的例程uo_code_droplistbox.zip 932 特殊功能的下拉列表框uo_picture_mdi.zip 22K MDI窗口中显示图片transparent.zip 13K 使控件透明显示dynamic_menu.zip 11K PB动态菜单bmpclient.zip 350K 鼠标热点程序trigger.zip 20K 程序触发键盘com_tool.zip 22K 通用数据窗口查询程序animate.zip 5K 不同的窗口打开方式wndshow.zip 190K 不同的窗口打开方式transparent.zip 13K 透明图片程序changepos.zip 11K 动态调整DW中列的位置程序Grap.zip 29K 改变Graph类型DW的程序picmenu.zip 8K 图片菜单msgbox_help.zip 13K 带HELP按钮的MsgBoxprogress.zip 12K 新的进度条pbtoword.zip 9K 数据窗口转换为WORD95文件pbtoword1.zip 14K 数据窗口转换为WORD97文件pbtoword2000.zip 9K 数据窗口转换为WORD2000文件standard.zip 255K 标准窗口selectdirectory.zip 51K PB中选择目录而不显示文件的例子7enumwindows.zip 6K 显示PBL文件中全部数据窗口的所有信息的例子6dwreport.zip 69K 获取当前全部打开窗口的例子mycx.zip 65K 数据窗口查询程序datetime12.zip 19K DateTime录入框dw2struct.zip 45K 把Datawindow 转换成 Struct,可全部是PB的写的,没用API。