PB常见基本问题初步总结
版内有一些问题被问过n遍了,可是还是有人在问题,现在做如下的总结,不足的地方兄弟们请给予修正,给予填充,使这个贴更充实些。
在提问前一定要先搜索一下,查看一下各分版的faq及精华区,看是否有同类的问题
1.怎么得到Group的count?
A.cumulativeSum( if( 分组列名[-1] = 分组列名[0],0,1) for all )
B.GetRow() - First(GetRow() for Group 1) + 1
C.count(分组的字段 for all distinct)
2.怎么得到Group的行号?
cumulativeSum( 1 for group 1 )
3.如何给一个子数据窗口传参数?
datawindowchild ldwc_name
ldwc_name = dw_name.getchild( 'column', ldwc_name )
//如果开始不知道dddw的检索参数是什么,可以欺骗dddw,让他认为已有了数据:
ldwc_name.insertrow( 0 )
dw_name.retrieve()
//如果你知道检索参数了:
ldwc_name.settransobject( sqlca )
ldwc_name.retrieve( arguments )
dw_name.settransobject( sqlca )
dw_name.retrieve()
4.如何比较两个时间(date)类型的数据之间的相差的天数?
date ld_date1, ld_date2
long ll_diff
ll_diff = daysafter( ld_date1, ld_date2 )
5.DW中,各行数据用不同颜色来显示
background.color express:
if( mod(getrow(),2)=0, rgb(0,255,0), rgb(255,255,255) )
6.窗口中控件visible属性的操作问题
way1: 在窗口画板的design菜单里选option,点上show invisible复选框。
way2:在edit菜单里选control list,选择你要找的按钮,然后在property里点 上visible复选框。
7.怎样在dw中加计算列
在summary带放计算域,如sum( column for all )
8.如何取服务器时间,更改本地时间?
FUNCTION ulong SetLocalTime(any lpSystemTime) LIBRARY "kernel32.dll"
结构str_systime(unsignedinteger: year,month,day,hour,minute,second)
datetime dt_server
str_systime lstr_tmp
select getdate() into :dt_server from sysfiles;
lstr_tmp.year=year(date(dt_server))
lstr_tmp.month=month(date(dt_server))
lstr_tmp.week=daynumber(date(dt_server)) - 1
lstr_tmp.day=day(date(dt_server))
lstr_tmp.hour=hour(time(dt_server))
lstr_tmp.minute=minute(time(dt_server))
lstr_tmp.second=second(time(dt_server))
SetLocalTime(lstr_tmp)
9.怎么屏蔽datewindow中的回车按键?
pbm_dwnprocessenter:return 1
10.dddw的增量查询?
datawindowchild ldwc_name
dw_name.getchild( "column", ldwc_name )
//dw_name:editchanged
ldwc_name.setfilter( "column Like '%" + upper( data ) + "%'" )
ldwc_name.filter()
11.如何动态改变dw的sql?
string ls_sql, ls_new_sql
ls_sql = dw_name.getsqlselect()
ls_new_sql = ls_sql + 'statement'
dw_name.setsqlselect( ls_new_sql )
dw_name.settransobject( sqlca )
dw_name.retrieve()
12.怎么知道数据窗口中哪些行修改了?
long i
dwitemstatus lds_status
for i = 1 to dw_name.rowcount()
lds_status = dw_name.getitemstatus( i, 0, primary! )
if lds_status <> notmodified! then
//本行修改了
end if
next
13.如何动态修改数据窗口列的风格?
dw_name.object.columnname.edit.style = 'dddw'//or other style
dw_name.object.columnname.edit.case = 'any'//change back to edit
问题点数:0、回复次数:55Top
1 楼lmby(鹿门布衣)回复于 2003-11-01 09:55:48 得分 0
大家捧场,让这个帖更强壮~~Top
2 楼sisici(nhp)回复于 2003-11-01 12:48:48 得分 0
顶!很有意义!Top
3 楼klbt(快乐白兔)回复于 2003-11-01 13:14:26 得分 0
lmby (鹿门布衣)正在做一件很好的事情,支持!Top
4 楼qqjj7758(QQJJ)回复于 2003-11-01 13:38:53 得分 0
再往上加
我去看看Top
5 楼wyzwhp(天子)回复于 2003-11-01 15:12:48 得分 0
顶!很有意义!Top
6 楼yghua8(alpha)回复于 2003-11-01 15:56:53 得分 0
up...有意义...
Top
7 楼lmby(鹿门布衣)回复于 2003-11-01 20:48:16 得分 0
1.数据窗口自动折行?
detail 带选autosize height
column去掉auto horz scroll选auto vert scroll
2.如何动态地把一个数据窗口里的字段设为只读
dw_name.object.column.protect = 1
dw_name.object.column.edit.displayonly = 'yes'
dw_name.object.column.teasequence = 0
3.如何实现跨数据库的分布式查询或更新?
//与对方建立连接
string ls_link, ls_login
ls_link = "sp_addlinkedserver ~'srv_lnk~',~'~',~'SQLOLEDB~',~'sws~'"
ls_login = "sp_addlinkedsrvlogin ~'srv_lnk~',~'false~',null,~'sa~',~'newworld~'"
sqlca.autocommit = true
EXECUTE IMMEDIATE :ls_link;
EXECUTE IMMEDIATE :ls_login;
//这里要注意修改ANSI_NULLS和ANSI_WARNINGS。因为在做分布式查询时应将它么都设置为ON。而企业管理中的ANSI_NULLS和ANSI_WARNINGS选项不对,但没有方法改动。在查询分析器可以设置ANSI_NULLS和ANSI_WARNINGS选项,而且默认值是对的。所以创建一个存储过程,
create proc 名 as SET ANSI_NULL_DFLT_ON on --注意 SET ANSI_WARNINGS on
declare procedure up_set for your_proc.....//在pb中掉用创建的着个存储过程
//做数据操作
insert into tableOfAnotherDB values('19','uuu','dd');
//关闭连接
string ls_drop
ls_drop = "sp_dropserver ~'srv_lnk~', ~'droplogins~'"
EXECUTE IMMEDIATE :ls_drop;
sqlca.autocommit = false
4.如何用pb实现读写图片操作?
//图片字段image
string docname, named
integer value,li_f,i
integer li_fileptr,li_loops
long ll_filelen,ll_bytes_read
Blob lbb_Read,lbb_Total
value = GetFileOpenName("选择图形文件", + docname, named, "BMP", + "Bmp Files (*.BMP),*.BMP," + "Jpeg Files (*.JPG),*.JPG")
IF value = 1 THEN
//打开图像文件
ll_filelen = FileLength(docname) //获取文件长度, 必须在打开之前
li_fileptr = FileOpen(docname,STREAMMODE!,READ!,LOCKREAD!)
If li_fileptr = -1 Then
Beep(2)
MessageBox("错误","图形文件打开错误!")
Return
End If
If ll_filelen > 32765 Then //一次只能读32K
If Mod(ll_filelen, 32765) = 0 Then
li_loops = ll_filelen / 32765
Else
li_loops = (ll_filelen / 32765) + 1
End If
Else
li_loops = 1
End If
//循环读取图片文件
For i = 1 to li_loops
ll_bytes_read = FileRead(li_fileptr,lbb_Read)
lbb_Total = lbb_Total + lbb_Read
Next
FileClose(li_fileptr)
SetPicture(p_1,lbb_Total)
UPDATEBLOB table set column=:lbb_total where clause;
end if
//显示图片
blob lbb_blob
selectblob column into :lbb_blob from table wher clause;
setpicture( p_1,blob )
5.有像winamp中让用户选择目录的函数吗?
getfileopenname()
getfilesavename()
dirlist()Top
8 楼zhangdatou(猪头)回复于 2003-11-01 20:53:55 得分 0
太有用了Top
9 楼lmby(鹿门布衣)回复于 2003-11-01 21:09:10 得分 0
抛我这块破砖,希望能引出更多的璞玉....Top
10 楼am2000(【最后一滴水】)回复于 2003-11-02 09:53:05 得分 0
在设计数据窗口报表时,由于将某字段的宽度固定了,因而有部份数据不能显示完全,因而想实现自动换行,同时为了节省纸张空间又要求该字段的高度也是自动的,不知各位大侠有什么高招?(请注意中英文似乎有一定的区别,现需要两者皆可实现)
---------------------------------------------------------------
将数据窗口中相应列的auto horz scroll 为不选中,选中autosize height
将detail的autosize height选中。在数据窗口retrieve 后调用下面函数即可
uf_set_text(datawindow adw_content,string
as_columns,boolean,ab_ignoreblank)
/*************************************************************
describe: 在数据窗口adw_content中,在as_columns中包含的列中插入空格
args:
as_columns 要操作的多个列,列间用逗号隔开
*************************************************************/
if (not isvalid(adw_content)) or isnull(as_columns) or len(as_columns)<1 or isnull(ab_ignoreblank) then return -1
n_cst_string lnv_string
string ls_column[] , ls_width ,as_source,as_replaced ,ls_temp
int li_upperbound , li_width , li_column , li_fontWidth, li_counter
long ll_rowcount , ll_row , ll_totalstep
int li_yield
lnv_string.of_parsetoarray(as_columns,',',ls_column)
li_upperbound = upperbound(ls_column)
ll_rowcount = adw_content.rowcount()
if li_upperbound<1 or ll_rowcount<1 then return -1
openwithparm(w_waiting,this)
ib_cancel = false
iw_frame.enabled = false
ll_totalstep = ll_rowcount * li_upperbound
w_waiting.uf_register(ll_totalstep)
for li_column = 1 to li_upperbound
ls_width = adw_content.describe(ls_column[li_column]+".width")
li_width = integer(ls_width)
if ls_width='!' or ls_width='?' or li_width=0 then
continue
end if
//ls_temp = adw_content.describe(ls_column[li_column]+".Font.property { = 'width' }")
//messagebox(ls_column[li_column]+".Font.property { = 'width' }",ls_temp)
//return 1
li_fontwidth = 27
li_counter = li_width / li_fontWidth
for ll_row=1 to ll_rowcount
if ib_cancel then
iw_frame.enabled = true
return 0 //pressed cancel button
end if
as_source = adw_content.getitemstring(ll_row,ls_column[li_column])
as_replaced = uf_insertstring(as_source,li_counter,' ',false)
if as_replaced<>as_source then
adw_content.setitem(ll_row,ls_column[li_column],as_replaced)
end if
w_waiting.uf_stepit()
next
next
close(w_waiting)
iw_frame.enabled = true
return 1
---------------------------------------------------------------
Top
11 楼am2000(【最后一滴水】)回复于 2003-11-02 09:53:27 得分 0
在数据窗口中如何使光标所在单元格改变颜色?
我想判断当前光标所在列号,由此使光标所在“单元格”背景色变化一下。
(注意:在datawindow的itemfocuschanged事件中可以用
dw_1.modify(dwo.background.color="颜色值")改变。但是它改变
的是整个列的颜色。现在我要的是使光标所在的单元格改变颜色。)
我所要的是:
1, 光标在某行某列的单元格上时是一种颜色,光标离开此单元格,比如光标移动到左边或右边一列时,原来的单元格恢复本来颜色,而被移动到的一列单元格颜色又改变(注意:此时光标在同一行)
2, 当光标移动到下一行时,同一列之间只能是光表所在单元格变色,其他上下单元格保持原样
---------------------------------------------------------------
喔写了一段代码,经过测试应该没有问题:
在DW的ITEMFOCUSCHANGED事件,注意是ITEMFOCUSCHANGED事件:
//此处声明所用到的相关变量;
long ll_col,ll_pos,ll_cols
string modstring,ls_colnam,ls_color_1,ls_color_2
//此处给两个颜色变量赋值;
ls_color_1=string(RGB(0, 255, 0))
ls_color_2=string(rgb(255,0,0))
//此处获取当前列号和总列数;
ll_col=dw_1.getcolumn()
ll_cols=long(dw_1.Object.DataWindow.Column.Count)
//此处将所有列的BACKGROUND的MODE属性设为不透明;(注:下面两句其实可以放到FORM的OPEN事件或DW的CONSTRUCTOR里面执行,可以提高效率;)
for ll_pos=1 to ll_cols
ls_colnam=dw_1.Describe("#"+string(ll_pos)+".Name")
dw_1.Modify(ls_colnam+".Background.Mode='0'")
next
//此处将所操作列的Background.Color属性设为带IF判断的表达式,而除此之外的各列的背景表达式均设为恒值;
for ll_pos=1 to ll_cols
ls_colnam=dw_1.Describe("#"+string(ll_pos)+".Name")
if ll_pos<> ll_col then
modstring=ls_colnam+".Background.Color='"+ls_color_1+"'"
else
modstring=ls_colnam+".Background.Color='"+ls_color_1+" ~t if (getrow()=currentrow(),"+ls_color_2+","+ls_color_1+")'"
end if
//此处执行背景颜色修改;
dw_1.Modify(modstring)
//刷新显示新的背景颜色;
dw_1.setredraw(true)
next
最后的运行效果是当前ITEM为红色,其他均为绿色。Top
12 楼am2000(【最后一滴水】)回复于 2003-11-02 09:53:57 得分 0
在PB程序中隐藏/显示Windows任务栏
定义API函数:
Function long FindWindowExA ( long hWnd, long hWndChild, ref string
lpszClassName, ref string lpszWindow) library 'user32'
Function long ShowWindow (long hWnd, long nCmdShow ) library 'user32'
定义常量:
//Constants for ShowWindow()
Constant Long SW_HIDE = 0
Constant Long SW_NORMAL = 1
Constant Long SW_SHOWMINIMIZED = 2
Constant Long SW_SHOWMAXIMIZED = 3
Constant Long SW_SHOWNOACTIVATE = 4
Constant Long SW_SHOW = 5
Constant Long SW_MINIMIZE = 6
Constant Long SW_SHOWMINNOACTIVE = 7
Constant Long SW_SHOWNA = 8
Constant Long SW_RESTORE = 9
Constant Long SW_SHOWDEFAULT = 10
1、隐藏任务栏
// Names of the shell windows we'll be looking for
String ls_ShellViewWnd = "Progman"
String ls_ShellTaskBarWnd = "Shell_TrayWnd"
String ls_Null
// Locals
Long ll_HTaskBar, ll_HDeskTop
// Hide task bar
ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null )
ShowWindow( ll_HTaskBar, SW_HIDE )
2、
显示任务栏
// Names of the shell windows we'll be looking for
String ls_ShellViewWnd = "Progman"
String ls_ShellTaskBarWnd = "Shell_TrayWnd"
String ls_Null
// Locals
Long ll_HTaskBar, ll_HDeskTop
// Show task bar
ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null )
ShowWindow( ll_HTaskBar, SW_SHOW )
Kukoc整理 2003-4-29
Top
13 楼firewinter(砥砺网络)回复于 2003-11-02 13:28:08 得分 0
up...有意义...!!!!Top
14 楼wasiwu(天天看到你)回复于 2003-11-02 15:02:30 得分 0
不错不错!
Top
15 楼pbcoder(www.itheroes.cn)回复于 2003-11-02 15:20:43 得分 0
太棒了,lmby (鹿门布衣)俺要转帖可以吗?Top
16 楼lmby(鹿门布衣)回复于 2003-11-02 15:22:53 得分 0
转到别的论坛么?转吧。只要能有帮助.Top
17 楼scnmutou(自由)回复于 2003-11-02 16:03:44 得分 0
: lmby(鹿门布衣) 好样的Top
18 楼am2000(【最后一滴水】)回复于 2003-11-02 19:19:16 得分 0
这样一条条理出来也太多太多了.
要是有人能做一个chm文件就好了。
前段时间做过,手工整理工作量太大Top
19 楼juwuyi(我有,我可以)回复于 2003-11-02 20:32:50 得分 0
好吧,偶来做chm怎么样?
那怎样算一页呢?Top
20 楼enchant()回复于 2003-11-03 12:55:05 得分 0
up,一些类似的专题做索引吧Top
21 楼workhand(我可憨了...)回复于 2003-11-03 13:20:05 得分 0
支持。
我觉得还要加上Excel、txt导入到dw中或者再导出去的代码,最近好像问地比较多。Top
22 楼workhand(我可憨了...)回复于 2003-11-03 13:22:37 得分 0
以下是我程序里的代码:一个bom树型结构表的导入
Long value,Ll_col,Ll_01,Ll_row
String Ls_path,Ls_filename,Ls_cx
Is_syspath=space(255)
GetCurrentDirectoryA(255,Is_syspath)
value=GetFileopenname("请选择要导入BOM的EXECL类型文件!",ls_path,ls_filename,'xls','EXECL 文件(*.xls),*.xls')
is_filename = mid(ls_filename,1,len(ls_filename) - 4)
if value <> 1 then ////没取到、或者取消返回
Return false
end if
if luo_excel.connecttoobject("","Excel.Application") <> 0 then
if luo_excel.ConnectToNewObject("Excel.Application") <> 0 then
messagebox(gs_tsxx,'连接excel失败请稍后再试!')
return false
end if
end if
SetPointer(HourGlass!)
luo_excel.workbooks.open(ls_path)
luo_sub = luo_excel.application.workbooks(ls_filename).worksheets(1)
/////////// 取出数据区域
ll_col=2
do while 1=1
luo_sub.cells(ll_col,1).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if trim(tab_1.tabpage_1.sle_2.text)="" or isnull(tab_1.tabpage_1.sle_2.text) then
exit
end if
tab_1.tabpage_1.sle_2.text=''
ll_col++
loop
//////////Ll_col 记录总的行数
if ll_col<2 then goto out//空的Excel,
//删除PIM_BOM表中原有数据
delete from inv_usedquota2;
tab_1.tabpage_1.dw_8.reset()
tab_1.tabpage_1.dw_8.retrieve()
////////////取数
ll_01=2
//从第三行开始取数
do while ll_01<= ll_col - 1
ll_row=tab_1.tabpage_1.dw_8.insertrow(0)
tab_1.tabpage_1.sle_2.text=''
luo_sub.cells(ll_01,1).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if left(ls_cx,1)='"' then
ls_cx=right(ls_cx,len(ls_cx) - 1)
end if
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'wlh',ls_cx)
luo_sub.cells(ll_01,2).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'zwlh',ls_cx)
luo_sub.cells(ll_01,5).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if left(ls_cx,1)='"' then
ls_cx=right(ls_cx,len(ls_cx) - 1)
end if
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'de',dec(ls_cx))
luo_sub.cells(ll_01,9).copy()
tab_1.tabpage_1.sle_2.paste()
ls_cx=trim(tab_1.tabpage_1.sle_2.text)
if left(ls_cx,1)='T' or left(ls_cx,1)='t' then
ls_cx='1'
else
ls_cx='0'
end if
tab_1.tabpage_1.sle_2.text=''
tab_1.tabpage_1.dw_8.setitem(ll_row,'fjbs',integer(ls_cx))
ll_01++
loop
out:
luo_excel.application.workbooks(ls_filename).close(false)
luo_excel.application.quit()
luo_excel.disconnectobject()
///向数据库提交数据
if tab_1.tabpage_1.dw_8.update() = 1 then
commit;
else
messagebox('ss',sqlca.sqlerrtext)
rollback;
Return false
end if
return trueTop
23 楼workhand(我可憨了...)回复于 2003-11-03 14:01:19 得分 0
转 sisici(nhp) 的一段:txt文件导入
dw_employee.ImportFile("D:\EMPLOYEE.TXT",1,100,1,5,1)
dw_employee为数据窗口名,参数分别为文件名,文件开始行,文件结束行,文件开始列,文件结束列,数据窗口开始列.如果成功就返回导入的行数,不成功时返回下列值:
0 End of file; too many rows
-1 No rows
-2 Empty file
-3 Invalid argument
-4 Invalid input
-5 Could not open the file
-6 Could not close the file
-7 Error reading the text
-8 Not a TXT file
-9 The user canceled the import
-10 Unsupported dBase file format (not version 2 or 3)
If any argument's value is NULL, the method returns NULL.
Top
24 楼whlch1212(小柔)回复于 2003-11-03 17:17:41 得分 0
顶!!!!!谢了!!Top
25 楼ldy(罗大佑)回复于 2003-11-03 18:41:09 得分 0
不错!Top
26 楼lmby(鹿门布衣)回复于 2003-11-03 21:01:15 得分 0
1.过滤条件为id 为 FH_001,怎样让结果包括大小写的纪录。
string s_id = 'FH_001'
dw_1.setfilter("upper(id) = '"+s_id+"'");
dw_1.filter();
2.datawindow does not have UPDATE capability?
更新sql数据源后时,要在数据窗口画板里row-->update property里设置allow update,并设置update的表和列。
3.graph数据窗口中,怎样可以显示多条曲线?
设category.values后设series
series: '薪水', '人员数'
category: 月份
value: column1, column2
算了,没了兴致了。Top
27 楼smallroad(无名)回复于 2003-11-03 23:23:15 得分 0
有没有关于打印的?Top
28 楼chifengwatch(chifengwatch)回复于 2003-11-03 23:30:41 得分 0
upTop
29 楼hdvcd(cd)回复于 2003-11-04 09:18:54 得分 0
是啊,能否加上打印方面的,谢谢了!!!Top
30 楼jdsnhan(柳荫凉)回复于 2003-11-04 15:32:20 得分 0
我来补一下,(转)
求tv中item数量:
Use the following code to quickly count items in the TreeView control:
li_count = Send(handle(treeview_control), 4357, 0, 0)
To find out how many items can be fully visible in the TreeView control visible area use the following script:
li_count = Send(handle(treeview_control), 4368, 0, 0)
Top
31 楼jdsnhan(柳荫凉)回复于 2003-11-04 15:34:41 得分 0
再来一个
[转]SHELL 命令
1.命令: rundll32.exe shell32.dll,Control_RunDLL
功能: 显示控制面板
2.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 显示“控制面板->辅助选项->键盘”选项视窗
3.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 显示“控制面板->辅助选项->声音”选项视窗
4.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 显示“控制面板->辅助选项->显示”选项视窗
5.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
功能: 显示“控制面板->辅助选项->鼠标”选项视窗
6.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 显示“控制面板->辅助选项->常规”选项视窗
7.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 执行“控制面板->添加新硬件”向导。
8.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 执行“控制面板->添加新打印机”向导。
9.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 显示 “控制面板->添加/删除程序->安装/卸载” 面板。
10.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
功能: 显示 “控制面板->添加/删除程序->安装Windows” 面板。
11.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 显示 “控制面板->添加/删除程序->启动盘” 面板。
12.命令: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一个新的“我的公文包”。
13.命令: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 显示复制软盘视窗
14.命令: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
15.命令: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 显示“日期与时间”选项视窗。
16.命令: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 显示“时区”选项视窗。
17.命令: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。
18.命令: rundll32.exe rnaui.dll,RnaWizard
功能: 显示“新建拨号连接”向导的视窗。
19.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 显示“显示属性->背景”选项视窗。
20.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 显示“显示属性->屏幕保护”选项视窗。
21.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 显示“显示属性->外观”选项视窗。
22.命令: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 显示显示“显示属性->属性”选项视窗。
23.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 显示Windows的“字体”文件夹。
24.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同样是显示Windows的“字体”文件夹。
25.命令: rundll32.exe shell32.dll,SHformatDrive
功能: 显示格式化软盘的对话框。
26.命令: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 显示“控制面板->游戏控制器->常规”选项视窗。
27.命令: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 显示“控制面板->游戏控制器->高级”选项视窗。
28.命令: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
功能: 打印HTML文档。
29.命令: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 显示Microsoft Exchange常规选项视窗。
30.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 显示“控制面板->鼠标” 选项 。
31.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 显示 “控制面板->键盘属性->速度”选项视窗。
32.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 显示 “控制面板->键盘属性->语言”选项视窗。
33.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 显示Windows“打印机”文件夹。
34.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 显示Windows“字体”文件夹。
35.命令: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 显示“控制面板->输入法属性->输入法”选项视窗。
36.命令: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 执行“添加新调制解调器”向导。
37.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
功能: 显示“控制面板->多媒体属性->音频”属性页。
38.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
功能: 显示“控制面板->多媒体属性->视频”属性页。
39.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
功能: 显示“控制面板->多媒体属性->MIDI”属性页。
40.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
功能: 显示“控制面板->多媒体属性->CD音乐”属性页。
41.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
功能: 显示“控制面板->多媒体属性->设备”属性页。
42.命令: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 显示“控制面板->声音”选项视窗。
43.命令: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 显示“控制面板->网络”选项视窗。
44.命令: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
功能: 显示ODBC32资料管理选项视窗。
45.命令: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:\path\filename}
功能: 显示指定文件(drive:\path\filename)的“打开方式”对话框。
46.命令: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 显示“控制面板->密码”选项视窗。
47.命令: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 显示“控制面板->电源管理属性”选项视窗。
48.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
功能: 显示Windows“打印机”文件夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)
49.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
功能: 显示“控制面板->区域设置属性->区域设置”选项视窗。
50.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 显示“控制面板->区域设置属性->数字”选项视窗。
51.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 显示“控制面板->区域设置属性->货币”选项视窗。
52.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 显示“控制面板->区域设置属性->时间”选项视窗。
53.命令: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 显示“控制面板->区域设置属性->日期”选项视窗。
54.命令: rundll32.exe desk.cpl,InstallScreenSaver [屏幕保护档案名]
功能: 将指定的屏幕保护文件设置为Windows的屏保,并显示屏幕保护属性视窗。
55.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 显示“控制面板->系统属性->传统”属性视窗。
56.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能: 显示“控制面板->系统属性->设备管理器”属性视窗。
57.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
功能: 显示“控制面板->系统属性->硬件配置文件”属性视窗。
58.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 显示“控制面板->系统属性->性能”属性视窗。
59.命令: rundll32.exe user.exe,restartwindows
功能: 强行关闭所有程式并重启机器。
60.命令: rundll32.exe user.exe,exitwindows
功能: 强行关闭所有程式并关机。
61.命令: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 显示“拨号属性”选项视窗。。
62.命令: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 显示“桌面主题”选项面板。Top
32 楼adeva(埃得娃)回复于 2003-11-04 15:53:37 得分 0
upTop
33 楼jackzhang168(我是谁)回复于 2003-11-04 20:55:25 得分 0
upTop
34 楼hyren(一个人)回复于 2003-11-04 21:35:56 得分 0
up
Top
35 楼workhand(我可憨了...)回复于 2003-11-05 16:06:53 得分 0
这么好的帖子怎么又沉了?
丁页Top
36 楼lmby(鹿门布衣)回复于 2003-11-07 22:27:35 得分 0
丁 页?Top
37 楼teng_ys(我菜故我在)回复于 2003-11-08 09:18:12 得分 0
//备份数据库,到c:\backup目录下面
string ls_backup
CreateDirectory(sle_1.text)
ls_backup="BACKUP DATABASE DIRECTORY '"+sle_1.text+"' TRANSACTION LOG RENAME"
execute immediate : ls_backup;
if sqlca.sqlcode<>0 then
messagebox("备份数据错误","请确定文件夹是否存在!"+sqlca.sqlerrtext)
else
messagebox("数据备份成功","OK,数据备份成功,放在'C:\BACKUP\'目录下")
end if
Top
38 楼teng_ys(我菜故我在)回复于 2003-11-08 09:19:06 得分 0
//恢复数据库,程序拷贝
string ls_filename,named,ls_ml,gs_dir
long ll_value
string mtext
//得到当前目录
if messagebox('提示','恢复数据库,会覆盖现有数据库,且无法修复,是否继续?',&
question!,yesno!,2) = 2 then return
ll_value = GetFileopenName("请选择要恢复的数据库文件",&
ls_filename, named,"backup","数据库文件(*.db),*.db")
gs_dir=GetCurrentDirectory()
if ll_value <> 1 then return
ChangeDirectory(gs_dir)
disconnect;
setpointer(hourglass!)
//////读取文件
integer li_FileNum
boolean lb_del
ls_ml=gs_dir +"\bookmanager.db"
//拷贝文件
li_FileNum = FileCopy(ls_filename, ls_ml, true)
choose case li_FileNum
case 1
messagebox("系统提示","已经成功恢复数据库!",Exclamation!)
case -1
messagebox("系统提示","不能打开源文件,恢复失败!",Exclamation!)
case -2
messagebox("系统提示","不能写入目标文件,恢复失败!",Exclamation!)
end choose
setpointer(arrow!)
//重新连接数据库
connect ;
Top
39 楼lmby(鹿门布衣)回复于 2003-11-08 09:34:54 得分 0
to teng_ys(我菜故我在) :
谢谢你。可是备份时要注意数据库的排它使用。你可以连master,而且需要提示用户。Top
40 楼mittee(最后一条大白鲨[无限深情凝视花花版])回复于 2003-11-08 09:37:45 得分 0
打开软键盘:
run("osk.exe")Top
41 楼jeff_107(笑眯眯)回复于 2003-11-08 09:54:38 得分 0
顶哦,顶哦
其实总觉得这样太累了,每次一碰到什么问题就来问(几乎所有问题都是问过的),收集了一大堆资料,想用的时候又找不到,这样效率太低了,
有个想法,如果能做一个巨大的东东,把我们平时使用pb遇到的问题以及一些心得全部做进去,然后不停的往里加,以后只要有问题就拿出此东东进行查找,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Top
42 楼zhangdatou(猪头)回复于 2003-11-08 10:37:40 得分 0
顶Top
43 楼daluobo(小箭)回复于 2003-11-08 12:55:03 得分 0
确实不错,真好。
没有想到布衣和一滴水还在这混,真是难得呀。Top
44 楼dragon0615()回复于 2003-11-08 12:59:26 得分 0
顶啊。
好东东。
另问:
用openwithparm打开一个response窗口
response窗口返回stringparm值能为空吗?Top
45 楼coolzap(难为水)回复于 2003-11-08 13:42:09 得分 0
顶Top
46 楼lmby(鹿门布衣)回复于 2003-11-08 16:09:12 得分 0
to daluobo(小个个) ( ) :
呵呵,我已经2年没来了,只是最近在做一个pb项目。才到这里来学习的。^_^Top
47 楼giraffe(大胖)回复于 2003-11-08 20:22:31 得分 0
学习Top
48 楼debonair_wei(蠢虫)回复于 2003-11-12 18:25:17 得分 0
收藏Top
49 楼aaaadalanchong(先知)回复于 2003-11-14 11:57:07 得分 0
已收藏,各位大哥,谢过。Top
50 楼mbl(小马)回复于 2003-11-14 20:21:38 得分 0
OKTop
51 楼pfengk(音乐虫子)回复于 2003-11-24 13:52:14 得分 0
UP 一下有什么好东西也可以灌一灌。Top
52 楼firewinter(砥砺网络)回复于 2003-11-27 19:16:57 得分 0
UP!!!
好东东!Top
53 楼hzhxxx(程序方程)回复于 2003-12-11 08:40:14 得分 0
刚才急着去吃饭没有把最新的方法法上来:
for i =1 to ll_row_count
ll_row = dw_xx.findgroupchange(i,1)
if ll_row = 0 or ll_row = ll_row_temp then continue
ll_row_temp = ll_row
.........................
ll_group_count[ll_i_2]=dw_1.object.计算列的名字[ll_row]
ll_i_2 ++
..........
next
这样应该就不需要消除重复项的工作
Top
54 楼eminena(俄罗斯方块)回复于 2003-12-16 21:13:34 得分 0
转:
在程序运行过程中,要动态的改变DataWindow控件窗口中内容的可用多种方法实现:
1.创建多个DataWindow对象,在程序运行时,通过一按钮控件的Click事件来改变DataWindow对象
if dw_control.dataobject=d_object1 then
dw_control.dataobject=d_object2
else
dw_control.dataobject=d_object1
end if
dw_control.settransobject(SQLCA)
dw_control.retrieve()
2.使用setsqlselect函数
dw_control.setsqlselect("select * from table1")
dw_control.retrieve()
3.使用modify函数
dw_control.modify("datawinodw.table.select='select * from table1'")
4.使用create(syntax{,errorbuffer})函数
syntax有三种方法实现:
调用libraryexport()
调用syntaxfromsql()
用户自定义
如:
string ls_select,ls_present
ls_select="select * from table1 where name like 'l%'"
ls_present="style(type=form)"
ls_syntax=SQLCA.syntaxfromsql(ls_select,ls_present)
dw_control.create(ls_syntax)
dw_control.settransobject(SQLCA)
dw_control.retrieve()
5.或者自己动态创建一个DataWindow控件
打开new user boject 对话框,创建一标准DataWindow类用户对象
根据需要对控件增加功能,并保存到用户库中
在程序中调用函数:openuserobject(userobjectvar{,x,y})
窗口关闭前清除对象:closeuserobject()Top
55 楼yfh814(杨拉登)回复于 2003-12-25 11:05:16 得分 0
我靠,这些怎么都这么难啊。我都看不太懂,还是什么基础类的。看来PB真的很深Top




