打印

求教大虾们一个VB编程的问题,代码不长,但是我疑问很重

[复制链接]
2155|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 caosong4417 于 2012-2-11 13:57 编辑

Private Sub MSFlexGrid1_Click()
Dim strroad As String
Dim rs As New ADODB.Recordset
rs.ActiveConnection = cn
strroad = MSFlexGrid1.Text
rs.Open "select * from 图片 order by 序号"
Do While Not rs.EOF
If MSFlexGrid1.Text Like rs.Fields("序号") Then
strroad = rs("图片路径")
End If
rs.MoveNext
Loop
Image1.Picture = LoadPicture(strroad)
End Sub

序号 是数据库中的主关键字
图片路径 是数据库中的一个字段,存的是照片(jpg)位置的相对路径

想要实现的功能:
在MSFlexGrid1的表格中点击任意一行,则在Image1的窗口里面显示相应的照片

疑问:
运行到了最后一行代码的时候,即Image1.Picture = LoadPicture(strroad)
出现实时错误75,路径文件访问错误。
但,经过我的实验strroad显示的的确是正确的相对路径,此路径直接代替strroad就能显示照片,例如:
Image1.Picture = LoadPicture(App.Path + "\DATA\002.JPG")就显示照片
这个疑问困扰了我很久了,把数据库中的图片路径保存为绝对地址的时候能显示,就是相对地址出问题。望大家都看看,探讨探讨

错误截图.jpg (12.91 KB )

错误截图.jpg

错误截图1.jpg (24.55 KB )

错误截图1.jpg

相关帖子

沙发
tylhc001| | 2012-2-11 16:39 | 只看该作者
:lol 1# caosong4417

使用特权

评论回复
板凳
caosong4417|  楼主 | 2012-2-11 22:06 | 只看该作者
各位大侠们,现身吧

使用特权

评论回复
地板
h615| | 2012-2-13 15:42 | 只看该作者
改成这样就可以(App.Path & "\DATA\002.JPG")

使用特权

评论回复
5
caosong4417|  楼主 | 2012-2-13 17:46 | 只看该作者
改成(App.Path & "\DATA\002.JPG")还是不行 错误一样的

使用特权

评论回复
6
caosong4417|  楼主 | 2012-2-16 18:00 | 只看该作者
问题依然没有解决,我决定再等等

使用特权

评论回复
7
chengchenz| | 2012-2-17 13:30 | 只看该作者
本帖最后由 chengchenz 于 2012-2-17 13:32 编辑

我猜是这样的。。。
楼主在数据库里的  图片路径 字段里存的就是如“App.Path & "\DATA\002.JPG"” 这样的字串
于是strroad = "App.Path & "\DATA\002.JPG"“
Image1.Picture = LoadPicture(strroad)就去LoadPicture("App.Path & "\DATA\002.JPG"”)了
而不是 LoadPicture(App.Path & "\DATA\002.JPG")

这样改吧, 我还是猜的。。。
数据库里的  图片路径 字段里只存 \DATA\002.JPG这样的字串
Image1.Picture = LoadPicture(App.Path & strroad)

使用特权

评论回复
8
chengchenz| | 2012-2-17 13:36 | 只看该作者
楼主可能需要注意字符串值和程序语句之间的区别
a = "5+3"
b = a
b的值不会是 8
而是 “5+3”

使用特权

评论回复
9
caosong4417|  楼主 | 2012-2-18 14:21 | 只看该作者
感谢 7楼 chengchenz 的猜测和提出的方法
字符串从数据库中读出来,并没有加上“”号,但是你提出的方法是有效的!解决了我的问题,感谢!即,
将数据库里的  图片路径 字段里只存 \DATA\002.JPG这样的字串
Image1.Picture = LoadPicture(App.Path & strroad) 能实现功能!

使用特权

评论回复
10
caosong4417|  楼主 | 2012-2-18 14:23 | 只看该作者
感谢 chengchenz 的猜测和提出的方法
字符串从数据库中读出来,并没有加上“”号,但是你提出的方法是有效的!解决了我的问题,感谢!即,
将数据库里的  图片路径 字段里只存 \DATA\002.JPG这样的字串
Image1.Picture = LoadPicture(App.Path & strroad) 能实现功能

使用特权

评论回复
11
chengchenz| | 2012-2-18 18:27 | 只看该作者
本帖最后由 chengchenz 于 2012-2-18 18:35 编辑

感觉楼主的问题解决了,但楼主似乎还是没有理解为什么.

在代码中给字符串常量首尾加上“”只是为了让编译器知道字串值从哪里开始从哪里结束
字符串值本身不会包含有首尾的这个“”的。
尽管数据库中的字串没有“”,但它传给变量后仍然只是字符串值,
跟在代码中用"5+3"赋值给变量一样。
(如果数据库中都有""了,那变量会是包含""的值,因为数据库的字段里的类型是建表时指定好的,根本不需要用""来指示是字符串。)

可无论怎样,都是字串值,而不是程序语句。

使用特权

评论回复
12
lsview| | 2012-2-23 21:36 | 只看该作者
8楼说的对。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

243

帖子

1

粉丝