标题:上传文件控件
只看楼主
freejike
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-13
得分:0 
回复 20楼 bccn0906
太谢谢你了。好了
STRTOFILE(链接,ALLTRIM(文件))
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING, STRING, STRING, INTEGER    //调用api
ShellExecute(0,"open",ALLTRIM(文件),"","",1)     //调用函数

请问第一句有什么作用
新手学习,确实没有多少时间放在这上面系统学习,所以就做个小程序工作用来学习

[ 本帖最后由 freejike 于 2013-12-18 09:41 编辑 ]
2013-12-18 09:38
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
得分:0 
以下是引用freejike在2013-12-18 09:38:38的发言:

太谢谢你了。好了
STRTOFILE(链接,ALLTRIM(文件))
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING, STRING, STRING, INTEGER    //调用api
ShellExecute(0,"open",ALLTRIM(文件),"","",1)     //调用函数
 
请问第一句有什么作用
新手学习,确实没有多少时间放在这上面系统学习,所以就做个小程序工作用来学习
第一句是把备注型字段的内容还原成原文件,也就是把文件“释放”出来,然后打开,所以你最加个临时路径,如 STRTOFILE(链接,'d:\tmp\'+ALLTRIM(文件)) ,方便清理临时目录下的文件(因它是临时路径的文件)
2013-12-18 09:47
freejike
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-13
得分:0 
回复 22楼 bccn0906
O  ,明白了,那还需要新建一个这个目录吧,就像你的表单load事件中创建的目录一样需要在打开文件表单中创建一个目录是吗?

还有哦一件就是当前表单调用同目录下子文件夹中的表单怎么写路径方便移植到其他机器或其他目录下运行

[ 本帖最后由 freejike 于 2013-12-18 09:58 编辑 ]
2013-12-18 09:56
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
得分:0 
以下是引用freejike在2013-12-18 09:56:03的发言:


 
还有哦一件就是当前表单调用同目录下子文件夹中的表单怎么写路径方便移植到其他机器或其他目录下运行
在主程序
1 、SET DEFAULT TO (JUSTPATH(SYS(16))) 设当前运行目录为默认目录
2、SET PATH  to 表单路径,数据库路径(注意,尽可能用相对路径,如 SET PATH  to forms,data 就是在当前目录下有 forms,data目录),打开表单时,前面不要加上路径,这样打开就可以了,如:do form 表单
3、在项目中加入了表单、报表、菜单等,在编译后自连成为一个整体,与目录无关。

[ 本帖最后由 bccn0906 于 2013-12-18 10:07 编辑 ]
2013-12-18 10:05
freejike
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-13
得分:0 
回复 24楼 bccn0906
OK,谢谢
2013-12-18 10:07
freejike
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-13
得分:0 
回复 10楼 bccn0906
你好在吗??
vfp9.0
问题1,我把程序编译后在别的电脑上运行为什么可以添加但不能打开。运行库放了这5个文件msvcr71.dll,gdiplus.dll,vfp9r.dll,vfp9rchs.dll,vfp9t.dll
问题2,而且加入了data数据库文件,和index索引文件cdx
但都出现定位数据库(初始化临时表对象时发生错误。找不到****\****.dbc),之前我把数据库中的dbf和dbc都重新分类存放在文件夹,并且在程序中重新定位了,还在数据库中移除并重新添加,在表单中重新添加了数据环境.
问题3,未编译时运行程序,添加了文件的可以打开,没添加文件的提示函数的值错误运行指向STRTOFILE(m_链接,'d:\tmp\'+ALLTRIM(m_文件)),编译出来后也是这样的提示,但点取消后程序关闭,如何让找不到变量后出现提示并继续运行?
我的打开文件代码是这样的,
程序代码:
IF EMPTY(m_文件) OR EMPTY(m_链接)
    MESSAGEBOX("没有录入",0)
    RETURN
ELSE 
STRTOFILE(m_链接,'d:\tmp\'+ALLTRIM(m_文件))
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING, STRING, STRING, INTEGER
ShellExecute(0,"open",'d:\tmp\'+ALLTRIM(m_文件),"","",1) 
CLEAR DLLS
ENDIF 


[ 本帖最后由 freejike 于 2013-12-20 11:12 编辑 ]
2013-12-20 11:10
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
得分:0 
我不知如何回你这些问题。
问题1:你的意思是 编译后的程序在别的电脑上能跑起来了,还可以“添加”操作,但不能打开,这有很多因素,如:你的那个在数据表的文件“释放”出来没有(你可以查下一步d:\tmp\ 有没这文件),如果没有当然打不开了,那台电脑有无安装能打开你这文件的“程序”(注意:不是你编的程序),如 :Microsoft Office等.

问题2:只是数据搜索问题,我已说过了,不想再多说。

问题3:狗屎垃圾都处理,你都知没添加文件,你为何要放这样的记录在数据表呀。

加个容错处理吧
IF EMPTY(m_文件) OR EMPTY(m_链接)
    MESSAGEBOX("没有录入",0)
    RETURN
ELSE
    err=.f.
    on error err=.t.
    STRTOFILE(m_链接,'d:\tmp\'+ALLTRIM(m_文件))
    on error
    if not err and file('d:\tmp\'+ALLTRIM(m_文件))
        DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING, STRING, STRING, INTEGER
        ShellExecute(0,"open",'d:\tmp\'+ALLTRIM(m_文件),"","",1)
        CLEAR DLLS
    endif
ENDIF

[ 本帖最后由 bccn0906 于 2013-12-20 12:06 编辑 ]
2013-12-20 11:59
freejike
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-10-13
得分:0 
回复 27楼 bccn0906
问题1:tmp文件夹创建位置错。
问题2:数据库移除再添加还是一样,请问您知道还有什么原因引起这个问题吗?因为其它表单数据库都运行良好。
问题3:加入容错处理后点打开后无任何提示,要打开没有添加文件的记录是因为这是两个数据库建立的视图,各都各自文件,定位到此记录时在1文件可以打开,2文件如果没有就会出现问题。加入容错处理后无任何提示。还有一点,下面这个if判断为真是否没有意义?
 
IF EMPTY(r_文件) OR EMPTY(r_链接)
    MESSAGEBOX("没有录入",0)
    RETURN
ELSE
 err=.f.
    on error err=.t.    &&定义容错处理
   
STRTOFILE(r_链接,'tmp\'+ALLTRIM(r_文件))

ON ERROR      
if not err and file('tmp\'+ALLTRIM(m_文件))   &&判断对象是否为真
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING, STRING, STRING, INTEGER
ShellExecute(0,"open",'tmp\'+ALLTRIM(r_文件),"","",1)
CLEAR DLLS
ENDIF

[ 本帖最后由 freejike 于 2013-12-20 16:24 编辑 ]
2013-12-20 16:18
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
得分:0 
以下是引用freejike在2013-12-20 16:18:06的发言:

问题1:tmp文件夹创建位置错。
问题2:数据库移除再添加还是一样,请问您知道还有什么原因引起这个问题吗?因为其它表单数据库都运行良好。
问题3:加入容错处理后点打开后无任何提示,要打开没有添加文件的记录是因为这是两个数据库建立的视图,各都各自文件,定位到此记录时在1文件可以打开,2文件如果没有就会出现问题。加入容错处理后无任何提示。还有一点,下面这个if判断为真是否没有意义?
  
IF EMPTY(r_文件) OR EMPTY(r_链接)
    MESSAGEBOX("没有录入",0)
    RETURN
ELSE  
 err=.f.
    on error err=.t.    &&定义容错处理
     
STRTOFILE(r_链接,'tmp\'+ALLTRIM(r_文件))
 
ON ERROR        
if not err and file('tmp\'+ALLTRIM(m_文件))   &&判断对象是否为真
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, STRING, STRING, STRING, INTEGER
ShellExecute(0,"open",'tmp\'+ALLTRIM(r_文件),"","",1)  
CLEAR DLLS
ENDIF
问题2:没你的程序,不好判断。其实处理这些问题很简单,但必须知道程序具体情况。
问题3:“加入容错处理后无任何提示”,这样就对了,难道你还想要出错中断退出吗。

这个判断是有用的,过滤"空"值,但它没反应,说明“r_文件”,“r_链接” 不是空的,那你就不懂得去检查这两个值吗?其实你不应问这样的问题。
IF EMPTY(r_文件) OR EMPTY(r_链接)
    MESSAGEBOX("没有录入",0)
    RETURN
ELSE  
2013-12-20 16:50
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
得分:0 
明知数据有问题,还是想把有“问题”的数据当无“问题”处理,不知你怎么想的,别人回你这样无聊的问题,都累死了
2013-12-20 16:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-425268-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.176280 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved