注册 登录
编程论坛 VFP论坛

数据对比

ljlhpop 发布于 2022-06-19 17:17, 3548 次点击
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

各位老师傅好,,
如图,,有2列数据,,要相互对比,,,想要实现,,左右相同的用线连接起来。。。这个可否实现?
38 回复
#2
吹水佬2022-06-19 18:38
数据1==数据2的在一条记录
#3
ljlhpop2022-06-19 19:26
回复 2楼 吹水佬
小弟不太懂,,请大师赐教
#4
laowan0012022-06-19 20:20
表格没法连线,可以标出相同数字的编号(需要增加两个字段存储编号)
#5
ljlhpop2022-06-19 20:26
回复 4楼 laowan001
那如果是40个数据,,搞到40个LABEL 控件里里面,,2列,,,,  左右LABEL 控件能连线吗?
#6
吹水佬2022-06-19 20:57
以下是引用ljlhpop在2022-6-19 19:26:33的发言:

小弟不太懂,,请大师赐教

先说清楚,这条连线想表达什么?
#7
zhken2022-06-19 22:29
回复 5楼 ljlhpop
思路是:在表单上动态新增相应的表单控件,分左右2边,顺序和表上的一致,从第一个数据开始,查找到相同的数据并标记,此时根据2个标签的TOP位置(相应微调)来生成线条控件即可。没找到相同数据就不生成。依次类推。比较简单。但需耗一点时间
#8
星光悠蓝2022-06-20 10:34
如果相同数据不是太多,能不能用颜色进行配对
#9
ljlhpop2022-06-20 19:03
回复 6楼 吹水佬
是这样的,,,小弟在鞋厂流水线上班,,,,简单点说,想实现目视化顺序流。。。

比如左列的数据是代表设备1完成的鞋面,,,,,15分钟后(大概时间),,,这些鞋面流到 设备2 加工,(右列的数据代表设备2),, 有时候会乱序,,,所以想用电脑上做个小软件,,用左右列数据,, 连连看,,,如果都是平行,说明顺序没乱。。很OK

反正,,乱序,,,说明存在问题,,需要进一步查明。
#10
ljlhpop2022-06-20 19:04
回复 7楼 zhken
今天也想到这个。。。用LINE 来画线,,不过请问怎么查询LABEL 或者TEXTBOX 空间的坐标?
#11
ljlhpop2022-06-20 19:05
回复 8楼 星光悠蓝
不行哦,,,刚上面有说了理由。。。。。一天几千双产品,,关键是要实现顺序流。。。。。颜色相同看不出顺序。。。。
#12
吹水佬2022-06-20 20:53
回复 9楼 ljlhpop
应该不是真要画连线,也不可能,数据记录多到爆屏怎么连线看。
放在一行用序号表达右否
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-6-20 20:56编辑过]

#13
zhken2022-06-20 21:44
大概是这样子吧

 
只有本站会员才能查看附件,请 登录
#14
zhken2022-06-20 21:53
数据少可以在屏幕,数据量大,页面都容不下就没什么意义了,比如第一行与最后一行匹配,线条得拉多长,所以数据几个行使用此法是不现实。或者是用EXCEL来分成左右2组,excel表可以容纳这些数据,不过几千条这些密密麻麻的对角画线似乎不容易看
#15
ljlhpop2022-06-20 22:10
回复 12楼 吹水佬
所以是考虑抽取,,,比如截取某个时间点,向前抓取20只鞋子的数据,,做对比。。。
#16
ljlhpop2022-06-20 22:12
回复 14楼 zhken
考虑是手动选择某个时间点,向后抓取20只鞋子的记录。。。如后比对记录,,对,大概就是您演示的。。。。 不过怎么获取LABEL 的坐标?  用top  和 left 一个一个获取?
#17
ljlhpop2022-06-20 22:24
回复 12楼 吹水佬
用序号表达也不错,,数据量多,用这个,,,,, 不过如果按抽取20个数据的话,用线链接起来,,感觉高大上,,,装B,,,给小白的体验更好。。。
#18
吹水佬2022-06-21 09:04
回复 17楼 ljlhpop
按12楼的数据绘画也可以
两点连线:[(x1,y1),(x2,y2)] == [(x数据1,序号1),(x数据2,序号2)]
可用表单的line方法绘画


[此贴子已经被作者于2022-6-21 09:08编辑过]

#19
mywisdom882022-06-21 09:19
数量多了,可以分页,规定每页画多少个就可以了
#20
ljlhpop2022-06-21 19:43
回复 19楼 mywisdom88
这个估计不行,,比如上页的数据和下页的链接,,不好搞
#21
ljlhpop2022-06-21 19:43
回复 18楼 吹水佬
多谢大师指点
#22
ljlhpop2022-06-21 20:04
回复 18楼 吹水佬
顺便问一一下,,,可否用FOR 循环还是啥的,,批量给控件赋值?

比如现在我是:
select temp
thisform.text1.value=temp.id
select  temp
skip
thisform.text2.value=temp.id
select temp
skip
thisform.text3.value=temp.id
。。。
40个控件这么写麻烦
可否有更好的方法?
#23
吹水佬2022-06-21 21:20
回复 22楼 ljlhpop
可以循环遍历表
scan ... endscan
#24
my23182022-06-21 22:48
当然可以,不要忘了有一个东西叫宏替换
#25
ljlhpop2022-06-22 17:37
回复 23楼 吹水佬
表SCAN,可以理解,不过,怎么循环控件? THISFORM.TEXT1.....
THISFORM.TEXT2
不太明白
#26
ljlhpop2022-06-22 17:37
回复 24楼 my2318
麻烦大师给个范例。。。宏替换一直晕
#27
mywisdom882022-06-22 17:56
以下是引用ljlhpop在2022-6-21 20:04:40的发言:

顺便问一一下,,,可否用FOR 循环还是啥的,,批量给控件赋值?

比如现在我是:
select temp
thisform.text1.value=temp.id
select  temp
skip
thisform.text2.value=temp.id
select temp
skip
thisform.text3.value=temp.id
。。。
40个控件这么写麻烦
可否有更好的方法?

thisform.text1.value =》 thisform.text0001.value ~ thisform.text9999.value
for ii = 1 to 9999
tx = "thisform.text"+ padl(ii,4,"0") + ".value"
?tx
&tx = "你的"
endfor


#28
ljlhpop2022-06-22 19:01
回复 27楼 mywisdom88
老师傅好,,、
问题来了,,,控件拖出来的是 thisform.text1 ...text2...不是text0001 不是text0002 ,,,请问怎么搞?
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#29
laowan0012022-06-22 20:59
for i=1 to 10
    xobj = 'thisform.text'+transforms(i)
    &xobj..value = '内啥啥'
endfor
#30
ljlhpop2022-06-22 21:15
回复 29楼 laowan001
多谢老师傅,,,厚脸皮再问问,,
只有本站会员才能查看附件,请 登录

如何把表1里面ID 字段的数据,一行对应一个,搞到TEXT 框里面?
#31
ljlhpop2022-06-22 21:29
回复 29楼 laowan001
好像可以了,,这样写会不会LOW。。。。请大师指点

USE 表1


    FOR i =1 TO 24
        a="thisform.text"+transform(i)+".value"
        SCAN  FOR RECNO()=i
        &a=表1.id
        ENDSCAN
    ENDFOR

#32
zhken2022-06-22 21:49
这样写也可以

USE 表1
P='1'
DO WHILE .NOT.EOF()
thisform.text&P..value=表1.id
SKIP
P=ALLTRIM(STR(VAL(P)+1))
ENDDO
#33
laowan0012022-06-22 21:50
    USE 表1
    FOR i =1 TO 24
        a="thisform.text"+transform(i)+".value"
        go i
        &a=id
    ENDFOR
#34
ljlhpop2022-06-23 17:57
回复 32楼 zhken
宏还能这么用 ,大开眼界
#35
ljlhpop2022-06-23 17:58
回复 33楼 laowan001
\(^o^)/~,这个写法容易理解
#36
ljlhpop2022-06-23 18:29
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

按小弟的思路,,,左列每个控件定义一个坐标,,中间列定义2个坐标,,右边定义一个坐标。。然后用最笨的方法,左边和中间列的每个控件都用IF ..ELSE 。。。ENDIF 的方法,例如左边第一个控件对应要中间列控件判断10次, 代码容易理解,不就是感觉LOW。请问如何优化?
还一个问题,,,因为是实时生产,打算半分钟刷新一次,,那当前绘制的LINE,如何“擦掉”?便于下次用定时器的时候重新绘制?

#37
吹水佬2022-06-23 19:33
回复 36楼 ljlhpop
表单的cls方法可“擦掉”
#38
ljlhpop2022-06-23 20:17
回复 37楼 吹水佬
多谢吹水老师傅!
#39
talkrobin2022-07-01 19:30
不断学习,上线多看看多学学
1