以文本方式查看主题

-  搭建论坛  (http://bbs.diylsoft.com:8118/starforum/index.asp)
--  数据库交流  (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=6)
----  关于SQL语句中的文件名问题  (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=6&id=15789)

--  作者:reachtone
--  发布时间:2008-3-6 17:01:53
--  关于SQL语句中的文件名问题

如附件所示,请先将附件解压到一个文件夹里,如ABC。。。

问题如下:如果直接在IPD文件上双击,可以正常运行;但如果通过搭建之星的“打开”,则提示出错,问题就出在SQL语句中的文件名上。

即使在搭建的运行环境中,将用户目录设置为该文件夹,打开仍然出错。。

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:


--  作者:reachtone
--  发布时间:2008-3-6 17:11:47
--  

进一步测试发现,通过搭建之星的“打开”,有时又不出错,非常奇怪。

出错时的提示信息表明,搭建将SQL语句中所涉及的数据库文件默认到搭建之星的安装目录下了。此问题必须解决,因为跨文件的数据表查询操作是很常见的。


--  作者:admin
--  发布时间:2008-3-6 18:24:45
--  

我这里反复打开“文件”和“数据表”都没有问题。


--  作者:FSJM
--  发布时间:2008-3-6 18:43:21
--  
是当前缺省 目录的问题;".\\" 指当前目录下,如果当前目录改变就会出错;最好改绝对目录,以利于多用户操作。

--  作者:reachtone
--  发布时间:2008-3-6 23:51:36
--  
以下是引用FSJM在2008-3-6 18:43:21的发言:
是当前缺省 目录的问题;".\\" 指当前目录下,如果当前目录改变就会出错;最好改绝对目录,以利于多用户操作。

您说是缺省目录的问题,可是,如果直接双击IPD文件,它的运行是正常的啊。这又该如何解释呢?

只有通过星的“打开”时才会出错,而且有时出错,有时不出错。出错时的提示信息表明,系统反而把搭建之星的安装目录作为默认路径了。是不是搭建的“运行环境”设置需要再作改进?

改绝对目录是不行的,因为我无法确认用户会把这个定制的应用系统安装在哪个目录下。但在当前这个应用系统中,data这个子目录是必须存在的,所以,必须用.\\

就目前这个例子,不知是否有更好的解决办法?


--  作者:FSJM
--  发布时间:2008-3-7 8:43:00
--  
打开一个目录,当然是但前目录,点击 IPD 肯定执行正确。
--  作者:reachtone
--  发布时间:2008-3-7 9:51:14
--  

同样的一个文件,直接执行不出错,通过星的“打开”有时出错、有时不出错。这只能说明搭建在这方面还有不完善的地方。

希望作者不要总是强调文件目录的问题,因为,您无法解释:为什么有时候通过星“打开”时又会正常运行?

所以,我总觉得,搭建之星在内部处理“安装目录”和“项目所在目录”时有欠妥的地方。比如,在设置“用户项目目录”以后,按理说打开一切文件时都会从这个默认目录中去找,但如果你插入的是图片、声音等文件,首先打开的目录竟然还是搭建之星的安装目录。这个问题我早就发现了,只是因为它并不影响正常使用,所以一直就没有反映,麻烦就麻烦点吧。


--  作者:FSJM
--  发布时间:2008-3-7 15:39:51
--  

因为这个就是“当前目录问题”,“打开文件对话窗” 和 通过“我的电脑”打开系统目录,操作系统对当前目录的处理是不同的,所以结果也不同。

在SQL中使用相对目录,《搭建》对此是处理不了的,《搭建》命令中的“相对目录”,是变成绝对目录后,才使用的;给设计者带来很多方便,这是《搭建》的优点。

如果要在其中要使用相对目录,必须要在运行SQL之前“设置当前目录”,但目前没有,准备这次升级增加;但即使这样设计状态下打开还是会有问题(因为设计状态,是不会运行设置的命令)。

在多“任务状态运行”状态下(同时运行多个程序),也有可能出现问题(因对当前目录的争夺),所以我们不赞成在SQL中使用相对目录。

一定要在SQL运行之前,把相对目录变成绝对目录;目前你只能动态设置。程序最好不要运行在一种假设的状态下。


--  作者:reachtone
--  发布时间:2008-3-7 16:04:04
--  

谢谢FSJM的回复,我再好好研究一下。期待着早日看到升级版本。。


--  作者:reachtone
--  发布时间:2008-3-7 18:34:24
--  

在FSJM的启发下,通过“文件名称操作”构件,动态取得数据库文件的绝对目录,然后再赋值给SQL语句,问题彻底解决。

只是这样显得麻烦了一点点。。