tbwshc

tbw

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

常用链接

留言簿(4)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

#

dw_1.find()求符合条件的数据记录,高手帮忙看下
取值条件:
工号= MZGHYYDJ.DJRY
姓名= MZGHYYDJ.DJRYXM
总预约数量=MZGHYYDJ 的记录数
有效预约数量=MZGHYYDJ.ZFRY IS NULL 的记录数
已取号数量= MZGHYYDJ.ZFRY IS NULL AND MZGHYYDJ.MZH IS NOT NUL

代码:
For ll_i = 1 to ids_fdmcb.rowcount( )
ls_userbz = ids_fdmcb.object.userbz[ll_i] + '.'
ls_sql = " SELECT A.DJRY,A.DJRYXM,isnull(A.ZFRY,''), isnull(A.MZH,'')"
ls_sql += " FROM "+ls_userbz+"MZGHYYDJ A "
ls_sql += " GROUP BY A.DJRY ,A.DJRYXM"

DECLARE c1 DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :ls_sql;
OPEN DYNAMIC c1 USING :lde_minno,:lde_maxno;
do while true 
fetch c1 into :ls_djry,:ls_djryxm,:lde_zfry,:lde_mzh ;
if sqlca.sqlcode<>0 then
exit;
end if
ll_row = dw_1.find(" djry ='"+ls_djry+"' ",1, dw_1.rowcount( ) )
ll_row1 = dw_1.find(" djry ='"+ls_djry+"' AND zfry='' ",1, dw_1.rowcount( ) )
ll_row2 = dw_1.find(" djry ='"+ls_djry+"' AND zfry='' AND mzh<>'' ",1, dw_1.rowcount( ) )
If ll_row <= 0 then
ll_row = dw_1.insertrow(0)
dw_1.object.djry[ll_row] = ls_djry
dw_1.object.djryxm[ll_row] = ls_djryxm
End If
dw_1.object.zyy[ll_row] = dw_1.object.zyy[ll_row] + 1
dw_1.object.yxyy[ll_row1] = dw_1.object.yxyy[ll_row1] + 1
dw_1.object.yqh[ll_row2] = dw_1.object.yqh[ll_row2] + 1
loop;
close c1;
Next

------解决方案--------------------------------------------------------
太混乱了.
------解决方案--------------------------------------------------------
没看明白
------解决方案--------------------------------------------------------
每个人的解题思路都不太一样,理解别人思路有时候比自己写还难

本身你交待的问题不够明确,要想实现的目的也没有明确,一般是不愿意也没时间去仔细分析的

最好你把要求、目的和遇到的问题写清楚,这样别人也容易帮忙

有时候你在标明语句的用途时,tb自己就能找出问题的所在
------解决方案--------------------------------------------------------
dw_1.object.zyy[ll_row] = dw_1.object.zyy[ll_row] + 1

这种写法,在多人并行运行的时候会出现问题的
------解决方案--------------------------------------------------------
自己的业务逻辑思路没想好。
------解决方案--------------------------------------------------------
工号= MZGHYYDJ.DJRY
姓名= MZGHYYDJ.DJRYXM
总预约数量=MZGHYYDJ 的记录数
有效预约数量=MZGHYYDJ.ZFRY IS NULL 的记录数
已取号数量= MZGHYYDJ.ZFRY IS NULL AND MZGHYYDJ.MZH IS NOT NUL


楼主 到底想干嘛。。。看的糊里糊涂啊。。。

如果只是需要查询 上面 这些 数据。。那从 sql 里面直接查询不就是了??算法你基本已明确了。。。
干嘛 在 那里 绕圈。。。又是游标 又是 dw的。。。。

如果你想实现 查询每个员工的 工号,姓名,总预约数量,有效预约数量,已取号数量 就使用子查询。。在 sql里面。。。

select a.工号,a.姓名,a.总预约数量,b.有效预约数量,c.已取号数量
from 
(select MZGHYYDJ.DJRY 工号,MZGHYYDJ.DJRYXM 姓名,count(*) 总预约数量
from MZGHYYDJ
group by DJRY,DJRYXM) a
 left join 
(select MZGHYYDJ.DJRY 工号,MZGHYYDJ.DJRYXM 姓名,count(*) 有效预约数量
from MZGHYYDJ
and MZGHYYDJ.ZFRY IS NULL
group by DJRY,DJRYXM) b
on a.DJRY=b.DJRY and a.DJRYXM=b.DJRYXM
 left join 
(select MZGHYYDJ.DJRY 工号,MZGHYYDJ.DJRYXM 姓名,count(*) 已取号数量
from MZGHYYDJ
and MZGHYYDJ.ZFRY IS NULL AND MZGHYYDJ.MZH IS NOT NUL
group by DJRY,DJRYXM) c
on a.DJRY=c.DJRY and a.DJRYXM=c.DJRYXM


------解决方案--------------------------------------------------------
确实没看明白。。加点注释吧。。
posted @ 2012-09-08 13:34 tbwshc 阅读(419) | 评论 (0)编辑 收藏

PB9.0 通过http协议以POST方式将XML发送到协议服务器
最近接触了银企互联系统,现在需要将生成的xml发送至服务器。
我查看了pb的帮助文件,posturl可以实现该功能,但是pb提供的例子我有点看不懂,
哪位大侠帮忙解释解释。最好有个实例对照。

servicereference.PostURL ( urlname, urldata, headers, {serverport, } data )

Argument Description
servicereference Reference to the Internet service instance.
urlname String specifying the URL to post.
urldata Blob specifying arguments to the URL specified by urlname.
headers String specifying HTML headers. In Netscape, a newline (~n) is required after 
  each HTTP header and a final newline after all headers.
serverport (optional) Specifies the server port number for the request. The default value 
  for this argument is 0, which means that the port number is determined by the system 
  (port 80 for HTTP requests).
data InternetResult instance into which the function returns HTML.

主要问题提就是那个headers是干嘛用的,data又是怎么回事?


工行的开发手册是这么说的
企业按照工行提供的xml包格式进行打包,在局域网内通过http协议以POST方式将交易包发送到NetSafe Client的安全http协议服务器。
http请求格式:action=”http://客户端NetSafe Client的地址和加密端口号/servlet/ICBCCMPAPIReqServlet?userID=证书ID&PackageID=包序列ID &SendTime=请求时间” 
请求数据格式(post方式):Version=版本号(区分版本时间,暂定0.0.0.1) &TransCode=交易代码(区分交易类型,每个交易固定)&BankCode=客户的归属单位&GroupCIS=客户的归属编码&ID=客户的证书ID(无证书客户可空)&PackageID=客户的指令包序列号(由客户ERP系统产生,不可重复)&Cert=客户的证书公钥信息(进行BASE64编码;NC客户送空) &reqData=客户的xml请求数据

蓝字标出的部分应该是放到posturl参数的那一部分?


------解决方案--------------------------------------------------------
用这种方式来发送数据

OLEObject dom, http
String Http_Name,result
  
Http_Name = "http://... "
  
dom = CREATE OLEObject
http = CREATE OLEObject
//messagebox调试看是否成功
messagebox( 'http ',http.ConnectToNewObject( "Msxml2.XMLHTTP "))
messagebox( 'dom ',dom.ConnectToNewObject( "Msxml2.DOMDocument "))
  
dom.Load( "c:\xxx.xml ")
http.Open( "POST ", Http_Name, TRUE)
http.Send(dom.xml)
do While http.readyState <> 4 // ' 查询状态,延时
yield()
Loop
  
result = http.responseText //这个测试用! 你可不写
messagebox( 'resultb ',result)
------解决方案--------------------------------------------------------
Blob lblb_args
String ls_header
String ls_url
String ls_args
long ll_length
integer li_rc

inet iinet_base,iinet
//internetresult ir
 iinet_base = create inet
 iinet = create inet

li_rc = GetContextService( "Internet", iinet_base )

IF li_rc = 1 THEN

ir = CREATE n_cst_internet

ls_url = "http://xxx.com/getinfo.asp?"

ls_args = "var1=tr&var2=tttt&var3=&var4=r&var5=&var6=&var7=tttt&var8=&var9=&var10=ttt&var11="

lblb_args = Blob( ls_args )

ll_length = Len( lblb_args )

ls_header = "Content-Type: " + &
"application/x-www-form-urlencoded~n" + &
"Content-Length: " + String( ll_length ) + "~n~n"

li_rc = iinet.PostURL( ls_url, lblb_args, ls_header, ir )

messagebox('',string(li_rc))

END IF

integer li_filenum
li_filenum = fileopen('c:\1.html',textmode!,write!,shared!,replace!,encodingUTF8!)
filewriteex(li_filenum,ir.is_data)
fileclose(li_filenum)


ole_1.object.navigate('c:\1.html')

destroy iinet_base
destroy iinet
destroy ir



ir 建个internetresult的standard class n_interresult作为接收返回值
posted @ 2012-09-08 13:33 tbwshc 阅读(3407) | 评论 (0)编辑 收藏

散分大行动开始了
如题

------解决方案--------------------------------------------------------

沙发
我先看到
呵呵
------解决方案--------------------------------------------------------
这么点
------解决方案--------------------------------------------------------

------解决方案--------------------------------------------------------
真不忍心捡,但LZ 又是大行动...
------解决方案--------------------------------------------------------
好大的散分行动啊
------解决方案--------------------------------------------------------
配合一下这次行动
------解决方案--------------------------------------------------------
行动真的不小,支持一下
------解决方案--------------------------------------------------------
配合一下
------解决方案--------------------------------------------------------
jiefen```
------解决方案--------------------------------------------------------
我不嫌分少,捡了!呵呵
------解决方案--------------------------------------------------------
JFJFJF
------解决方案--------------------------------------------------------
接分~~
------解决方案--------------------------------------------------------
怎么捡啊
------解决方案--------------------------------------------------------
jiefen!!!!!!!!!!!!!!!!!!!!
------解决方案--------------------------------------------------------
好大大大大大啊
------解决方案--------------------------------------------------------
有炒作嫌疑。
------解决方案--------------------------------------------------------
支持楼主。
------解决方案--------------------------------------------------------
ddddddasd接分
------解决方案--------------------------------------------------------
揭竿而起。。
------解决方案--------------------------------------------------------
呵呵,真是“大”行动!
------解决方案--------------------------------------------------------
大行動.....
------解决方案--------------------------------------------------------
有炒作嫌疑。
------解决方案--------------------------------------------------------
有炒作tb嫌疑。
------解决方案--------------------------------------------------------
虚虚,,,,,,,
------解决方案--------------------------------------------------------
接分大行动ing。。。
------解决方案--------------------------------------------------------
jiefen
------解决方案--------------------------------------------------------
对于我来说,确实是大行动了。。。
------解决方案--------------------------------------------------------
谢谢啦!
posted @ 2012-09-08 13:23 tbwshc| 编辑 收藏

变量中的拼音和汉字怎样区别?
由sle_1.text输入的字符如何区别是拼音还是汉字?

------解决方案--------------------------------------------------------
pb9 的话,可以asc(sle_1.text)如果大于127,就是汉字. 或者判断sle_1.text是否在字母a到z之间,如是则是拼音.
------解决方案--------------------------------------------------------
如果用pb8的话,可以这么判断

string ls_data
ls_data = sle_1.text

if len(ls_data) = lenw(ls_data) then
messagebox('', '全是英文字符')
else
messagebox('', '非全英文字符')
end if


如果是pb9以上版本,可以考虑以下代码
string ls_data、tb
ls_data = sle_1.text

if len(ls_data) = lena(ls_data) then
messagebox('', '全是英文字符')
else
messagebox('', '非全英文字符')
end if
posted @ 2012-09-01 14:27 tbwshc| 编辑 收藏

如何 让 数据窗体与窗体的上下左右的 值 全部固定
请问如何powerbuilder 中的 窗体变大的同时 数据窗体也变大,是不是让数据窗体 与 窗体的上下左右的 值 全部固定就行啦? 上是 X,左是 Y 可以固定 那下边和右边怎么固定啊 我刚接触pb没多长时间 请大家帮忙 谢谢

------解决方案--------------------------------------------------------
在窗口的resize事件写


dw_1.width = ....
dw_1.height =....
------解决方案--------------------------------------------------------
resize这种事情,实际开发时一般是由开发框架来完成的。但是如果只是你自己写个小程序,就只能自己控制了,像楼上说的那样
------解决方案--------------------------------------------------------
试试
Java code
dw_1.width = newwidth - 100
dw_1.height = newheight - 50

------解决方案--------------------------------------------------------
//Event Name: resize
//記錄左上角位置
long tb,ll_x,ll_y
ll_x=dw_1.x
ll_y=dw_1.y
//將dw_1長寬拉大,使其上下距離相同,左右的距離相
dw_1.height=height - ll_x - ll_y
dw_1.width=newwidth - 2*ll_x
posted @ 2012-09-01 14:26 tbwshc 阅读(1117) | 评论 (0)编辑 收藏

setfilter引号问题
string ls_ksmc
long ll_row
string ls_atb

ll_row = dw_2.getrow()
ls_ksmc = dw_2.getitemstring(ll_row,'bmbm')
ls_a = "sb_mxb.bmbm = ls_ksmc"
dw_1.setfilter(ls_a)
dw_1.filter()

从dw_2中得到字段bmbm,通过bmbm检索dw_1的数据,结果报错“expression is not valid”怎么改setfilter的引号啊,各位高手指点

------解决方案--------------------------------------------------------
ls_atb = "sb_mxb.bmbm = 'ls_ksmc'"

------解决方案--------------------------------------------------------
应该是这样写:ls_a = "sb_mxb.bmbm = '"+ls_ksmc+"'"

------解决方案--------------------------------------------------------
探讨
应该是这样写:ls_a = "sb_mxb.bmbm = '"+ls_ksmc+"'"

------解决方案--------------------------------------------------------
string ls_ksmc
long ll_row
string ls_a

ll_row = dw_2.getrow()
ls_ksmc = dw_2.getitemstring(ll_row,'bmbm')
ls_a = "sb_mxb_bmbm = '" + ls_ksmc + "'"
dw_1.setfilter(ls_a)
dw_1.filter()

------解决方案--------------------------------------------------------
或者这样试试

string ls_ksmc
long ll_row
string ls_a

ll_row = dw_2.getrow()
ls_ksmc = dw_2.getitemstring(ll_row,'bmbm')
ls_a = "bmbm = '" + ls_ksmc + "'"
dw_1.setfilter(ls_a)
dw_1.filter()

------解决方案--------------------------------------------------------
1.bmbm是不是字符型的,如不是请转成字符型,函数string()
2.dw_1有没有retrieve,没有retrieve就没有数据过滤了
------解决方案--------------------------------------------------------
看下是不是引号写错了
------解决方案--------------------------------------------------------
只要列的值不需要表的值看看
------解决方案--------------------------------------------------------
要不然你不要带参数进去,直接就来个具体的值看看。
------解决方案--------------------------------------------------------
dw_result.setfilter("bmbm = '"+ls_ksmc+"'")
posted @ 2012-09-01 14:25 tbwshc| 编辑 收藏

这种动态sql可以执行吗?其中有个函数要对列值进行操作
declare emp_cur cursor for  
select mingwen 
from md5info 
where MDString(md5jiami1 + :sle_1.text,len(md5jiami1 + :sle_1.text))=:a;

open emp_cur;
fetch emp_cur into :b;
close emp_cur;

MDString是在程序中定义的一个函数,md5jiami1是表中的一列,这样写无法正确执行,如何修改才能正确执行?问题就出在MDString是一个程序中的函数,sqlserver无法识别。

------解决方案--------------------------------------------------------
建立个数据窗口吧

select mingwen from md5info ;

dw_1.setfilter("MDString(md5jiami1 + '"+sle_1.text+"',len(md5jiami1 + '"+sle_1.text+"'))='"+a+"'")
dw_1.retrieve()
------解决方案--------------------------------------------------------
尝试用存储过程实现。
------解决方案--------------------------------------------------------
第一: 游标 这东西 尽量 少用 无论在 pb里面还是 数据库里面
第二: 应该 从数据库里面查询 变形后的密码字段。。而不是现场计算。。
 一般是
 保存:明文-密文-保存
 查询:查询密文 得到 用户
很少 像楼主这样操作。。。性能、、可靠性 全差很多。。。

楼主既然已经知道 pb的函数 在 sql 里面 无法执行。。那还要 继续 这样做 。。为啥??呵呵
------解决方案--------------------------------------------------------
探讨
declare emp_cur cursor for
select mingwen
from md5info
where MDString(md5jiami1 + :sle_1.text,len(md5jiami1 + :sle_1.text))=:a;

open emp_cur;
fetch emp_cur into :b;
close emp_cur;

MDStr……

------解决方案--------------------------------------------------------
再次读了下楼主的帖子,发现 楼主 目标好像是从一个很大的用户表中查找 密码是 指定 值(:a)的用户来。。。而算法代码在dll中,叫 【MDString】 函数

如果 MDString 的算法可以在 sql中实现,那么在sql中 增加 函数 MDString ,就可以在sql语句中直接调用了,
否则。。简单来说有2种方式解决此问题
1 读取所有数据,然后 全部用MDString计算下,然后将计算的结果保存到 md5info 表里面(可以增加一个【新密文】字段)
2 读取所有数据,然后 就地计算 MDString,然后 立刻判断是否符合条件
可以利用 yejihui9527 的回复做少量修改就可以使用了


string ls_string
string ls_init_a //这里保存需要核对的目标:a
string ls_b
declare emp_cur cursor for
select md5jiami1,mingwen
from md5info;
open emp_cur;
while sqlca.sqlcode = 0
fetch emp_cur into :ls_a,:b;
ls_string = MDString(ls_a + sle_1.text,len(ls_a + sle_1.text))
if ls_string = ls_init_a then
ls_b = b
end if
loop
close emp_cur;

注意:
fetch emp_cur into :ls_a,:b; 必须在 循环体内执行。。不能在循环体外执行。。。否则只能执行一次。。这好像不符合要求
ls_b = b 语句得到了 mingwen 字段的值,但没有后续处理代码,如果得到一个就可以了,那么这里必须增加退出循环的代码 如 【exit】,如果每一个符合要求的记录全要找出来,那么这里需要增加 一个数组或者dw或则其他什么东西保存 mingwen 字段的值然后 在这段代码结束后,再来处理这个结果集

整个代码很奇怪。。。好像在找一个拥有相同密码的明文??在猜密码???仔细看了看,。,。。真在破解啊。。。呵呵。。。楼主在做坏事???嘎嘎。。。
  
mingwen 存放的是明文,,?
md5jiami1 存放的是md5计算后变形的密文
MDString 是将密文解密的函数??还是 个加密函数??如果是加密函数,,tb则应该对明文进行处理。。。呵呵。。

------解决方案--------------------------------------------------------
探讨

整个代码很奇怪。。。好像在找一个拥有相同密码的明文??在猜密码???仔细看了看,。,。。真在破解啊。。。呵呵。。。楼主在做坏事???嘎嘎。。。
posted @ 2012-09-01 14:24 tbwshc| 编辑 收藏

请教dw字段datetime型输入错误问题
我的dw有一datetime字段rq,如rq输入有错误,焦点改变或保存时系统提示该字段不能通过有效性验证,怎样用代码屏蔽系统提示,还有在什么事件写我自己的代码,messagebox("提示","日期输入有误,请重新输入!"),然后焦点回到该日期字段上。谢谢

------解决方案--------------------------------------------------------
itemchanged事件.
------解决方案--------------------------------------------------------
促发顺序:
EditChanged 用户在编辑控件中每编辑一次便触发该事件
ItemChanged 当一个单元被修改和失焦点时触发该事件
ltemFocusChanged 当列的焦点发生变化时触发该事件

如果这三个事件报错促发ItemError
如果在ItemChanged事件中设置了行为/返回代码1,则DataWindow控件拒绝接受数据且不允许焦点发生变化

//报错处理
ItemError 当新的数据不满足列的要求时触tb发该事件

posted @ 2012-08-25 12:20 tbwshc| 编辑 收藏

filter的时间过滤问题
ls_filter=ls_filter+" and to_Date(h.enddate,'yyyymmdd h24:mi:ss')>=to_date(sysdate,'yyyymmdd h24:mi:ss')"

运行的时候提示:
')'expected to close expression after function

但是好像不缺右括号啊

------解决方案--------------------------------------------------------
ls_filter=ls_filter+" and string(h.enddate,'yyyymmdd h24:mi:ss')>=string(sysdate,'yyyymmdd h24:mi:ss')"


用setfilter过滤时间我一般都是这样过滤的: 
ls_filtber = "string(h.enddate,'yyyymmdd h24:mi:ss') >= '"+string(sysdate,'yyyymmdd h24:mi:ss')+"'"
dw_1.setfilter(ls_filter)
dw_1.filter()
posted @ 2012-08-25 12:19 tbwshc| 编辑 收藏

如何 让 数据窗体与窗体的上下左右的 值 全部固定
请问如何powerbuilder 中的 窗体变大的同时 数据窗体也变大,是不是让数据窗体 与 窗体的上下左右的 值 全部固定就行啦? 上是 X,左是 Y 可以固定 那下边和右边怎么固定啊 我刚接触pb没多长时间 请大家帮忙 谢谢

------解决方案--------------------------------------------------------
在窗口的resize事件写


dw_1.width = ....
dw_1.height =....
------解决方案--------------------------------------------------------
resize这种事情,实际开发时一般是由开发框架来完成的。但是如果只是你自己写个小程序,就只能自己控制了,像楼上说的那样
------解决方案--------------------------------------------------------
试试
Java code
dw_1.width = newwidth - 100
dw_1.height = newheight - 50

------解决方案--------------------------------------------------------
//tbEvent Name: resize
//記錄左上角位置
long ll_x,ll_y
ll_x=dw_1.x
ll_y=dw_1.y
//將dw_1長寬拉大,使其上下距離相同,左右的距離相
dw_1.height=height - ll_x - ll_y
dw_1.width=newwidth - 2*ll_x
posted @ 2012-08-25 12:18 tbwshc| 编辑 收藏

仅列出标题
共10页: 1 2 3 4 5 6 7 8 9 Last