2020-09-10
a
修改数据后,窗口自动刷新跳到第一行
ls_cur_bh = Right('00000000' +String(ll_max_bh),6)
SELECT count(1),BH Into:li_fz_count,:ls_tsfzbh From TJ_DWFZ_HD Where dwbh = :is_dwbh And dwtjcs = :ii_dwtjcs And fzlb = '1' Group By BH Using sqlca;
IF li_fz_count = 0 THEN
INSERT INTO tj_dwfz_hd(bh,dwbh,dwtjcs,fzmc,xb,hyzk,zhxgr,zhxgrq,bzjg,dzbl,
tjywlx,jfjs,jsrs,xmzk,jxxmzk,jsfs,sfqy,jxzffs,tjlb,fzlb)
VALUES(:ls_cur_bh,:is_dwbh,:ii_dwtjcs,'拆项分组','%','%',:gs_gkhm,
:idt_sysdatetime,0,100,'01','zh','0',100,100,'1','1','1','01','1')
COMMIT Using sqlca;
UPDATE tj_tjdjb Set FZBH = :ls_cur_bh,ysbh = :ls_fzbh Where tjbh = :is_tjbh And tjcs = :ii_tjcs;
UPDATE TJ_TJJLB Set FZBH = :ls_cur_bh Where tjbh = :is_tjbh And tjcs = :ii_tjcs;
UPDATE TJ_TJJLB Set SSLX = 1 Where tjbh = :is_tjbh And tjcs = :ii_tjcs And SSLX = 0;
dw_fzxx.Retrieve(ls_cur_bh)
ELSE
UPDATE tj_tjdjb Set FZBH = :ls_tsfzbh,ysbh = :ls_fzbh Where tjbh = :is_tjbh And tjcs = :ii_tjcs;
UPDATE TJ_TJJLB Set FZBH = :ls_tsfzbh Where tjbh = :is_tjbh And tjcs = :ii_tjcs;
UPDATE TJ_TJJLB Set SSLX = 1 Where tjbh = :is_tjbh And tjcs = :ii_tjcs And SSLX = 0;
dw_fzxx.Retrieve(ls_tsfzbh)
END IF
cb_query.PostEvent(Clicked!)
dw_tjxmxx.Retrieve(is_tjbh, ii_tjcs)
dw_1.Retrieve() --数值改变后,数据窗口进行刷新 Retrieve()检索数据窗口的数据
更改为刷新窗口后跳转到之前的选择值
long ll_r,ll_fnd
ll_r = dw_1.Getrow()
string ls_tjbh_1
long ll_tjcs_1
ls_tjbh_1 = dw_1.Getitemstring(ll_r , "tjbh")
ll_tjcs_1 = dw_1.GetItemNumber(ll_r , "tjcs")
.........
dw_1.Retrieve()
ll_fnd = dw_1.find("tjbh = '"+ ls_tjbh_1 +"' and tjcs = "+ string(ll_tjcs_1) , 1 , dw_1.rowcount())
if ll_fnd > 0 then
dw_1.post ScrollToRow(ll_fnd)
dw_1.post selectrow(ll_fnd,true)
end if
b
导出数据窗口为Excel格式
// 数据窗口导出为excel
int li_rc
string ls_path
string ls_file
string ls_currentdir
long ll_rowcount
long ll_colcount
time lt_1, lt_2
Integer li_ret = 1
if dw_4.rowcount() = 0 then
messagebox('导出操作中止','导出人员清单为空!',Exclamation!)
return
end if
dw_13.settransobject(sqlca)
dw_13.retrieve()
if dw_13.rowcount()=0 then dw_13.insertrow(0)
dw_13.reset()
dw_4.RowsCopy(1, dw_4.RowCount(), Primary!, dw_13, 1, Primary!)
dw_13.setfilter("sfbz = '1'")
dw_13.filter()
if dw_13.rowcount() = 0 then
messagebox('导出操作中止','请选择需要导出的人员!',Exclamation!)
return
end if
///////判断是否为正式用户
////if gs_register = 'N' then
//// messagebox('导出操作中止','您目前使用的是试用版,在成为正式用户~r~n~r~n并进行加密狗注册后,您才可以使用此功能!',Exclamation!)
//// return
////end if
//////检测加密狗是否正常
////gf_check_jmg()
//
//====================================================================
// 支持导出excel和word,保存对话框弹出后确保默认路径变为当前路径
//====================================================================
ls_currentdir = getcurrentdirectory()
li_rc = GetFileSaveName("选择文件", is_path, ls_file, "XLS", &
"Excel Files (*.xls),*.xls,")
changedirectory(ls_currentdir)
if li_rc <> 1 then
return
end if
n_excel_parm lnvo_parm
//建立参数对象,调用gf_dw_to_excel_parm
lnvo_parm = Create n_excel_parm
lnvo_parm.ib_detail = true
lnvo_parm.ib_footer = true
lnvo_parm.ib_group_header = true
lnvo_parm.ib_group_trailer = true
lnvo_parm.ib_header = true
lnvo_parm.ib_show_progress = true
lnvo_parm.ib_summary = true
lnvo_parm.ib_prompt_openfile = true
li_ret = gf_dw_to_excel_parm_1(dw_13, is_path, lnvo_parm)
destroy lnvo_parm
3
单位显示不全,将编号换成名称,换行显示
select a.dwbh,a.tjbh,a.xm,a.xb,a.sfzh,a.hyzk,b.zgl,b.jhgl,b.dhzl,tjbhtm = '*' + Ltrim(a.tjbh) + '*' ,b.zglnew,b.jhglnew
from tj_tjdjb a,TJ_DWTJYDDJB_ZYB b where a.yybh = b.yybh and a.tjbh =:as_tjbh and a.tjcs =:ai_tjcs
select a.dwbh,a.tjbh,a.xm,a.xb,a.sfzh,a.hyzk,b.zgl,b.jhgl,b.dhzl,tjbhtm = '*' + Ltrim(a.tjbh) + '*' ,b.zglnew,b.jhglnew,c.mc
from futian_user.tj_tjdjb a,futian_user.TJ_DWTJYDDJB_ZYB b,futian_user.HYDWDMB c
where a.yybh = b.yybh and a.tjbh =:as_tjbh and a.tjcs =:ai_tjcs
and c.bh=a.dwbh
4
加日期,检索条件更改
SELECT TJ_TJDJB.TJBH,
TJ_TJDJB.TJCS,
TJ_TJDJB.XM,
TJ_TJDJB.XB,
TJ_TJDJB.CSNYR,
left(TJ_TJDJB.DWBH,4) as DWBH,
case len(TJ_TJDJB.DWBH) when 4 then '' else TJ_TJDJB.DWBH end as BMBH,
TJ_TJDJB.TJRQ,
TJ_TJDJB.DJRQ,
TJ_TJDJB.DJRY,
TJ_TJDJB.JCRQ,
TJ_TJDJB.JCYS,
TJ_TJDJB.GDRQ,
TJ_TJDJB.GDYS,
CHAR(9)+TJ_TJDJB.SFZH AS SFZH,
TJ_TJDJB.DJLSH,
TJ_TJDJB.SUMOVER,
TJ_TJDJB.DYCS,
TJ_TJDJB.DYRQ,
TJ_TJDJB.JSFS,
TJ_TJDJB.FZBH,
TJ_TJDJB.RYLB,
TJ_TJDJB.PHONE,
TJ_TJDJB.TJBGFFBZ,
TJ_TJDJB.TJBGFFRQ ,
TJ_TJDJB.MOBILE,
TJ_TJDJB.NL,
TJ_TJDJB.DYCS,
'0' as SELECTED,
TJ_TJDJB.DJRY,
TJ_TJDJB.YDJBZ,
max(TJ_TJJLB.YDTJRQ) YDTJRQ --记录表的预约日期
FROM TJ_TJDJB
JOIN TJ_TJJLB ON TJ_TJDJB.TJBH = TJ_TJJLB.TJBH AND TJ_TJDJB.TJCS = TJ_TJJLB.TJCS
GROUP BY TJ_TJDJB.TJBH,TJ_TJDJB.TJCS,TJ_TJDJB.XM,TJ_TJDJB.XB,TJ_TJDJB.CSNYR,TJ_TJDJB.DWBH,TJ_TJDJB.TJRQ,
TJ_TJDJB.DJRQ,TJ_TJDJB.DJRY,TJ_TJDJB.JCRQ,TJ_TJDJB.JCYS,TJ_TJDJB.GDRQ,TJ_TJDJB.GDYS,TJ_TJDJB.SFZH,
TJ_TJDJB.DJLSH,TJ_TJDJB.SUMOVER,TJ_TJDJB.DYCS,TJ_TJDJB.DYRQ,TJ_TJDJB.JSFS,TJ_TJDJB.FZBH,TJ_TJDJB.RYLB,
TJ_TJDJB.PHONE,TJ_TJDJB.TJBGFFBZ,TJ_TJDJB.TJBGFFRQ,TJ_TJDJB.MOBILE,TJ_TJDJB.NL,TJ_TJDJB.DYCS,TJ_TJDJB.DJRY,
TJ_TJDJB.YDJBZ
string ls_sql_new, ls_select, ls_where,ls_group
long ll_pos,ll_post,ll_len
//取SELECT部分
ls_select = adw_source.getsqlselect()
ll_pos = pos(ls_select, 'WHERE')
if ll_pos > 0 then
ls_select = left(ls_select, ll_pos - 1)
end if
//pcy 09-11
ll_post = pos(ls_select, 'GROUP BY')
ll_len = len(ls_select)
if ll_len > 0 then
ls_group = right(ls_select, ll_len - ll_post +1)
end if
if ll_post > 0 then
ls_select = left(ls_select, ll_post - 1)
end if
//=========================================================================
// 组合新的SQL语句
//=========================================================================
if len(trim(ls_where)) > 0 then //存在WHERE赋值条件
if len(trim(as_where)) > 0 then //存在固定WHERE条件
ls_sql_new = ls_select + as_where + ls_where + ls_group
else //不存在固定条件
ls_sql_new = ls_select + ' WHERE ' + right(ls_where, len(ls_where) - 5) + ls_group
end if
else //不存在赋值条件
if len(trim(as_where)) > 0 then //存在固定WHERE条件
ls_sql_new = ls_select + as_where + ls_group
else //不存在固定条件
ls_sql_new = ls_select + ls_group
end if
end if
return ls_sql_new
dw_main.dataobject = "dw_cx_tjbgcx_dq_new"
dw_main.settransobject(sqlca)
dw_main.SetRedraw(False)
dw_main.Reset()
li_arrycnt = upperbound(invo_qc.is_dwbh[])
//=========================================================================
// [Script - wf_query ( ) ]
// [原 因] 优化检索
//=========================================================================
string ls_sqlsyntax,ls_where
ls_where = ""
FOR li_start = 1 TO li_arrycnt
ls_sqlsyntax = wf_get_sqlsyntax(dw_main, ls_where, li_start)
if dw_main.setsqlselect(ls_sqlsyntax) <> 1 then
messagebox('错误','SETSQLSELECT错误')
end if
ll_rowcnt = dw_main.Retrieve()
ls_sqlsyntax = wf_get_sqlsyntax(dw_preview, ls_where, li_start)
if dw_preview.setsqlselect(ls_sqlsyntax) <> 1 then
messagebox('错误','SETSQLSELECT错误')
end if
dw_preview.retrieve()
NEXT
Left()
功能得到字符串左部指定个数的字符。
语法Left ( string, n )
参数string:string类型,指定要提取子串的字符串n:long类型,指定子串长度返回值String。函数执行成功时返回string字符串左边n个字符,发生错误时返回空字符串("")。如果任何参数的值为NULL,Left()函数返回NULL。如果n的值大于string字符串的长度,那么Left()函数返回整个string字符串,但并不增加其它字符。
LeftTrim()
功能返回指定字符串删除了左部空格后的字符串。
语法LeftTrim ( string )
参数string:string类型,指定要删除左部空格的字符串返回值String。函数执行成功时返回删除了string字符串左部空格的字符串,发生错误时返回空字符串("")。如果任何参数的值为NULL,LeftTrim()函数返回NULL。
Len()
功能得到字符串的长度。
语法Len (string)
参数string:string类型变量返回值Long。函数执行成功时返回字符串的长度,发生错误时返回-1。如果任何参数的值为NULL,则Len()函数返回NULL。
Post()
功能将指定消息加入到某个窗口的消息队列中,这个窗口既可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。
语法Post( handle, messageno, word, long )
参数handle:long类型,指定窗口的系统句柄,将向该窗口邮寄消息messageno:UnsignedInteger类型,指定要邮寄的消息号 word:long类型,指定与消息一起邮寄的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起邮寄的long型参数值或字符串返回值Boolean。如果任何参数的值为NULL,Post()函数返回NULL。
用法Post()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。这一点与Send()函数不同,Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Post()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。如果应用程序要邮寄PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用PostEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Post()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。
if row > 0 then
this.selectrow(0,false)
this.SelectRow(row,true)
end if
//高亮显示选中行