CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

PB常见基本问题初步总结

楼主lmby(鹿门布衣)2003-11-01 09:54:41 在 PowerBuilder / 基础类 提问

版内有一些问题被问过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

相关问题

  • SQL SERVER中一些常见性能问题的总结
  • 请高手总结一下常见的Web服务器有哪些?谢谢
  • 软工基本概念总结(主要关于UML) 大家一起来
  • 大家能帮我总结一下m_pMainWnd的一些常见用法吗??谢谢!
  • 再当次义工:VB高手搜集-常见问题总结(立华软件园)
  • pb新手上路,大家来提提最常见,最简单的问题
  • 年终总结
  • mfc总结
  • ***2005年总结***
  • 常见错误!!!!!!

关键词

  • 选项
  • 属性
  • shell
  • 数据
  • 文件
  • 数据库
  • 函数
  • 字段
  • rundll
  • 命令

得分解答快速导航

  • 帖主:lmby

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo