博文
几种从数据库读取数据生成excel文件的比较(2005-10-11 21:27:00)
摘要:试环境: 赛扬600+128M+Win2k Prof.(English.)+SQL Server 2000+Excel
2000+VB6(sp4)+ADO2.5
测试表记录数:10322,字段数:9 返回表中所有的纪录(select * from
table1),每种方法连续测试5次,在VB中使用MsgBox (DateDiff("s", t1,
Now()))计时(秒)
方法1。使用CopyFromRecordset(适用于Access,SQL)
第一次:49
第二次:45
第三次:43
第四次:43
第五次:42
方法2:使用QueryTable(适用于Access,SQL)
第一次:10
第二次:6
第三次:3
第四次:4
第五次:4
方法2:使用bcp(适用于SQL)
从命令行直接运行时间为701毫秒,从VB中返回时间为0
测试代码如下:
方法1:
Option Explicit
Private Sub Command1_Click()
Dim t1 As Date
t1 = Now()
Dim strConn As String
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist
Security Info=False;Initial Catalog=mlog;Data Source=SZ09"
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.......
VB程序员的FTP编程指南(2005-10-11 21:25:00)
摘要:
专 题:文件传输协议FTP概述
主 讲:qianqian
FTP简介
直到1994年,当WWW掌管Internet时,文件传输协议(FTP)是和e-mail一样最广泛应用的Internet客户程序。它被用于作为访问Internet主机文件的一个远程外壳。使用ftp可以连接到一个FTP服务器,在可用的目录间游历,并且传输文件。
一个FTP站点可以是公用的,私有的,或者两者兼有之。使用一个私有的账号,你可以拥有访问整个网络的目录结构,或者只是特定的区域的权限。
Internet同时也是一个拥有很多允许任何人连接和传输文件的FTP服务器的中心,不管他们有没有主机上的账号。这叫做匿名FTP。当你登录到一个匿名FTP战点时,你通常使用“anonymous”作为你的用户名,“guest”或你的 e-mail地址作为密码。例如,匿名FTP经常用于发布大量的公用领域或共享软件。其中一个著名的公用FTP站点是ftp.cica.indiana.edu。
FTP主要设计目的是用于程序之中,不过FTP程序自身已经成为任何一个TCP/IP实施的重要部分。当你在Windows 3.11、Windows95或Windows NT中使用Microsoft的TCP/IP驱动程序时,FTP.exe将被安装。
实际上,FTP已经包含于Netscape和其它的WWW浏览器中,因此你可以使用浏览Web的程序同时浏览FTP服务器。
根据RFC 959所述,设计FTP协议有四个目的:
1. 促进文件的共享(计算机程序或数据)。
2. 鼓励间接地或暗示性地(通过程序)使用远程计算机
3. 把用户隐蔽在主机文件系统的多变性之外
4. 为了传输文件的可靠性和效率
为什么你要使用FTP?
如果你正在编写一个要进行相当数量的文件传输的程序,并且考虑使用FTP作为你的主要文件传输方式,你必须知道一些事情。首先,FTP是一个客户机/服务器协议。使用FTP在同一台机器把一个程序的文件传送到另外一个程序的做法是不可取的。你只能在要把文件传输到一个已知的FTP服务器的情况下才能考虑使用FTP,或者你想要编写一个通用的FTP客户程序。
有时候你可以把FTP服务器作为一个仓库来存贮你的系统中所有用户共享的文件,......
VB中文件操作的两种方式(2005-10-11 21:14:00)
摘要:
VB中文件操作的两种方式
文本文件的操作
此种方式是以行为单位进行读取的基本单位,主要应用的方法和函数有Open,Close,Line Input,FreeFile,EOF等。下面先简述其功能然后结合代码示例进行说明。
Open:顾名思义,它的作用是打开文件,换而言之打开某个文件就是获得某个的控制权,一般情况下当文件处于打开状态时只有打开者才能对它进行操作。打开文件时要指定一个整数作为文件号,以后的操作都是针对这个代号进行的,而不是针对文件名。文件号也叫句柄,在程序中一个文件号只能指向一个文件,不能出现两个文件同时具有相同句柄的情况。
Close:关闭文件,即释放文件的控制权。
Line Input:以行为单位取得文件内容,以行为单位是指从当前位置开始到下一个换行符为止的内容。换行符是Chr(13) & Chr(10)两个字节组成,VB中已定义了常量vbCrLf,可直接使用。要注意的是Line Input读取一行时会把行尾的换行符去掉,因此我们在读取每行内容时要记得补上换行符才能保持得到的内容与文件一致。
FreeFile:得到空闲的文件号,用这个函数取得文件号可以避免文件号的冲突。
例如:
Dim strFileName As String '文件名
Dim lngHandle As Long '文件句柄
Dim strAll As String '所读取的文本文件的所有内容
Dim strLine As String '在循环中存放每行的内容
strFileName = "c:\b.txt"
'获得文件的句柄
lngHandle = FreeFile()
'For后面的参数表示以何种方式打开文件,Input是读取,Output是覆盖写入,Appen......
发送电子邮件源码(支持ESTMP协议,超文本电子邮件格式) (2005-10-11 21:12:00)
摘要:
经常在论坛看到网友提问如何发送电子邮件(SMTP服务器认证),其实只要知道客户端与邮件服务器之间会话,用户
名和密码是通过base64编码加密后传送,问题就很容易被解决.协议使用方面和smtp协议使用是一模一样的,值得
注意的就是esmtp协议在用户名和密码验证时,服务器返回一个354的消息代号.本代码没有针对错误提示信息处理,
但保证能正常发送邮件,大家可以自己完善它,本代码还使用IME编码,这样就可以发送超文本电子邮件了。用过
Foxmail4.1朋友应该知道,它实现的图文并茂声音邮件是它的一个亮点。本代码同样可以实现超文本邮件,要发
送mid做为背景音东的邮件,只要对ime代码部分稍加修改就可以实现,歌曲也须用base64编码后发送。目前流行
邮件病毒的原理和此一样,通过IE在IME中的漏洞实现,解决方法可以在注册表中删除IME编码格式,或者安装Winamp
同样也可以解决它(需做的只要在winamp支持的文件格式全选上),怎么越讲越跑题了,大家不要向我扔臭鸡蛋呀,
hehe,我也不多废话了,下附本软件所有代码.全整代码也可以在我的个人主页上下载,欢迎各位VB爱好与我联系,交
流编程技术.
主页:http://www.dapha.net
Msn:dapha@msn.com
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form Form1
BorderStyle = 1 'Fixed Single
Caption = "邮件发送程序(支持smtp服务器验证)"
ClientHeight = 5550
ClientLeft &n......
个性化文件夹图标(VB) (2005-10-11 21:11:00)
摘要:抛弃Windows的默认图标吧,让自己的程序所在的目录拥有个性化的Folder Icon!
其实作起来简单得很,实际上只需要一个Desktop.ini文件即可,下面我会从两个方面说明。
1. 手动方式:
首先要在需要改变的文件夹中创建一个Desktop.ini文件,例子如下
[.ShellClassInfo]
ConfirmFileOp=0
InfoTip=我自己的文件夹
IconIndex=0
IconFile=MyFolder.ico
解释:
参数ConfirmFileOp设为0--防止用户在移动或删除此文件夹时弹出的“你正在删除系统目录”的警告。
参数IconFile指定为将要改变的图标文件的位置,可以是Icon、Bmp、exe或者dll文件,上例中的图标文件也放置到同一目录中。
参数IconIndex就可以指定文件的索引,如果此图标文件是Icon文件的话,IconIndex就设为0。
参数InfoTip用来设定此Folder在Windows中的Tooltip。
下一步打开CMD(命令提示符),输入
attrib +s i:\MyFolder
i:\MyFolder指的就是我要改图标的目录的路径。此项操作是让你的文件夹成为系统文件夹。
好了,经过手动处理后现在的目录已经改变了风格。
2. 编程方式:
这种方式是用我喜欢的VB来实现的,实现起来也同样Easy。
只需要两个API函数,一个用来操作Ini文件的建立,另一个的功能等同于手动方式中的attrib +s。
Option Explicit
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Decla......
使用Visual Basic操纵XML文档(2005-10-11 21:07:00)
摘要:
使用Visual Basic操纵XML文档
中国航空信息中心 吴斌
对于XML文档,插入、修改、检索等数据操作工作可以通过一个XML解析器及其列举的一系列对象来完成。 Microsoft的XML解析器驻留在名为msxml.dll的动态链接库文件中。因为msxml是一个COM对象,所以可以在任何兼容ActiveX的环境中使用它,如在VB和 ASP中。本文介绍在Visual Basic中操纵XML文档的具体方法。
装载XML文档
新建一个VB Standard EXE工程项目。在Form1中添加一个CommandButton控件,将其Name和Caption属性分别设为cmdLoad和Load XML。为了使用msxml解析器,必须事先设置工程项目对msxml.dll的引用。选择Project菜单的 References命令,选中Microsoft XML, version 2.0或更高版本。将下列代码加入 cmdLoad_Click事件:
Option Explicit
Dim xml As DOMDocument
Private Sub cmdLoad_Click()
Set xml = New DOMDocument
Call xml.Load(App.Path & “flight.xml")
' flight.xml为描述航班信息的XML文档
End Sub
运行该程序,点击Load XML按钮即可装载XML文档。载入的XML文档包含一个按照树状结构排列的节点对象集合,顶层节点或根节点是 documentElement。每个节点都有一组属性和方法,每个节点可以包含一个或多个子节点,当然也可以不包含任何节点。必须先取得对根节点的引用才能操纵XML文档。在 cmdLoad_Click事件代码后添加下列代码:
Dim root As IXMLDOMElement
Set root = xml.documentElement
遍历节点集合
可以......
用VB调试串口通讯(2005-10-11 21:06:00)
摘要:
现有电子秤一台,使用串口与计算机进行通讯。编写VB程序来访问串口,达到读取电子秤上显示的数据。该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。所有字符均发送11位ASCII码,一个起始位。在VB中与串口通讯需要引入控件MSComm串口通讯控件(在Microsoft Comm Control 6.0中)。具体程序如下:控件简称:MSC
Dim Out(12) As Byte '接收var中的值
Dim var As Variant '接收MSC.input中的数值
Dim nRece As Integer '计算MSC.inputbuffer的个数
Dim i As Integer, j As Integer '随即变量,计算循环
****************************************************************************
Private Sub Form_Load()
ClearText
With MSC
.CommPort = 1 '设置Com1为通信端口
.Settings = "9600,E,7,2" '设置通信端口参数 9600赫兹、偶校验、7个数据位、1个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。
含义是:B:Baud Rate(波特率);P:Parity(奇偶);D:Data Bit;S:Stop Bit)
.InBufferSize = 40 '设置缓冲区接收数据为40字节
.InputLen = 1 '设置I......
想用就用,VB基础代码(精)(2005-10-11 21:01:00)
摘要:
作者:Cooly
出处:http://search.csdn.net/expert/topic/51/5101/2003/3/20/1555609.htm
'=======================================================
'一、如何使用ADODC控件绑定数据到DataGrid和DataList
'=======================================================
Public isDB As Boolean
Private Sub Form_Load()
Dim connStr, AccessLocation As String
AccessLocation = "C:\db1.mdb"
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessLocation & ";Persist Security Info=False"
Adodc1.ConnectionString = connStr
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from tableabc"
Adodc1.Refresh
For i = 0 To Adodc1.Recordset.Fields.Count - 1
List1.AddItem Adodc1.Recordset.Fields(i).Name
Next
Set DataList1.DataSource = Adodc1
DataList1.DataField = "Col1"
DataList1.BoundColumn = "Col1"
Set DataList1.RowSource = Adodc1
DataList1.ListField = "Col1"
Adodc1.Recordset.MoveFirst
End Sub
Private Sub List1_Click() '选择DataG......
用 VB 打开任意盘(硬盘/U盘/光盘)的文件.(2005-10-11 21:00:00)
摘要:
在程序打包移植的时候,需要用到 光盘/U盘 。在不知道机子上的光盘的盘符是多少,或不知道盘符的类别和盘符的总数的话。
......... 可以用如下方法来判断 .........
要用到的 API 描述:
返回机子上的所有盘符
GetLogicalDriveStrings
VB声明
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
返回值
Long,装载到lpBuffer的字符数量(排除空中止字符)。如缓冲区的长度不够,不能容下路径,则返回值就变成要求的缓冲区大小。零表示失败。会设置GetLastError
参数表
参数
类型及说明
nBufferLength
Long,lpBuffer字串的长度
lpBuffer
String,用于装载逻辑驱动器名称的字串。每个名字都用一个NULL字符分隔,在最后一个名字后面用两个NULL表示中止(空中止)
不同的盘类型可以用 GetDriveType 来判断.
GetDriveType
VB声明
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
说明
判断一个磁盘驱动器的类型
返回值
Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM 或 DRIVE_RAMDISK
参数表
参数
类型及说明
nDri......
如何用VB建立快捷方式(2005-10-11 20:58:00)
摘要:
Private Declare Function fCreateShellLink Lib "STKIT432.DLL"(ByVal lpstrFolderName As String ,ByVal lpstrLinkName As String ,ByVal lpstrLinkPath As String,ByVal lpstrLinkArgs As String) as Long
sub Command1Click()
Dim lReturn As Long '添加到桌面
lReturn=fCreateShellLink("..\..\Desktop","Shortcut to Calculator","c:\windows\calc.exe","")
'添加到程序组
lReturn=fCreateShellLink("\Startup","Shortcut to Calculator","c:\windows\calc.exe","")
End Sub......