您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:69 来源:未知

本文章共2312字,分2页,当前第1页,快速翻页:
 
Visual Basic 作为一个集应用程序开发、测试、查错功能于一 体的集成式开发环境,越来越受到程序员的青睐。笔者在开发某数据 库维护系统的过程中,选择了VB5.0作为开发平台,Unix作为服务器端 操作系统,Informix 作为服务器数据库
逆风编程精品
   问题的出现
   在开发该维护系统的过程中,注意到Informix 数据库的字段 类型CLOB 填入数据时需要函数FILETOCLOB("FILENAME","SERVER") , 其中的"FILENAME"需要指出文件路径和文件名称。然而,在维护过程 中此文件是在客户端执行的,这样就要求即时将文件传输到服务器端 。
   解决办法
   1. FTP传输工具
   我们首先使用FTP传输工具,用VB5.0中SHELL 命令调用DOS批处理 文件来实现传输的需要。
   Shell调用格式:
   Shell(pathname[,windowstyle])
   例子:Shell("c:\windows\upload.bat")
   批处理文件upload.bat 的内容:
   c:\windows\ftp hostname
   username
   password
   send c:\zrh\upload.txt upload.txt
   bye
   该命令实现了文件"upload.txt"的传输要求。在使用完毕之后, 再调用命令把该文件删除。
   例子:Shell("c:\windows\del_up.bat")
   批处理文件del_up.bat 的内容:
   c:\windows\ftp hostname
   username
   password
   dele upload.txt
   bye
   这样,文件"upload.txt"被删除。
   但是,另一个问题出现了。由于Shell 函数的运行机制是与其它 程序同步执行,也就是说,当调用Shell 函数的子程序还没有执行完毕 之前,Shell函数后面的语句已经执行。在大批量添加数据的过程中, 就会出现某个记录的文件还没有传到,而下一个插入语句(I nsert)已 经开始调用。这样,ODBC调用就会出现错误。
   2. INET 控件
   Internet Transfer控件提供了Internet 上最常使用的两种协议 :HTTP 和FTP。使用HTTP 协议可以连接到WWW服务器上来下载文件;使 用FTP协议则可以登录到FTP 服务器。一般的FTP命令,例如CD、GET 都可以通过Execute 方法实现。
   下面是一个设置INET控件属性的例子。
   inet1.URL=ftp://username:password@hostname/document
   inet1.Protocol=2-icFTP
   inet1.RemoteHost=hostname
   inet1.RemotePort=21
   inet1.Username=username
   inet1. Password=password
   执行文件传输:
   Inet1.Execute "ftp://username:password@hostname", _
   "PUT" &local_filename & " UPLOAD1.TXT"
   right1 = Inet1.StillExecuting
   Do While right1
    right1 = Inet1.StillExecuting
    DoEvents
   Loop
   这样便实现了文件的上载。
   *SINET 控件的优点
   INET控件与Shell()函数的不同之处在于INET控件通过调用语句
   right1 = Inet1.StillExecuting
   Do While right1
    right1 = Inet1.StillExecuting
    DoEvents
   Loop来控制语句执行的顺序。在文件传输工作未完成之前,程序 不会执行其它语句,自然也就不会出现调用Shell 函数所出现的问题 。变量right1用来测试inet1 的执行状态,如果进程中仍在进行文件 传输的工作,则调用过程DoEvents给系统空闲时间来做文件传输工作, 这样便成功地执行了文件上载的功能。该文件使用完毕之后将被删除 。
   Inet1.Execute "ftp://informix:informix@rd", _
   "DELETE UPLOAD1.TXT"
   right1 = Inet1.StillExecuting
   Do While right1
   right1 = Inet1.StillExecuting
   DoEvents
   Loop
   将上载的文件删除是为了避免占用服务器端磁盘空间。
   *S利用StateChanged事件提示信息
   服务器在执行inet1.execute 的同时也激活了Inet1_StateChang ed事件,进程可以根据捕获到的状态进行动作。
   object_StateChanged(ByVal State As Integer)
 
本文章更多内容1 - 2 - 下一页>>
相关文章

用VB实现象Windows记事本的一些功能
如何在VB中实现绘图区的大十字光标
VB中API菜單編輯器的實現````
用WinSock设计Chat程序
用BASIC语言设计Windows风格的用户接口
基于Visual Basic 6的网络程序设计
自己的IE——用VB制作浏览器
VB邮件检查程序
用VB实现“ICQ”式的启动欢迎画面
一个用记录集填充表格的函数
利用Winsock控件实现局域网通信
VB 从零开始编外挂(十一)
用VB制作TopMost类型窗口
在VB环境中操作三维模型的实现方法
怎样接收电子邮件(POP3协议简介)
利用VB6.0设计屏幕保护程序
用VB实现开机自动更换墙纸
用VB编写记事本
建立无模式窗口
在VB中使用UDP协议

相关评论


本文章所属分类:首页 VB

  热门关键字: