<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[零加零]]></title>
<link>http://blog.pfan.cn/0ga0</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[关闭后无法接着添加]]></title>
		<link>http://blog.pfan.cn/0ga0/7008.html</link>
		<description><![CDATA[唉， 如果我没猜错。。。。你的数据集是在外面打开的。。。 所以按钮事件结束时关闭了数据集 下次再写就不行了。。。所以，你的关闭写在程序关闭的时候吧。&nbsp;&nbsp;或许 你应该养成一个好的编程习惯（如果你是程序员的话）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在按钮里 打开 链接和数据集&nbsp;&nbsp;在按钮事件退出之前关闭它们。这样不会占用太多的资源&nbsp;&nbsp;&nbsp;也不会给老板骂&nbsp;&nbsp;^_^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不允许你犯类似的错误，否则&nbsp;&nbsp;嘿嘿 ～～～～罚站例子：dim cn as new XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'如果要多次连接数据库，那最好把声明写外面dim rs as new XXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private button_click()cn.open XXXXrs.open XXXX...rs.update...rs.updaters.closecn.closeend程序不退出，但是确定要不用连接时&nbsp;&nbsp;应该回收资源set cn =Nothingset rs =Nothing]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-16 13:04:00</pubDate>
		</item>
				<item>
		<title><![CDATA[原油流量计总数计算(字段)]]></title>
		<link>http://blog.pfan.cn/0ga0/6991.html</link>
		<description><![CDATA[方法一:
'原油流量计总数计算Set conn = New ADODB.Connection&nbsp;&nbsp;&nbsp; conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" &amp; App.Path &amp; "\scsjk\chanpin.mdb"&nbsp;&nbsp;&nbsp; conn.OpenSet Rs = New ADODB.Recordset&nbsp;&nbsp;&nbsp; Rs.Open "select * from yuanyou", conn, adOpenStatic, adLockOptimistic&nbsp; Dim total As Double&nbsp; Dim totalliul As Double&nbsp; totalliul = bcrb(10).Text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; total = 0Do Until Rs.EOF&nbsp;total = Rs.Fields(2) + total&nbsp;Rs.MoveNextLoopRsscyuanyou.Fields(4) = total + totalliul&nbsp;bcrb(30).Text = Rsscyuanyou.Fields(4)
Rsscyuanyou为数据表yuanyou数据源
rs为select数据源
&nbsp;
方法二:
Dim rs As ADODB.Recordsetrs.Open "select 累计 from yuanyou", conn, adOpenDynamic, adLockOptimisticDim sum As DoubleWhile Not (rs.EOF)&nbsp;&nbsp;&nbsp;&nbsp;sum = sum + rs!累计&nbsp;&nbsp;&nbsp;&nbsp;rs.MoveNextWendtext1 = sum]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 14:03:00</pubDate>
		</item>
				<item>
		<title><![CDATA[用SQL实现树的查询]]></title>
		<link>http://blog.pfan.cn/0ga0/6969.html</link>
		<description><![CDATA[树形结构是一类重要的非线性结构，在关系型数据库中如何对具有树形结构的表进行查询，从而得到所需的数据是一个常见的问题。本文笔者以 SQL Server 2000 为例，就一些常用的查询给出了相应的算法与代码，颇值得读者借鉴。 
树型结构 
关系型数据库将数据按表结构形式进行组织。它对表格的处理方便灵活，且易学易用，因而得到广泛的应用。关系型数据库所处理的表格是线性结构的，表的每一行对应着一个数据元素，称做一条记录。记录与记录之间呈线性排列，彼此间没有联系， 然而，在解决实际问题时，常常会遇到非线性结构的数据。如下表所示，每一条纪录中的上级代码，就和其他纪录有着联系，这样就形成了一棵具有层次结构的树，它可以用下面的图来形象地表示：&nbsp; 
树形结构是一种结点之间有分支，并具有层次关系的结构，它非常类似于自然界中的树。 树结构在客观世界中大量存在，例如家谱、行政组织机构都可用树形象地表示。树在计算机领域中也有着广泛的应用，例如在编译程序中，用树来表示源程序的语法结构；在数据库系统中，用树来组织信息；在分析算法的行为时，用树来描述其执行过程。 
在关系型数据库中如何对具有树形结构的表进行查询，从而得到所需的数据是一种常见的需求。下面以SQL Server 2000 为例，就三种常用的查询给出相应的算法与代码： 
1．节点 A 的位于第 n 层的父结点信息，如：员工黄菁菁的上两级上司的名称。 
2．某棵子树的统计信息，如：员工余顺景及其所有下属员工的工资总额。 
3．某棵子树的结点信息，如：员工郑可可及其所有下属员工的名称。 
某节点的父节点信息&nbsp; 
要实现这样的查询，常使用递归的方法。我们可以用SQL Server 2000 增加的用户定义函数 （UDF, User Defined Function）这个新特性来实现递归函数调用。下面是函数的定义： 
CREATE FUNCTION dbo.GetManager 
( @employee_id AS char(5), 
@level AS int = 1 -- 缺省值为1 
) 
RETURNS char(5) 
其中，employee_id表示要查询的员工号码，level表示高于该员工的级别数，返回的结果是上司的员工号码。 
该函数的递归定义为： 如果 level = 0，则]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 01:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB入门教程]]></title>
		<link>http://blog.pfan.cn/0ga0/6968.html</link>
		<description><![CDATA[第一章：事件、属性及数据类型 以后两章可能会比较枯燥，但不可否认也很重要，所以为了学好VB，我们一定要打好基础才行。
　　一、事件
通过上一章的例子，你可能对“面向对象的编程”已经有了一定了解，它是由事件驱动的，对于不同的对象，所能感应到的事件也会不同，譬如说当你把鼠标移进某一区域时就会触发MouseMove事件，这很直观，也容易理解，但也有些事件比较抽象，下面我来对一般的事件进行一下解释。
窗体和图象框类事件 Paint事件：当某一对象在屏幕中被移动，改变尺寸或清除后，程序会自动调用Paint事件。注意：当对象的AutoDraw属性为True（－1）时，程序不会调用Paint事件。 Resize事件：当对象的大小改变时触发Resize事件。 Load事件：仅适用于窗体对象，当窗体被装载时运行。 Unload事件：仅适用于窗体对象，当窗体被卸载时运行。
&nbsp;当前光标（Focus）事件
GotFocus事件：当光标聚焦于该对象时发生事件。 LostFocus事件：当光标离开该对象时发生事件。 注意：Focus英文为“焦点”、“聚焦”之意，最直观的例子是，比如有两个窗体，互相有一部分遮盖，当你点下面的窗体时，它就会全部显示出来，这时它处在被激活的状态，并且标题条变成蓝色，这就是GotFocus事件，而相反，另外一个窗体被遮盖，并且标题条变灰，称为LostFocus事件。上面所说的“光标”并非指鼠标指针。
鼠标操作事件
Click事件：鼠标单击对象。 DbClick事件：鼠标双击事件。 MouseDown、MouseUp属性：按下/放开鼠标键事件。 MouseMove事件：鼠标移动事件。 DragDrop事件：拖放事件，相当于MouseDown、MouseMove和MouseUp的组合。 DragOver事件：鼠标在拖放过程中就会产生DragOver事件。 键盘操作属性
KeyDown、KeyUp事件：按键的按下/放开事件。 KeyPress事件：按键事件。 &nbsp;改变控制项事件
Change事件：当对象的内容发生改变时，触发Change事件。最典型的例子是文本框（TextBox）。 DropDown事件：下弹事件，仅用于组合框（ComboBox）对象。 PathChange事件：路径改变事件，仅用于文件列表框（FileBox）对象。 其他]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 01:16:00</pubDate>
		</item>
				<item>
		<title><![CDATA[MSFlexGrid使用技巧一例]]></title>
		<link>http://blog.pfan.cn/0ga0/6967.html</link>
		<description><![CDATA[本来通过ERP中基础分类档案的每级编码规则控制来展现MSFlexGrid控件的使用技巧,大家只要向控件添加一个MSFlexGrid及Combo控件就好了,源码如下: Option Explicit Private Sub Combo1_Click() &nbsp;&nbsp;&nbsp;&nbsp;MSFlexGrid1.text = Combo1.text End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyEscape Then &nbsp;&nbsp;&nbsp;&nbsp;Combo1.Visible = False &nbsp;&nbsp;&nbsp;&nbsp;MSFlexGrid1.SetFocus &nbsp;&nbsp;&nbsp;&nbsp;Exit Sub End If If KeyAscii = vbKeyReturn Then &nbsp;&nbsp;&nbsp;&nbsp;MSFlexGrid1.text = Combo1.text &nbsp;&nbsp;&nbsp;&nbsp;Combo1.Visible = False &nbsp;&nbsp;&nbsp;&nbsp;MSFlexGrid1.SetFocus End If End Sub Private Sub Combo1_LostFocus() &nbsp;&nbsp;&nbsp;&nbsp;Combo1.Visible = False &nbsp;&nbsp;&nbsp;&nbsp;MSFlexGrid1.SetFocus &nbsp;&nbsp;&nbsp;&nbsp;Exit Sub End Sub Private Sub Form_Load() Dim i As Integer Dim width, text, Archives width = Array("400", "2100", "800", "800", "800", "800", "800", "800", "800", "800", "800") text = Array("序号", "档案名称", "第1级", "第2级", "第3级", "第4级", "第5级", "第6级", "第7级", "第8级",]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 01:03:00</pubDate>
		</item>
				<item>
		<title><![CDATA[如何编写高质量的VB代码]]></title>
		<link>http://blog.pfan.cn/0ga0/6966.html</link>
		<description><![CDATA[简介： 　　本文描述了如何通过一些技术手段来提高VB代码的执行效率。这些手段可以分为两个大的部分：编码技术和编译优化技术。在编码技术中介绍了如何通过使用高效的数据类型、减少外部引用等编程手段来提高代码执行速度，减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供的编译选项对在编译时最后生成的可执行文件进行优化。 　　前言 　　什么是一个高效的软件？一个高效的软件不仅应该比实现同样功能的软件运行得更快，还应该消耗更少的系统资源。这篇文章汇集了作者在使用VB进行软件开发时积累下来的一些经验，通过一些简单的例子来向你展示如何写出高效的VB代码。其中包含了一些可能对VB程序员非常有帮助的技术。在开始之前，先让我陈清几个概念。 　　让代码一次成型：在我接触到的程序员中，有很多人喜欢先根据功能需求把代码写出来，然后在此基础上优化代码。最后发现为了达到优化的目的，他们不得不把代码再重新写一遍。所以我建议你在编写代码之前就需要考虑优化问题。 　　把握好优化的结果和需要花费的工作之间的关系：通常当完成了一段代码，你需要检查和修改它。在检查代码的过程中，也许你会发现某些循环中的代码效率还可以得到进一步的改进。在这种情况下，很多追求完美的程序员也许会立马修改代码。我的建议是，如果修改这段代码会使程序的运行时间缩短一秒，你可以修改它。如果只能带来10毫秒的性能改进，则不做任何改动。这是因为重写一段代码必定会引入新的错误，而调试新的代码必定会花掉你一定的时间。程序员应该在软件性能和开发软件需要的工作量之间找一个平衡点，而且10毫秒对于用户来说也是一个不能体会到的差异。 　　在需要使用面向对象方法的时候尽量使用它；VB提供的机制不完全支持面向对象的设计和编码，但是VB提供了简单的类。大多数人认为使用对象将导致代码的效率降低。对于这一点我个人有些不同的意见；考察代码的效率不能纯粹从运行速度的角度出发，软件占用的资源也是需要考虑的因素之一。使用类可以帮助你在整体上提升软件的性能，这一点我会在后面的例子中详细说明。 　　当你编写VB代码的时候，希望你能把上面几点作为指导你编码的原则。我把文章分为两个部分：如何提高代码的运行速度和编译优化。 　　如何提高代码的运行速度 　　下面的这些方法可以帮助你提高代码的运行速度： 　　1. 使用整数（Integer）和长整数（Long） 　　提高代]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 01:01:00</pubDate>
		</item>
				<item>
		<title><![CDATA[实现窗口间的参数传递]]></title>
		<link>http://blog.pfan.cn/0ga0/6965.html</link>
		<description><![CDATA[最近在用powerbuilder开发程序觉得其中的openwithparam()函数很好用 在vb中实现起来也很简单 建立一个模块加入如下代码： Sub openfromwithparam(ByVal str As String) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim Form As Form2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set Form = New Form2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.str = str &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.Label1.Caption = Form.str &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.Show End Sub form1代码如下： Private Sub Command1_Click() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Call openfromwithparam("liyong") End Sub Private Sub Form_Load() End Sub form2代码： Public str As String Private Sub Form_Load() End Sub]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 01:00:00</pubDate>
		</item>
				<item>
		<title><![CDATA[真正用VB产生随机任意大小文件挤满硬盘.(5行代码搞定,速度奇快)]]></title>
		<link>http://blog.pfan.cn/0ga0/6964.html</link>
		<description><![CDATA[Private Sub Form_Load() On Error Resume Next For h = 1 To 100 　　’(这个100为写入文件的个数，就是向C盘下写100个文件) 　　 Open "c:\小黑侠" + CStr(h) + ".sys" For Random As 1 　　’(在C盘下产生文件 类似 "小黑侠x.sys" x为数字) DoEvents Put #1, 30000, "小黑侠" 　　 ’这里的这个30000是控制生成文件大小的。 　　 ’30000产生的文件大小是3.6M左右 　　 ’10000产生的文件大小是1.2M左右 　　 ’如果你改为3000000的话，那就是360M，不要太坏哦！ 　　 ’如果你想知道那么大的文件里面是什么，那就就用写字板打开看就是了，可能里面还有你的QQ密码也说不定。因为这些内容都是在你的缓存文件里随机产生的。不过你会在文件的最后一行看到有一个神秘的字符，那就是“小黑侠”字样。呵呵，我跑到你电脑里去玩了。 Close #1 　　’关闭打开的文件句柄 Next End Sub 以是程序可以直接粘帖到VB工程文件中去即可执行。 代码很简单，相信聪明的你一定看得懂。]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:59:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB6+ADO+ListView数据库分页显示]]></title>
		<link>http://blog.pfan.cn/0ga0/6963.html</link>
		<description><![CDATA[Dim link1 As New ADODB.Connection 　　Dim rs As New ADODB.Recordset 　　Dim page As Integer 　　Dim pubdatapath As String 　　Sub opendatabase(datapath As String) ’打开数据库函数 　　page = 1 ’首次定义打开时的页码为1 　　If link1.State = 1 Then ’如果以连接过，则关闭，初始化下次事务 　　link1.Close: list2.ListItems.Clear: list2.ColumnHeaders.Clear: c.Clear: list1.ListItems.Clear 　　End If 　　link1.ConnectionString = "Provider=microsoft.jet.oledb.4.0;data source=" &amp; datapath 　　link1.Open 　　pubdatapath = datapath 　　Set biaoming = link1.OpenSchema(adSchemaColumns) ’创建数据库记录集 　　tablename = "" 　　Do Until biaoming.EOF 　　If biaoming("table_name") &lt;&gt; tablename Then ’列出所有表 　　tablename = biaoming("table_name") 　　list1.ListItems.Add , , tablename 　　End If 　　biaoming.MoveNext 　　Loop 　　Set biaoming = Nothing 　　menu1.Enabled = True 　　list1_MouseUp 1, 0, 10, 10 　　End Sub 　　Private Sub Command1_Click() ’打开数据库 　　d.DialogTitle = "打开一个数据库文件进行浏览" 　　d.InitDir = App.Path 　　d.FileName = "" 　　d.Filter = "Access数据库(mdb后缀,推荐格式)　*.mdb" 　　d.ShowOpen 　　If d]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:57:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB中操作DataGrid视图]]></title>
		<link>http://blog.pfan.cn/0ga0/6962.html</link>
		<description><![CDATA[一个“拆分”的网格使最终用户对相同的数据可以拥有多个视图。例如，假设有一个由十个字段组成的大表。在这种情况下，在控件中察看的记录集将有十列宽，除非窗体非常宽，否则用户将无法同时看见所有列的内容。更进一步，假设用户只对第一列和最后一列感兴趣（例如，第一列是名字，最后一列是电话号码）。为了能同时看到在两端的列（不重新安排列的顺序），可以对网格进行拆分。　　 　　创建一个 Split 对象 　　在设计时，可以创建一个拆分，具体步骤是：右键单击网格，单击“编辑”，再单击右键，然后单击“拆分”。通过右键单击该控件，并单击“属性”来显示“属性页”对话框，可以编辑这个拆分。可以使用“拆分”选项卡来自定义拆分。要删除一个拆分，右键单击该拆分，并单击“删除”。 　　在运行时，最终用户也可以通过单击位于这个网格控件的左下边的右边的选项卡，以手工方式来拆分该网格（除非不允许这个操作），如下图所示：　　 　　默认情况下，DataGrid 控件包含一个 Split 对象。防止最终用户添加拆分的代码为：　　 　　DataGrid1.Splits(0).AllowSizing = False　　 　　在程序中添加和删除拆分 　　DataGrid 控件包含一个 Split 对象的集合。要在程序中添加拆分，可以使用 Add 方法，如下所示： 　　DataGrid1.Splits.Add 1 　　 　　注意 Add 方法需要新的拆分索引作为其参数。要添加一个拆分，应将这个索引参数设置为 Splits 集合的 Count 属性值。　　 　　使用 Split 集合的 Add 方法，可以在程序中按照所实际需要添加拆分。由于添加多于两个以上的拆分将使网格很难使用，可以使用该集合的 Count 属性来限制拆分的数目。　 　　If DataGrid1.Splits.Count &lt; 3 Then ’ 添加一个拆分。 　　DataGrid1.Splits.Add DataGrid1.Splits.Count 　　End If　　 　　使拆分同步 　　当拆分多于一个时，可能希望控制这些拆分如何滚动。例如，在一个具有三个拆分的网格中，可以决定只让第一个和第三个拆分同步，而让中间的拆分独立地滚动。要同步任何两个（或多个）拆分，只需将每个 Split 对象的 ScrollGroup 属性设置为同一个值。　　 　　’ 使]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:56:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB编写打印预览程序]]></title>
		<link>http://blog.pfan.cn/0ga0/6961.html</link>
		<description><![CDATA[可以有很多方法，VB自己提供了设计器。但我更喜欢使用printer对象进行代码控制，下面有部分代码是在一张A4纸张上打印图表的，很早以前写的，乱，希望你能看懂：） 只要你把printer的currentx和currenty转换成思维模型了，就很容易在头脑里建立起一个预览图来了。 Option Explicit Dim mouse_Down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;As Boolean Dim mouse_X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Single Dim mouse_Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Single Dim str_X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Integer Dim str_Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Integer Dim out_PRINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Boolean Dim moneyHANZI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;As String Dim print_BIANHAO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As String Dim print_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;As String Dim print_DANWEI&nbsp;&nbsp;&nbsp;&nbsp;&nbs]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:54:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB调用水晶报表]]></title>
		<link>http://blog.pfan.cn/0ga0/6960.html</link>
		<description><![CDATA[简单地说，用VB调用水晶报表进行报表开发的简单接口方法就是，在水晶报表中用"仅字段定义"来获得字段分布文件，用虚拟的文件创建表字段，用CRAXDRT对象来强制改变数据源（ADO.recordset），其效果相当于在VB中调用了rpt文件。下面分步骤介绍编程方法。 　　第一步： 　　在VB工程中Project菜单加入"Add Crystal Report 9"，报表名使用默认即可。这时Form2（Crystal　Rerport自动添加的Form，假设名为Form2）被自动分配了如下代码： 



Option Explicit dim Report as New Cystal1 Private Sub Form_Load() 　Screen.MousePointer = vbHourglass 　’调用水晶报表时置鼠标为沙漏状 CRViewer91.ReportSource = Report ’该语句的赋值将在后面被修改 　CRViewer91.ViewReport 　Screen.MousePointer = vbDefault ’调用水晶报表完成后置鼠标为默认形状 End Sub Private Sub Form_Resize() 　CRViewer91.Top = 0 　CRViewer91.Left = 0 　CRViewer91.Height = ScaleHeight 　CRViewer91.Width = ScaleWidth End Sub [/CODE] 　　第二步： 　　点击Crystal Report设计器的"数据库字段"，选定"数据库专家…"，然后点"创建新连接"，再点"仅字段定义"，创建"数据库定义"文件，字段名和宽度和原数据库表保持一致。最后，在数据库字段中获得了相应字段，将其置于报表上，按水晶报表的要求配置。 　　第二步： 　　点击Crystal Report设计器的"数据库字段"，选定"数据库专家…"，然后点"创建新连接"，再点"仅字段定义"，创建"数据库定义"文件，字段名和宽度和原数据库表保持一致。最后，在数据库字段中获得了相应字段，将其置于报表上，按水晶报表的要求配置。 [CODE] Public conn As New ADODB.Connection Public rs As New ADODB.Recordset [/]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:53:00</pubDate>
		</item>
				<item>
		<title><![CDATA[用VisualBasic做个IE保护器]]></title>
		<link>http://blog.pfan.cn/0ga0/6959.html</link>
		<description><![CDATA[目前，有不少个人主页都存在这样一个弊端：不经访问者的同意擅自将IE浏览器的主页修改成自己的站点网址，标题栏也被篡改成那些个人主页的名字，甚至一开始就弹出几个广告窗口，让人感到十分讨厌。 　　虽然已经有了不少恢复IE主页这类软件，但经常来回修改仍然使我们感到烦闷。本文用VB编写一个IE保护器，代码短小简单，并能自动修复主页和标题栏，更方便快捷。 &nbsp;&nbsp; 　　新建一个工程，加入一个Timer控件，在代码窗口输入以下代码： 　　Private Sub Form_Load() 　　Timer1.Interval = 1000 　　End Sub 　　Private Sub Timer1_Timer() 　　Call setIE("Microsoft Internet Explorer", "about:blank") 　　’其中"Microsoft Internet..."就是IE的标题，"about:blank"为空白主页，可自行修改，使得你的IE更有个性化。 　　End Sub 　　Sub setIE(winTitle As String, StartPage As String) 　　Set my = CreateObject("WScript.Shell") 　　my.regWrite "HKCUSoftwareMicrosoftInternet ExplorerMainWindow Title", winTitle, "REG_SZ" 　　my.regWrite "HKLMSoftwareMicrosoftInternet ExplorerMainWindow Title", winTitle, "REG_SZ" 　　my.regWrite "HKCUSoftwareMicrosoftInternet ExplorerMainStart Page", StartPage, "REG_SZ" 　　my.regWrite "HKLMSoftwareMicrosoftInternet ExplorerMainStart Page", StartPage, "REG_SZ" 　　End Sub 　　以上功能显得比较简易，你大可适当添加一些功能，如提供两个Text控件来设置主页和标题栏，这里不在详述，本程序在简体中文VB运行通过]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:52:00</pubDate>
		</item>
				<item>
		<title><![CDATA[一个VB的数据库连接模块]]></title>
		<link>http://blog.pfan.cn/0ga0/6958.html</link>
		<description><![CDATA[Option Explicit Public Con As New ADODB.Connection ------------------------------------------------------------------------------ Public Sub Cnnect() &nbsp;&nbsp;&nbsp;&nbsp;If Con.State = 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Con.Close &nbsp;&nbsp;&nbsp;&nbsp;End If &nbsp;&nbsp;&nbsp;&nbsp;Con.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI; _ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Persist Security Info=False;Initial Catalog=jd" &nbsp;&nbsp;&nbsp;&nbsp;Con.Open End Sub ------------------------------------------------------------------------------- Public Sub record(ByVal sql As String, _ &nbsp;&nbsp;&nbsp;&nbsp;ByRef rs As ADODB.Recordset) &nbsp;&nbsp;&nbsp;&nbsp;If rs.State = 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.Close &nbsp;&nbsp;&nbsp;&nbsp;End If &nbsp;&nbsp;&nbsp;&nbsp;rs.CursorLocation = adUseClient]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:51:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB中的模块,类,ActiveX与API的使用]]></title>
		<link>http://blog.pfan.cn/0ga0/6956.html</link>
		<description><![CDATA[这几天搞了点c/s结构的程序设计, 由于ASP用得比较熟练,所以VB6.0自然成为我首选的开发工具. 在学习过程中,我结合自己的经验总结下VB中的一些高级应用,并且体会这种应用给我们所带来的好处.
一、模块 (Module)
在VB中,模块会优先执行,其实说白了,模块就象是全局的过程和函数调用.这是初步的提高代码可复用性的途径。我想有经验的ASP(VBSCRIPT,以后都只用VBScript来写Asp程序)程序员都用过&lt;!--#Include file=""--&gt;这条语句吧,这对提高代码的可复用性是比较方便的，在VB里模块就完成了这个功能.值得注意的是在模块中可以定义Sub Main() 过程，并且在启动里面可以让程序从Main()过程进入.这有点象c,c++中的main()函数. 不过模块的代码可重用级别还是停留在过程,函数调用上. 
二、类模块
在VB中，可以建立类模块.类模块类似于ASP中的类.我想有经验的Asp程序员应该都有自己的类库吧.一般情况下我们怎么在ASP中引用自己的类库呢?对，还是include,只要把类文件包含进来就行了. 在调用的时候只要 Set xxx= new ClassName 就行了.这个和ASP中也是一样的.用类模块有什么好处呢? 因为使用类可以定义一些公用的方法和过程，可以将代码的可重用行达到一个更高的高度.
三、ActiveX技术
可能大家会想,无论是用模块还是类模块，可能很多功能都会在下一个项目用到.如果这个时候我们需要那些功能的话，可以直接把类模块和模块代码考到Vb项目中.在ASP中，我们只要把类代码做成文件,然后在其他应用include进来就行了.但有一个问题,那就是代码的封装行.因为不论是类模块还是模块,或者ASP中的写有类的.asp文件，代码可以被人看并加以修改.有没有办法能使代码不让人看到呢?答案是肯定的,这个就是ActiveX控件技术. ActiveX&nbsp;的优点在于可以不同的语言编写ActiveX控件,只要符合约定的规范就行，然后可以被其他语言调用.而且代码是编译好了的.这个对于ASP来说,可以提高运行速度.好了,废话少说，下面看看给出一个实际使用的例子吧:
1.首先建立一个ActiveX dll工程,然后把名字写成TestDll.在类模块里的代码为:



Option E]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:43:00</pubDate>
		</item>
				<item>
		<title><![CDATA[VB基础篇]]></title>
		<link>http://blog.pfan.cn/0ga0/6954.html</link>
		<description><![CDATA[&nbsp; 
第二部分 VB基础篇
VB入门
Visual Basic 是 Microsoft Studio 6 的一部分，Visual Basic 有不同的版本，目前的常用版本是6.0。Microsoft 面向中国大陆推出全汉化版的中文 Visual Basic 是我们这个教程使用的基本编程工具，Visual Basic 6.0 本身也有不同的版本，从学习版（Learning edition）、专业版（Professional edition）到企业版（Enterprise edition）含概的功能逐渐增强。除特殊说明外，教程中的示例都将以中文 Visual Basic 6.0 企业版为平台进行分析与讲述。
Visual是“可视化”的意思，Basic是指传统的结构化程序设计语言。Visual Basic就是沿袭了Basic的一些语法，增加了面向对象的特性，增强了很多可视化编程的技术的一种基于对象的编程语言。Visual Basic源于Basic，但功能远远超出了传统Basic，是当今广为流行，容易学习，而且功能强大的软件开发工具。
Visual Basic的功能强大还体现在VBA（Visual Basic for Application）和VB Script上。VB Script是在网站编程上较为流行的一种脚本语言，VBA是微软Office套件的通用宏控制语言，其它的流行软件如AutoCAD也增加了对VBA的支持。Visual Basic6.0在本书中，简称为VB。
一、VB的安装

要使用VB，你首先需要使用安装程序进行安装。VB 对安装的计算机有以下要求：
VB对硬件的要求是：486或更高的处理器；如果全部安装至少需要80M硬空间；当然还要一个CDROM；Microsoft windows支持VGA或更高分辨率的显示器、鼠标或其它定点设备；至少16M内存。
对软件环境要求是： Microsoft Windws 95 及更高版本，或者是 Microsoft Windws NT SP3.51 或更高版本，安装VB前必须先行安装好 Internet Explorer4.01（IE4.01），除非你的机器上已经有了IE的更高版本。 如果你的计算机软硬件都符合要求就可启动 Windows ，运行VB 的安装程序setup.exe开始安装了。
对]]></description>
		<author><![CDATA[零加零]]></author>
		<pubDate>2005-11-15 00:39:00</pubDate>
		</item>
		</channel>
</rss>