<?xml version="1.0" encoding="GBK"?>
<?xml-stylesheet href="/style/rss.css" type="text/css"?>
<rss version="2.0" xmlns:eb="http://blog.tom.com/">
<channel>
  <title>望穿秋水</title>
  <link>http://blog.tom.com/yaersi</link>
  <description><![CDATA[  ]]></description>
  <language>zh</language>
  <generator>newblog.tom.com RSS</generator>
  <pubDate></pubDate>    <item>
		<title><![CDATA[ datagrid的用法 ]]></title>
		<link>http://blog.tom.com/yaersi/article/520.html</link>
		<description><![CDATA[ DataGrid 控件是一种类似于电子数据表的绑定控件，可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置，只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性后，就会用数据源的记录集来自动填充该控件，以及自动设置该控件的列标头。然后您就可以编辑该网格的列；删除、重新安排、添加列标头、或者调整任意一列的宽度。<br />　　　　在运行时，可以在程序中切换 DataSource 来察看不同的表，或者可以修改当前数据库的查询，以返回一个不同的记录集合。<br />　　　　注意 DataGrid 控件与 Visual Basic 5.0中的 DBGrid 是代码兼容的，除了一个例外：DataGrid 控件不支持 DBGrid 的“解除绑定模式”概念。DBGrid 控件包括在 Visual Basic 的 Tools 目录中。<br /><br />　　　　<strong>可能的用法</strong><br />　　　　查看和编辑在远程或本地数据库中的数据。<br />　　　　与另一个数据绑定的控件（诸如 DataList 控件）联合使用，使用 DataGrid控件来显示一个表的记录，这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。<br /><br />　　　　使用 DataGrid 控件的设计时特性<br />　　　　可以不编写任何代码，只通过使用 DataGrid 控件的设计时特性来创建一个数据库应用程序。下面的说明概要地说明了在实现 DataGrid 控件的典型应用时的一般步骤。完整的循序渐进的指示，请参阅主题“DataGrid 方案1: 使用 DataGrid 控件创建一个简单数据库应用程序”。<br />要在设计时实现一个 DataGrid 控件<br />　　　　1. 为要访问的数据库创建一个 Microsoft 数据链接 (.MDL) 文件。请参阅“创建 Northwind OLE DB 数据链接”主题，以获得一个示例。<br />　　　　2. 在窗体上放置一个 ADO Data 控件，并将其 ConnectionString 属性设置为在第 1 步中所创建的OLE DB 数据源。<br />　　　　3. 在这个 Ado Data 控件的 RecordSource 属性中输入一条将返回一个记<br />录集的 SQL 语句。例如，Select * From MyTableName Where CustID = 12<br />　　　　4. 在窗体上放置一个 DataGrid 控件，并将其 DataSource 属性设置为这个 ADO Data 控件。<br />　　　　5. 右键单击该 DataGrid 控件，然后单击“检索字段”。<br />　　　　6. 右键单击该 DataGrid 控件，然后单击“编辑”。<br />　　　　7. 重新设置该网格的大小、删除或添加网格的列。<br />　　　　8. 右键单击该 DataGrid 控件，然后单击“属性”。<br />　　　　9. 使用“属性页”对话框来设置该控件的适当的属性，将该网格配置为所需的外观和行为。<br /><br />　　　　在运行时更改显示的数据<br />　　　　在创建了一个使用设计时特性的网格后，也可以在运行时动态地更改该网格的数据源。下面介绍实现这一功能的通常方法。<br /><br />　　　　<strong>更改 DataSource 的RecordSource</strong><br />　　　　更改所显示的数据的最通常方法是改变该 DataSource 的查询。例如，如果DataGrid 控件使用一个ADO Data控件作为其 DataSource，则重写RecordSource和刷新该ADO Data 控件都将改变所显示的数据。<br />　　　　'' ADO Data 控件连接的是 Northwind 数据库的'' Products 表。新查询查找所有<br />　　　　'' SupplierID = 12 的记录。<br />　　　　Dim strQuery As String<br />　　　　strQuery = "SELECT * FROM Suppliers WHERE SupplierID = 12"<br />　　　　Adodc1.RecordSource = strQuery<br />　　　　Adodc1.Refresh<br /><br />　　　　<strong>更改 DataSource</strong><br />　　　　在运行时，可以将 DataSource 属性重新设置为一个不同的数据源。例如，您可能具有若干个 ADO Data 控件，每个控件连接不同的数据库，或设置为不同的 RecordSource 属性。可以简单地将 DataSource 从一个 ADO Data控件重新设置为另一个 ADO Data 控件：<br />　　　　'' 将 DataSource 重新设置为一个连接到 Pubs 数据库的、<br />　　　　'' 使用 Authors 表的 ADO Data 控件。<br />　　　　Set <a name="baidusnap0"></a><strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>DataSource = adoPubsAuthors<br /><br />　　　　<strong>重新绑定 DataSource</strong><br />　　　　当将 DataGrid 控件用于一个远程数据库，诸如 SQLServer 时，可以改变表的结构。例如，可以给这个表添加一个字段。在这种情形下，可以调用Rebind 方法根据新的结构来重新创建该网格。注意，如果已经在设计时改变了这个列的布局，DataGrid 控件将会试图重新创建当前的布局，包括任何空的列。不过，通过首先调用 ClearFields 方法，可以强制该网格重新设置所有的列。<br /><br />　　　　从 DataGrid 返回值<br />　　　　在 DataGrid 被连接到一个数据库后，可能想要监视用户单击了哪一个单元。可以使用 RowColChange 事件——而不是 Click 事件。如下所示：<br />　　　　Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)<br />　　　　　　　'' 显示用户所单击的单元的文字、行和列的信息。<br />　　　　　　　Debug.Print <strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Text; <strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Row; <strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Col<br />　　　　End Sub<br /><br />　　　　<strong>使用 CellText 和 CellValue 方法</strong><br />　　　　当一个列使用 NumberFormat 属性设置格式后，CellText 和 CellValue 属性是很有用的。NumberFormat 属性不必更改实际的数据格式就可以更改任何包含数字的列的格式。例如，给定一个网格，其中包含一个名为 ProductID的、包含整数的列。下面的代码将使 DataGrid 以"P-0000" 的格式来显示数据。换句话说，尽管在 ProductID 字段中所包含的实际数值为 "3"，但该网格所显示的值将是 "P-0003"。<br />　　　　　　Private Sub Form_Load()<br />　　　　　　　　<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Columns("ProductID").NumberFormat = "P-0000"<br />　　　　　　End Sub<br />　　　　要返回数据库中所包含的实际值，应使用 CellValue 方法，如下所示：<br />　　　　　　Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)<br />　　　　　　　　Debug.Print _<br />　　　　　　　　<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Columns("ProductID").CellValue(<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Bookmark)<br />　　　　　　End Sub<br />　　　　注意 上面所用的 CellValue 和下面所用的 CellText 值，都需要将Bookmark 属性作为一个参数，功能才正确。<br />　　　　相反地，如果要返回该字段的格式化的值，应使用 CellText 方法：<br />　　　　　　Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)<br />　　　　　　　　Debug.Print _<br />　　　　　　　　<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Columns("ProductID").CellText(<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">DataGrid1.</strong>Bookmark)<br />　　　　　　End Sub<br />　　　　注意 上面的 CellText 方法等价于使用 DataGrid 控件的 Text 属性。 ]]></description>
		<eb:creationDate>2007-05-17 03:33:47</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 关于Datagrid下标越界 ]]></title>
		<link>http://blog.tom.com/yaersi/article/519.html</link>
		<description><![CDATA[ <BR><strong>问:DataGrid的初始化，怎么老提示下表越界呀！</strong> <br />Adodc1.ConnectionString = PublicStr <br />Adodc1.RecordSource = "select tradecode,qty,billdate,price,tsum,fullname from tbS_detailed" <br />Adodc1.Refresh <br /><br />Set DataGrid1.DataSource = Adodc1 <br />DataGrid1.Columns(0).Width = 12 * 25 * 5 <br />DataGrid1.Columns(1).Width = 12 * 25 * 15 <br />DataGrid1.Columns(2).Width = 12 * 25 * 3 <br />DataGrid1.Columns(3).Width = 12 * 25 * 5 '执行到这里就提示下表越界了 <br />DataGrid1.Columns(4).Width = 12 * 25 * 5 <br />DataGrid1.Columns(5).Width = 12 * 25 * 5 <br /><br /><br />'设置标题 <br />DataGrid1.Columns(0).Caption = "产品型号" <br />DataGrid1.Columns(1).Caption = "初库存台份" <br />DataGrid1.Columns(2).Caption = "初库存成本" <br />DataGrid1.Columns(3).Caption = "入库台份" <br />DataGrid1.Columns(4).Caption = "入库总成本" <br />DataGrid1.Columns(5).Caption = "销售台份"<BR><strong>答:你是加载了一个缺省的DataGrid控件,设计阶段,DataGrid控件界面仅有2列,出错处应是代码行及以下行. <br />DataGrid1.Columns(2).Width = 12 * 25 * 3 <br />解决方法: <br />1)你需用鼠标右键点该控件,选编辑,然后鼠标右键点该控件,选追加(你需显示数据表的字段数-2)次,或按你6列-2次(即4次).此时DataGrid控件界面有6列与你代码中所调整列一致,就不会出现下标越界现象. <br />2)用代码解决动态增加列数</strong> <br />Dim i As Integer <br />Dim c As Column <br />For i = 1 To 4 <br />Set c = DataGrid1.Columns.Add(DataGrid1.Columns.Count) <br />Next <br />With c <br />.Visible = True <br />.Width = 1000 <br />.Alignment = dbgRight <br />End With <br />Adodc1.ConnectionString = PublicStr <br />Adodc1.RecordSource = "select tradecode,qty,billdate,price,tsum,fullname from tbS_detailed" <br />Adodc1.Refresh <br />Set DataGrid1.DataSource = Adodc1 <br />DataGrid1.Columns(0).Width = 12 * 25 * 5 <br />DataGrid1.Columns(1).Width = 12 * 25 * 15 <br />DataGrid1.Columns(2).Width = 12 * 25 * 3 <br />DataGrid1.Columns(3).Width = 12 * 25 * 5 <br />DataGrid1.Columns(4).Width = 12 * 25 * 5 <br />DataGrid1.Columns(5).Width = 12 * 25 * 5 <br /><br />'设置标题 <br />DataGrid1.Columns(0).Caption = "产品型号" <br />DataGrid1.Columns(1).Caption = "初库存台份" <br />DataGrid1.Columns(2).Caption = "初库存成本" <br />DataGrid1.Columns(3).Caption = "入库台份" <br />DataGrid1.Columns(4).Caption = "入库总成本" <br />DataGrid1.Columns(5).Caption = "销售台份" ]]></description>
		<eb:creationDate>2007-05-17 03:31:13</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 动态语言(转） ]]></title>
		<link>http://blog.tom.com/yaersi/article/518.html</link>
		<description><![CDATA[ 好久没有写blog了，都是忙于琐碎的事物。没有太大的意义。我以前写了2篇关于自动编程的文章和一关于OS的文章，现在看来很幼稚，也许过一段时间，再看现在也很幼稚吧，对世界的认识就是螺旋形的上升。<BR>&nbsp;&nbsp; 经过3整年断断续续的思考和一些实践，本来打算在自动编程工具方面，有所建树，但在这个过程中发现了自动编程本身的一些问题。以前考虑的，用模块堆砌，生成软件，是一个死胡同。我们这个世界充满了递归和各个层次上的重复，我们描述这个世界的方法也应该反映这个世界。试图用傻瓜式的模块堆砌软件，就会导致软件尺寸的无限增大，而功能变弱（每秒运行20亿次的计算机！打开个窗口 要好半天。Jbuider？我记得是6，敲个字符要好半天才反应）。我喜欢小而精致的东西，而现在的计算机世界肿大的东西太多。书是越读越薄，思想越归纳越精炼。语言的核心语法就是要精炼，要有一种几条公理推倒出一个世界的魄力。<BR>&nbsp;&nbsp; 这个寒假里又学习了ruby和smalltalk(squeak)两种动态语言的部分内容。受到一些启发。<BR>&nbsp;&nbsp; 现在流行的java等语言和smalltalk都有一定的渊源， smalltalk这种语言已经有35年的历史，它的发明在当时超出了硬件的发展水平，smalltalk 里有简练的面向对象的语法、虚拟机，垃圾回收,IDE。当时甚至有专门运行smalltalk的硬件机器。smalltalk 的作者不久以前说过：现在的语言是一种大倒退。我接触了squeak,也有一些同感吧。<BR>&nbsp;&nbsp;&nbsp; 我以前的认识总是觉得计算机语言和牛顿定律这样的东西至少有一些相似的地方，比如，有牛顿搞出了3定律，别人可不是能轻易搞出个4定律，除非你是爱因斯坦。但计算机语言这个领域，决不是这样，流行的东西，只能说是一种文化，很多的时候决不能说成是一种进步，35年前的语言smalltalk是动态语言，而C++ java C# 却又退回到静态语言。我的思考是：动态语言能做的有些事情，静态语言是先天无法完成的。我给出一个比喻，比如一种X语言没有循环语句，那他怎么做重复的事情呢？只能罗列，一个重复100万次的工作，在X这种语言里，就要写100万个语句来完成这件事情，而在有循环语句的语言里，简单的循环100万次就行了，静态语言和动态相比在更高的循环层次上来说就属于没有循环语句的语言。比如有一个应用是两个类对应两个窗口，第二个窗口改变行为，第一个窗口就要跟着改变行为，如果这种改变只是一两个状态，在静态语言里用if就可以对付，if 是状态1{。。。} else{。。。}<br />，如果是有100万种状态呢&nbsp; 当然要100万个if等等来处理。但一般来讲无论有多少种可能，都有一定的模式可循，就是第一个窗体的行为发生变化，第二个窗体怎么变有一定的模式可循，在动态语言里，当地一个窗体的代码改变时按一定规律改变第二个窗体的代码，就可以实现。如果是这种改变有无限多种可能性，用静态语言就要有无穷多个if这样的语句来实现----静态的语言是个先天的残疾-----没有能力在运行时改变自我。巨大而慢的OS，巨大的数据库，巨大的IDE，根源之一都在这里。有一句话叫：上帝喜欢简单。没有让代码去产生代码，没有让代码去改变代码本身，扼杀了各个层次上的重复和递归，越来越难以学习的各种大而混乱的东西诞生到这个世界上来了。记得一个计算机科学家说过：人类战胜复杂的武器是美丽（beauty）。我觉得很有道理。还有一句中国古话叫：“真传一句话，假传万卷书”。<BR>&nbsp;&nbsp; 人群有时象没有思考能力的羊群，RoR这样的东西，还是多来一些好。<br />&nbsp;&nbsp; 我喜欢开源世界的气氛，商业软件要背负的东西（兼容了等等）太多了。<br />&nbsp;&nbsp; 我设想开发一个微型的系列，一个微型的基于虚拟机的OS，虚拟机的目的是为了增加系统的可移植性，比如基于windows平台上开发一个虚拟机，我的OS里的所有的东西都可以在window平台上象一个应用程序一样运行等等。还有其他好处等等（比如把虚拟机之上的东西在不同的硬件和OS之间随便拷贝），我还设想开发出一种语言应该和smalltalk很接近，基于对象和消息的，完全动态“反射”的，这个系统也就几M 大，轻松的放到U 盘上就可以启动计算机。这种系统一开始就一种网络系统，有能力提供集群的服务。这些东西这个世界上或多或少的已经有了，但能亲手弄这些底层的东西一定很有趣，搞一套自己完全能把握的东西，何苦去弄别人不明不白的或这个技术，那个技术，底层都是相对的黑箱。学别人的这个技术，那个技术，学习的过程中吃惊的感觉不断。<BR>&nbsp; 我觉得以一个人的力量去写这些代码，基本是无法完成，这样的过程痛苦而没有意义，都是属于重复造轮子。如果开发一些自动工具辅助去实现这些，就很有意义。计算机的能力大的很，只是没有更好的开发出来。 ]]></description>
		<eb:creationDate>2007-04-02 09:41:34</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 人的一生有三件事不能等(转） ]]></title>
		<link>http://blog.tom.com/yaersi/article/517.html</link>
		<description><![CDATA[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　 第一是“贫穷”。贫穷不能等，因为一旦时间久了，你将习惯贫穷，到时不但无法突破自我，甚至会抹杀自己的梦想，庸庸碌碌的过一辈子。 <br />　　 第二是“梦想”。梦想不能等，因为人生不同的阶段，会有不同的历练和想法，试想一个问题：如果你20岁时的梦想，在60岁时才得以实现，那会是什么样的一个情况？譬如说你20岁时的梦想是希望能买到一辆法拉利跑车，然后到德国的无限速公路狂飙。你一直努力工作，好不容易到60岁了，总算买得起跑车了，但要实现年轻时的梦想，恐怕也是心有余而力不足吧~ <br />　　 第三是“家人”。家人不能等，或许我们还年轻，未来有很多时间可以让我们摸索、打拼，但是家人呢？他们有时间等我们成功吗？有时间等我们赚到钱，让他们过好日子，让他们以我们为荣？树欲静而风不止，子欲养而亲不待——这是很多人的痛，也是很多人一辈子的遗憾。 <br />　　 人的上半生要不犹豫；人的下半生要不后悔。活在当下，把握每次机会，因为机会稍纵即逝，为自己的生命找到出路！ ]]></description>
		<eb:creationDate>2007-04-02 09:28:22</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 中国与日本德国最可怕的差距! (转） ]]></title>
		<link>http://blog.tom.com/yaersi/article/516.html</link>
		<description><![CDATA[ <div >首先我要说，中国的制造业不发达。我是学机械制造的，谈一些我的体会。 <br /><br />　　　　当我和厂里的师傅们在为了使数控机床提高一级精度而不分白夜进行调试、翻译德文资料时，当我费尽千辛万苦又没有假期和加班费、满身污垢，满手是伤，操作失败了无数次但最终第一次加工制造出精度达到预计的0.0001毫米要求的样品时，我兴奋了一阵子，但紧接着又有了失落感，因为那台加工中心的数控机床是德国造的，数控计算机部分是德国造的，加工软件还是是德国造的，就连一把车刀，一个钻头，都是日本造的！除了厂房，没有一样工具是中国制造！就连厂房也是借鉴了外国的经验。 <br /><br /><br />　　　　同胞们，你们不是搞这个的也许没有深刻的体会，我要加工一件精度为0.0001毫米的零件，所需的工具，就是上述外国制造的东西，这些工具的精度要比产品的精度高好几倍甚至几十倍几百倍！一把用于高精度加工的小小的钻头，咱们就是做不到啊！买日本的要好几千啊！没法子啊。不要以为会一些photoshop之类的时尚软件就沾沾自喜，一整套RO/E正版软件要将近8000万元啊！给你你连安装都不会装，别说使用了，什么是差距？ <br /><br />　　　　前几年上大学时我们学校的大厅里看新闻，个个系的都有，当电视播放日本大学生制造了一个机器人拿到德国与德国大学生的机器人比试时，我们机械系的学生都傻了眼，那个机器人就是现在大家知道的可以双脚保持平衡自我行走的那种，不过没有外壳，学这行的我们一眼就看出它身上布满的控制器、马达、线路，镜头一闪而过，更多的是机器人不靠任何帮助自行双手翻跟头，90度鞠躬，双脚蹦跳前进，别的系的同学和老师都露出笑容“真好玩，太可爱了”，而我们系人除了惊讶，还有发自内心的．．．害怕！真正的害怕，这个差距太大了，这就是制造业，自动控制，材料学，的成就，我恨日本，所以我才害怕。 <br /><br />　　　　外行人不懂这个差距有多大，我这样说，如果战事爆发，中国的制造业还与外国有如此差距，你，还有我，就只有小米加步枪跟人家打了，这不是危言耸听，我们虽然可以逆向制造，但就像台湾买武器和大陆自己生产武器的形式差不多，没有用的。 <br /><br />　　　　现在社会好像越来越偏重对国计民生不起关键作用的产业了，什么房地产开发，计算机，软件，商业，搞得好也行，少数人把房子炒得越来越贵，这种发财之道没什么值得骄傲的我跟你说！说白了就是缺德！计算机普及了，核心制造技术我们又会多少？软件更甭提，黑客不少，可人家软件又好又便宜，你怎么竞争？搞电脑的人太多了！不要以为科幻片都是真的，实际中电脑不会打仗，真正接触的是机器！电脑差距还不是很大，打起仗来，当导弹不准，子弹卡壳，坦克熄火的时候，你还有我还有大家，就真得拿着大刀往前冲了，我不想这样，你呢？ <br /><br />　　　　不要看到靓车就发晕，先不谈２０出头的女孩为国家创造了什么生产价值才能换来改装悍马越野车，要是查老底，中国有钱人有几个原始积累阶段不是靠违反规则的手段来的，敢说不违背良心的又有几个？ <br /><br />　　　　越有钱和能力就越有责任为国家为人民出力，你再看中国现状，有多少有钱宁可买日本十年前的技术生产的轿车在同胞面前炫耀也不把钱投入社会，来之于民归之于民？外国闹水灾就一个劲儿表现善心？他们有他们的道理，这一点他们不跟外国人比素质，反过来还嫌国人素质低。每当我看到外国车是，我的心里是愧疚，对不起大家的感觉，因为我是搞制造的，可我知道咱们祖国连汽车外壳的曲面精加工都困难更甭提发动机了。快点懂事吧，醒醒吧，别再沉迷于ＧＤＰ又增长了，你看看咱们制造的产品的质量，心痛啊！别再像不懂事的孩子似的围着跑车看个不停，拿着超薄随身听等外国造的数码产品到处炫耀了，那是人家淘汰的技术，一个国家的支柱，脊梁，是制造业！ <br /><br />　　　　过去２００年，未来我不知道，反正这个现状是不会变的，别以为能赚钱就是本事，就值得骄傲，当有人炫耀知道见过多少名车，卖出多少房产，设计多少网页，得到谁谁谁的签名的时候，我承认那是你的劳动成果，但我会不屑一顾，我衡量人的能力只看它是不是真的为社会为国家创造出实际的价值，是不是真的提高了生产力，虽然我整天和冰冷的机器打交道，操作复杂的零件三维设计软件熬夜画图，而每个月的工资只有１５００元，穿着老土，跟不上流行，不知道现在谁最火爆，上班挤公交，但面对别人询问我的情况时，我会毫不犹豫的全盘托出，才不管他怎么瞧不起我，因为我是搞机械制造及其自动化的，作为一个劳动者，一个制造业工作者，一个为将来导弹打得准，子弹颗颗精良，坦克发动机无与伦比而努力的人，我充满着自豪，虽然我只挣１５００.</div> ]]></description>
		<eb:creationDate>2007-04-02 09:26:08</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 关于IsNull ]]></title>
		<link>http://blog.tom.com/yaersi/article/515.html</link>
		<description><![CDATA[ <BR>IsNull是一个内部函数，判断参数对象是否为空，<BR>&nbsp;<BR>若是返回true，否则返回false． <br /><BR>Not IsNull(）就是参数对象不是空 ]]></description>
		<eb:creationDate>2007-03-31 03:54:58</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 关于DataGrid1.Bookmark ]]></title>
		<link>http://blog.tom.com/yaersi/article/514.html</link>
		<description><![CDATA[ <BR>数据集的Bookmark属性。<BR>&nbsp;<BR>如果你需要移动记录集的位置，然后在回到现在的位置，就可以使用这个属性。 ]]></description>
		<eb:creationDate>2007-03-31 03:53:25</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 关于On Error ]]></title>
		<link>http://blog.tom.com/yaersi/article/513.html</link>
		<description><![CDATA[ <BR>On Error GoTo label<BR>&nbsp;<br />也就是出现错误跳转至指定标签label处执行语句(可以为空语句) <br /><BR>On Error resume <br /><BR>出现错误紧接着出现错误的下一句继续执行. <br /><BR>On Erroro GoTo line <br /><BR>出现错误跳转到指定行  ]]></description>
		<eb:creationDate>2007-03-31 03:47:43</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 关于Option Explicit ]]></title>
		<link>http://blog.tom.com/yaersi/article/512.html</link>
		<description><![CDATA[ Option Explicit 语句 <br /><br />用于在文件级强制对该文件中的所有变量进行显式声明。 <br /><br />Option Explicit { On | Off } <br /><br />各部分说明 <br /><br />On <br />可选。启用 Option Explicit 检查。如果在 Option Explicit 语句后没有指定 On 或 Off，则默认为 On。 <br />Off <br />可选。禁用 Option Explicit 检查。 <br /><br />备注 <br /><br />如果使用，则 Option Explicit 语句必须出现在文件中其他所有源语句之前。 <br /><br />当 Option Explicit 出现在文件中时，必须使用 Dim、Private、Public 或 ReDim 语句显式声明所有变量。试图使用未声明的变量名将发生编译时错误。 <br /><br />如果没有使用 Option Explicit 语句，则所有未声明的变量都是 Object 类型。 <br /><br />注意 使用 Option Explicit 可避免拼错现有变量的名称，或避免在变量范围不清楚的代码中产生混淆。如果代码中没有指定 Option Explicit，编译器的默认设置将是 Option Explicit On。 <br /><br />示例 <br /><br />本示例使用 Option Explicit 语句强制所有变量的显式声明。试图使用未声明的变量将导致编译时错误。Option Explicit 语句只用在模块级。 <br /><br />Option Explicit On ' Force explicit variable declaration. <br />Dim MyVar As Integer ' Declare variable. <br />MyInt = 10 ' Undeclared variable generates error. <br />MyVar = 10 ' Declared variable does not generate error. ]]></description>
		<eb:creationDate>2007-03-31 03:18:51</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
    <item>
		<title><![CDATA[ 关于vb中.EOF和.BOF ]]></title>
		<link>http://blog.tom.com/yaersi/article/511.html</link>
		<description><![CDATA[ <BR>BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前。 <br /><br />EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后。 <br />返回值 <br /><br />BOF 和 EOF 属性返回布尔型值。 <br /><br />说明 <br /><br />使用 BOF 和 EOF 属性可确定 Recordset 对象是否包含记录，或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。 <br /><br />如果当前记录位于第一个记录之前，BOF 属性将返回 True (-1)，如果当前记录为第一个记录或位于其后则将返回 False (0)。 <br /><br />如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回 True，而当前记录为 Recordset 对象的最后一个记录或位于其前，则将返回 False。 <br /><br />如果 BOF 或 EOF 属性为 True，则没有当前记录。 <br /><br />如果打开没有记录的 Recordset 对象，BOF 和 EOF 属性将设置为 True，而 Recordset 对象的 RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时，第一条记录为当前记录，而 BOF 和 EOF 属性为 False。 <br /><br />如果删除 Recordset 对象中保留的最后记录，BOF 和 EOF 属性将保持 False，直到重新安排当前记录。 ]]></description>
		<eb:creationDate>2007-03-31 03:13:46</eb:creationDate>
		<eb:modificationDate></eb:modificationDate>
    </item>
</channel>
</rss>