| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 534 人关注过本帖
标题:表单自定义属性内容为很长的语句,比如SQL代码,时,获取字段属性是为乱码
只看楼主 加入收藏
easyppt
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:294
专家分:632
注 册:2021-11-24
结帖率:100%
收藏
 问题点数:0 回复次数:6 
表单自定义属性内容为很长的语句,比如SQL代码,时,获取字段属性是为乱码
图片附件: 游客没有浏览图片的权限,请 登录注册


请看图,这是一个表单,通过打开 use 表单.scx  然后 browse 发现这个属性的内容不能正常读取? 有办法解决吗?

我的理解:
1、VFP的自定义属性可以填写长字符串(带回车换行符都可以),典型的如CA类的 selectcmd,可以写很长的SQL语句。
2、截图里属性【_创建表sql】内容 实际是:
select y3,y2,bumen.b1,bumen.b5,zzjg.j1,yonghu.nid
from yonghu
left join zzjg on zzjg.nid=yonghu.y1
left join yhbm on yhbm.yonghu_nid=yonghu.nid AND yhbm.yb3=1
left join sysfzsx sx2 on sx2.nid=yhbm.yb1
left join bumen on bumen.nid=yhbm.bumen_nid
where y22='*' and y25=''
order by bumen.bh,sx2.sj3

正常表单中查看正常,但打开表单【use 表单.scx】查看源码时,这种长字符就有乱码情况,截图中 297估计是长度标识,不知道VFP是怎么读取的? 有谁研究过吗,如何正确读取这个属性的 值呢?

场景:我是想把 form转PRG 但碰到这个属性,取值出了问题。

附件表单:aa,我创建了一个自定义属性test,内容为SQL代码,问题一样,方便大家测试。
aa.rar (867 Bytes)

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2023-6-3 16:40编辑过]

搜索更多相关主题的帖子: 表单 自定义 属性 内容 SQL 
2023-06-03 16:32
shizi0
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:128
专家分:402
注 册:2012-10-2
收藏
得分:0 
去掉换行试试
2023-06-03 17:42
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1088
专家分:2677
注 册:2015-12-30
收藏
得分:0 
字段内容保存的时候要转码strconv(SQL代码,13),取出的时候再转回来(14)
2023-06-03 18:14
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:702
专家分:2760
注 册:2018-3-13
收藏
得分:0 
去研究下随带的源码,你要的是这段
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2023-6-3 19:05编辑过]


这家伙很懒,啥也没留下
2023-06-03 18:58
easyppt
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:294
专家分:632
注 册:2021-11-24
收藏
得分:0 
谢谢版主,确实我也发现,这个chr(1) 长度固定 517 +6个空格,后面的数字就是属性值的长度。

browser类,找到了!!

[此贴子已经被作者于2023-6-3 21:15编辑过]

2023-06-03 20:57
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:702
专家分:2760
注 册:2018-3-13
收藏
得分:0 
以下是引用easyppt在2023-6-3 20:57:14的发言:
确实我也发现,这个chr(1) 长度固定 517 +6个空格,后面的数字就是属性值的长度。

你说的随带的源码,是VFP自身的吗,在哪里可以看到啊


1. 从解析代码可以看到,chr(1) 是固定 517,长度部分为固定8个字符!6个空格的理解不对,如果长度不为3位数,就不会是5个空格,总之是 padl(长度值,8)
2. 帮助文件里搜索 xsource 就能找到源码在哪,zip 包中的 browser 就是 class browser 的源码。另外,难道你不知道 vfp 自带 scx/vcx > prg 的功能吗?所有这些工具都有源码,全部在 xsource.zip 中,先弄懂 vfp 自带的东西,再考虑要不要造轮子

这家伙很懒,啥也没留下
2023-06-03 21:17
easyppt
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:294
专家分:632
注 册:2021-11-24
收藏
得分:0 
单纯的调用过程getproperty(稍微改造) 发现不能取出正确的值,需要调整里面的函数为双字节的才可以, 但奇怪的是 类浏览器里生成的结果又是正确的。
不管怎么说,原理已经知道了,自己改造一下。

源代码还是很有参考价值的,谢谢版主!



[此贴子已经被作者于2023-6-3 23:59编辑过]

2023-06-03 23:57
快速回复:表单自定义属性内容为很长的语句,比如SQL代码,时,获取字段属性是为 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028899 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved