注册 登录
编程论坛 VFP论坛

求助 CORD39条形码怎样才能保存在自由表的通用型字段中?

chqzhpnggq 发布于 2022-10-13 14:08, 1848 次点击
设想是将自由表中一个字符型字段转换成CORD39的条形码(jpg格式),并保存在同一条记录中的一个通用型字段中以便查询或导出为EXCL表。查看了论坛中有关条形码的讨论,试了很久,发现就是这个jpg格式的图像文件不知道如何命名才能得以保存?原来一直没有涉及过条形码,请各位大能指点,先谢谢了!
18 回复
#2
laowan0012022-10-13 14:18
楼主的问题可以按照保存图片文件的思路考虑
保存时:
xchr = FILETOSTR(图片文件名)
REPLACE 保存图片的字段名 WITH strconv(xchr,13)

读取时:
strtofile(strconv(alltrim(保存图片的字段名),14),图片文件名)

这种保存方式下有个问题,导出的EXCEL文件中并不能直接看到条码图片

另一种方法,用foxbarcode工具,实时输出barcode图片


[此贴子已经被作者于2022-10-13 14:21编辑过]

#3
chqzhpnggq2022-10-13 17:00
回复 2楼 laowan001
谢谢指点!我想用你提供的第二种方式保存,因为用foxbarcord生成的条形码图形比较容易且标准,但就是找不到如何命名使得这个图形的文件名可用,仿照论坛里几个方法总是出错,烦请能提供具体代码。谢谢了。
#4
zhken2022-10-13 22:43
回复 3楼 chqzhpnggq
可以在表单上放一图片控件,再用这个图片的 PICTUREVAL=保存在备注字段的数据流。即可在表单上显示
#5
laowan0012022-10-14 10:31
以下是引用chqzhpnggq在2022-10-13 17:00:42的发言:

谢谢指点!我想用你提供的第二种方式保存,因为用foxbarcord生成的条形码图形比较容易且标准,但就是找不到如何命名使得这个图形的文件名可用,仿照论坛里几个方法总是出错,烦请能提供具体代码。谢谢了。


poFbc = CREATEOBJECT("FoxBarcode")
WITH poFbc
  .cImageType = "JPG"
  .nBarcodeType = 110  && Code 128
  .cSet128 = "B"    &&"Auto" && Set 128 C
  .nImageHeight = 70
  .nFactor = 2
ENDWITH

xfilename = poFbc.barcodeimage('123123',SYS(5)+SYS(2003)+'\'+SYS(2015))
MESSAGEBOX( xfilename)
#6
chqzhpnggq2022-10-14 16:19
回复 5楼 laowan001
谢谢指点!这段代码完美的解决了条形码图片的命名和保存在指定位置的问题,就是图片文件名是随机生成的,不便于查询。根据你提供的思路,我写了一段代码,成功的将生成的条形码存入了名为“条形码”的通用字段中,查看条形码的图像显示的文件名也是随机的,但有生成条码的字符型字段可对应查找。但现在还有不少问题:一是我设
只有本站会员才能查看附件,请 登录
定的CODE39的编码,生成的条形码除了前后的“*”号外,在结尾*号前还有一个随机的字母,不知道我生成的是不是CODE39的条形码?二是如何将表中“条形码”内的图片调出来打印?  附生成条码的代码及数据表。谢谢了!

[此贴子已经被作者于2022-10-14 16:26编辑过]

#7
chqzhpnggq2022-10-14 16:30
由于我是初次涉及条形码相关的内容,所以完全是白丁一个,可能提出的问题有点弱,希望各位大能谅解并不吝赐教谢谢!
#8
laowan0012022-10-14 21:11
poFbc.barcodeimage('123123',SYS(5)+SYS(2003)+'\'+SYS(2015))
这个例子中的文件名是随机的,这里的sys(2015)可以改成你指定的文件名(不含扩展名)

至于把条码图片调出来打印的问题,可分解为两个问题:
(1)怎样把字段中的内容保存为图片,下面这句就是
strtofile(strconv(alltrim(保存图片的字段名),14),图片文件名)
(2)把图片打印出来。既然已经保存为文件了,打印应该不是问题了吧
#9
chqzhpnggq2022-10-15 09:55
回复 8楼 laowan001
好的,我去试一下。谢谢指点!
     已经试过了,strconv(alltrim(保存图片的字段名),14)  这个函数提示“函数参数的值、类型或数目无效”。查了一下,在VFP7.0里就有这个函数,功能是将字符表达式转换成另一种形式,一共有1-8种类型,但主要是字符的字节和地区相关的大小写转换。9.0增加到了16种,其中14是“将 cExpression 中的 base64 编码数据转换为原始的未编码数据。”,感觉应该可用,但就是过不了。

[此贴子已经被作者于2022-10-15 11:21编辑过]

#10
csyx2022-10-15 14:20
不要使用通用型字段!除非你想受虐。保留这种类型的唯一理由是维护旧的应用程序。用 BLOB 或 MEMO
所谓“通用”具有欺骗性,实际上是最不通用的字段类型,存储在其中的文件或图片,没有官方提供的命令或函数准确的将其还原出来。

提示的值、类型或数目无效,估计就是 alltrim(通用型字段名) 引起的
即使去掉 alltrim,函数 strconv 可能也会同样拒绝接受通用型数据

[此贴子已经被作者于2022-10-15 14:34编辑过]

#11
吹水佬2022-10-15 14:25
“通用”不通用了
易入难出,除非有特殊需要。
#12
chqzhpnggq2022-10-15 15:38
回复 10楼 csyx
应该是这个问题,所以一直过不去,谢谢了!BLOD字段是VFP9.0新增的,没有多少介绍。我将图片存入其中,打开看道德是一串字符。
#13
chqzhpnggq2022-10-15 15:55
回复 11楼 吹水佬
版主好!
    我准备帮朋友搞一个产品的检验并根据合格情况生成条形码并保存在电脑中,在另外一台电脑上打印生成的条形码。所以就在表中建了一个条形码的字段(通用型)来存储生成的条形码图片,这一步在几位大能帮助下已经完成了,现在就是如何调出通用字段中的条形码图片来打印还有问题,图片调不出来(进入通用字段内可用浏览并图片显示正常)。原来一直用的VFP6.0,VFP9.0里很多东西都没有摸过,并且6.0也丢了好几年了,算是从头开始,所以正在寻求帮助。
#14
csyx2022-10-15 23:36
不需要导出图片的话,报表中打印通用字段中图片应该不存在问题,
只有本站会员才能查看附件,请 登录
#15
laowan0012022-10-16 08:55
以下是引用chqzhpnggq在2022-10-15 09:55:25的发言:

好的,我去试一下。谢谢指点!
     已经试过了,strconv(alltrim(保存图片的字段名),14)  这个函数提示“函数参数的值、类型或数目无效”。查了一下,在VFP7.0里就有这个函数,功能是将字符表达式转换成另一种形式,一共有1-8种类型,但主要是字符的字节和地区相关的大小写转换。9.0增加到了16种,其中14是“将 cExpression 中的 base64 编码数据转换为原始的未编码数据。”,感觉应该可用,但就是过不了。

(1)用的不是VFP9
(2)“保存图片的字段名”应该换成你的实际字段名,是不是没换
#16
chqzhpnggq2022-10-16 14:15
回复 14楼 csyx
谢谢指点!
我已经试过了,采用这种方法打印预览出来的是通用字段的略缩图表及文件名。
只有本站会员才能查看附件,请 登录
#17
chqzhpnggq2022-10-16 14:20
回复 15楼 laowan001
感谢laowan001的一直关注和支持!我用的是VFP9.0 SP2来做的,试过好像字符型的字段,这个函数可用通过,但只要换成通用型字段马上就会出错提示。
#18
laowan0012022-10-16 14:54
回复 17楼 chqzhpnggq
还是用字符型吧,我想了想还真是没用过通用型字段
#19
chqzhpnggq2022-10-16 15:13
这几天来感谢各位大能的我的指点,虽然调出通用字段图片的问题没有解决,但我对通用型字段及条形码的使用有了一定的认识和提高。谢谢大家!!
1