注册 登录
编程论坛 VFP论坛

缺少照片时的显示问题求助,先谢谢了!

bdx808 发布于 2023-01-07 15:05, 1685 次点击
用vfp9做了一个带照片的报表,用ole控件绑定照片,控件源里写入'photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg',如果照片太多的时候,万一少一个照片,预览时候就会提示“无效的路径或文件名”,用个什么函数可以达到:如果照片存在就显示正常的照片和相关信息,如照片不存在,就自动调用显示photo目录下的zpbcz.jpg图片?
网上搜了几天,好象file函数可以,但没有找到它的用法,试了多次还是没法实现,请教各位高手什么函数合适?具体怎么用?
14 回复
#2
吹水佬2023-01-07 15:56
试试:
'photo\'+iif(file("照片.jpg"),"照片.jpg","zpbcz.jpg"))
#3
laowan0012023-01-07 15:57
点开那个ole控件,上面的“条件打印”页签里最下面“仅当表达式为真时打印”,填写一个逻辑表达式,满足条件打印,否则不打印
file('photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg')



[此贴子已经被作者于2023-1-7 21:07编辑过]

#4
sdta2023-01-07 17:05
'photo\'+iif(file(subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'),subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg',"zpbcz.jpg"))
#5
bdx8082023-01-08 07:15
回各位大神:提示语法错误,可能是我没有写正确,因为有别的事情太忙,中午或晚上我再试试,先谢谢!
#6
bdx8082023-01-08 18:59
回各位大版主:
按照吹水佬版主和sdta版主指示的把最后一个)去掉后没有语法提示了,可以正常预览报表,但照片位置始终显示的是照片不存在对应的zpbcz.jpg,2楼版主说的“填写一个逻辑表达式”,还不太会……
#7
bdx8082023-01-08 19:08
我输入的是:
'photo\'+iif(file("subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'"),"subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'","zpbcz.jpg")

'photo\'+iif(file(subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'),subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg',"zpbcz.jpg")
是不是我输入的没输入对、哪里还有问题?
#8
pvm20002023-01-08 20:38
以下是引用bdx808在2023-1-8 19:08:15的发言:

我输入的是:
'photo\'+iif(file("subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'"),"subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'","zpbcz.jpg")

'photo\'+iif(file(subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'),subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg',"zpbcz.jpg")
是不是我输入的没输入对、哪里还有问题?


亲测过,如果 bmh (变量/字段名) 有值或赋值,则上面两表达式是能正常取值的。
#9
hu9jj2023-01-09 10:15
先判断指定的照片文件是否存在,若不存在则显示一幅固定的提示图片。
#10
bdx8082023-01-09 13:36
我试试还是那样,现在把测试文件传上来(vfp9sp2环境下、里面的文件说明:
1、dy0 是原来的,也就是存在问题的报表,照片齐全时预览正常,缺少时会提示“无效的路径或文件名”
2、dy1和dy2是按照吹水佬版主和sdta版主提供的方法输入的情况),不知道我哪里输错了,麻烦再指点一下,多谢了!
只有本站会员才能查看附件,请 登录
#11
xuminxz2023-01-09 15:35
回复 10楼 bdx808
dy0改成以下试试
iif(file('photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'),'photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg','photo\zpbcz.jpg')

我喜欢报表尽量简单一些。不要加数据环境,变量就写一个zp。这样便于程序升级。
用程序生成一个数据临时文件进行打印。当打印量比较大时,比如上千页速度会快很多。还便于选择打印。
SELECT *,SPACE(100) zp FROM dy INTO CURSOR dytmp READWRITE
REPLACE  zp WITH 'photo\zpbcz.jpg' all
REPLACE zp WITH 'photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg' FOR file('photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg')
REPORT FORM dy TO PRINTER PROMPT  PREVIEW

[此贴子已经被作者于2023-1-9 16:03编辑过]

#12
cjc10102023-01-09 16:34
有照片时能正常打印,那就好办了。改一下表达式就行了。 iif(file(原表达式),原表达式,无照片时的代替照片路径),就行了。
iif(file('photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg'),'photo\'+subs(bmh,1,2)+'\'+subs(bmh,3,2)+'\'+allt(bmh)+'.jpg','photo\zpbcz.JPG')
#13
cjc10102023-01-09 16:37
只有本站会员才能查看附件,请 登录
#14
bdx8082023-01-09 17:27
多谢各位!
#15
bdx8082023-01-11 08:03
回复 11楼 xuminxz
方法不错
1