博文
VB_ADO(2005-10-10 00:12:00)
摘要:1、数据库连接Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$Dim CnStr$Dim Conn As Adodb.ConnectionFileName = App.Path & "\数据库名"DbIp = ""DbName = ""DbUser = ""DbPw = ""'连接Access数据库:CnStr = "microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileName & ";Jet OLEDB:Database Password=code2000"'连接Oracle数据库:CnStr = "MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & DbName & ";Persist Security Info=True"'其中:'PASSWORD: 密码'User ID: 用户号'Data Source: 数据库名'Persist Security Info:'Provider:'连接VF的DBF库:CnStr = "MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=" & FileName & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"'连接SQL的数据库CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName ......
VB计算农历的算法(2005-10-10 00:11:00)
摘要:VB计算农历的算法 作者: 评价: 上站日期: 2002-05-22 内容说明: 来源: --------------------------------------------------------------------------------'下面是一个关于VB的农历算法'日期数据定义方法如下'前12个字节代表1-12月为大月或是小月,1为大月30天,0为小月29天,'第13位为闰月的情况,1为大月30天,0为小月29天,第14位为闰月的月'份,如果不是闰月为0,否则给出月份,10、11、12分别用A、B、C来表'示,即使用16进制。最后4位为当年家农历新年-即农历1月1日所在公历'的日期,如0131代表1月31日。'GetYLDate函数使用方式如下tYear为要输入的年,tMonth为月,tDay为'日期,YLyear是返回值,返加农历的年份,如甲子年,YLShuXing返回'的是属象,如鼠。IsGetGl是设置是不是通过农历取公历值,如果是,'前三个返回相应的公历日期,而且返回值是一个公历日期。Function GetYLDate(tYear As Integer, tMonth As Integer, tDay As Integer, _ YLyear As String, YLShuXing As String, _ Optional IsGetGl As Boolean) As String On Error Resume Next Dim daList(1900 To 2011)......
VB_身份证号码升位和校验函数(2005-10-10 00:07:00)
摘要:Private Function getCheckCode(ByVal sfID As String) As String'身份证号码升位和校验函数''输入15位号码返回18位新号码'输入18位号码计算是否正确,如果正确返回原号码否则返回"错误"'如果号码长度不等于15或18位返回"错误"' Dim strJiaoYan As Variant Dim intQuan As Variant strJiaoYan = Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2") intQuan = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1) Dim strTemp As String Dim intTemp As Integer Dim i As Integer If Len(sfID) = 15 Then strTemp = Mid(sfID, 1, 6) & "19" & Mid(sfID, 7) ElseIf Len(sfID) = 18 Then strTemp = Left(sfID, 17) Else getCheckCode = "错误" Exit Function &nb......
用按钮调整列表框项目的顺序(2005-10-10 00:02:00)
摘要:Private Sub Command1_Click()With List1 temp = .List(.ListIndex) .List(.ListIndex) = .List(.ListIndex - 1) .List(.ListIndex - 1) = temp .ListIndex = .ListIndex - 1End WithLabel1.Caption = List1.TextEnd Sub
Private Sub Command2_Click()With List1 temp = .List(.ListIndex) .List(.ListIndex) = .List(.ListIndex + 1) .List(.ListIndex + 1) = temp .ListIndex = .ListIndex + 1End WithLabel1.Caption = List1.TextEnd Sub
Private Sub Form_Load()For i = 0 To 10 List1.AddItem iNextList1.ListIndex = 1End Sub......
VB中窗体控制特效代码收集(2005-10-09 23:58:00)
摘要:在Visual Basic中如何拖动窗体或控件 现在的许多Windows下的应用程序,都采用了图形化的界面,例如:WINAMP等!这样做的好处是可以使程序界面更漂亮生动,更具吸引力。但是在这样的界面下就不能使用Windows原来的标题条了,否则会影响界面的美观性。那么在没有标题条的情况下如何用鼠标拖动窗体呢?或者拖动其它的控件呢? 其实,采用API函数调用很容易实现,下面我们以拖动窗体(Form1)为例来具体讲一下实现方法: 1.新建立一个项目,名称为:test.vbp. 2. 填加一个模块,名称为:test.bas,并且在声明部分加入以下代码: Declare Function ReleaseCapture Lib "user32" () As Long Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Const WM_SYSCOMMAND = &H112 Public Const SC_MOVE = &HF012 其中ReleaseCapture函数是用来释放鼠标捕获的,SendMessage函数是一个在WindowsAPI中非常重要的函数,在这里的作用是用来向Windows发送移动窗体的消息。WM_SYSCOMMAND是向Windows发送消息的常量。SC_MOVE是控制移动窗体的常量。请注意:这里SC_MOVE的赋值一定要是&HF012,它表示鼠标对象。 3.在窗体的MouseDown过程中加入以下代码: ReleaseCapture SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0 其中ReleaseCapture函数用来释放鼠标捕获,SendMessage函数向Windows发送移动窗体的消息。 4.保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动。就和其它著名的应用程序一样。 以上讲述了如何在VB中用鼠标拖动窗体,其实,控件的拖动的原理是一样的。 例如以下代码可以实现图片框的拖动: ReleaseCaptur......
多按键同时按下的函数(2005-10-09 23:29:00)
摘要:多按键同时按下的函数'*****************************************************************'本函数用于识别多按键同时按下,最多支持同时按下128个按键'编写时间:2005年6月10日,编写人:田野(Field MAX)''函数用法:KeyClick([KeyDown][KeyUp])'KeyDown 按下的KeyPass(可选)'KeyUp 抬起的KeyPass(可选)''使用方法:分别在KeyDown和KeyUp事件内使用本函数即可获得按键码。' 获取按键码时可不输入附加值。''*****************************************************************Public AllKeyPass(127) As IntegerPublic Function KeyClick(Optional ByVal KeyDown As Integer = 0, Optional ByVal KeyUp As Integer = 0) As StringDim i As LongDim NewKeyPass As String For i = 0 To 127 If KeyDown <> 0 And AllKeyPass(i) = KeyDown Then Exit Function Next For i = 0 To 127 If AllKeyPass(i) = 0 Then AllKeyPass(i) = KeyDown &......
Visual Basic 的数据库编程(二)(2005-10-09 15:35:00)
摘要:五、寻寻觅觅 在数据库管理系统中,输入和查询就象两个孪生姐妹不可或缺,下面将介绍如何创建查询窗口。查询窗口的设计分为两部分:查询结果和查询条件。查询结果是指用户所需要的数据,它包括根据查询条件查询出来的记录,但并非表中每个字段里的数据都需要提供给用户。比如在我们这个例子中,登记表中的登记号的值是用户不感兴趣的,所以在查询结果中,我们不希望显示RegID字段的值。查询条件是用户提出的查询要求。比如在我们这个系统中,可以有姓名条件,当用户想知道某个人的具体情况,他可以输入此人的姓名,就查询出此人各方面的情况;也可以有年龄条件,当用户输入某个年龄段,就会查询出处于这个年龄段的所有人的信息。到底采用哪些查询条件,这需要开发者根据用户和系统的要求进行设计,其具体实现过程大都大同小异。为了节省篇幅,我们就仅以年龄为条件进行查询。查询窗口运行情况如图9。在这个程序中我们使用了一个控件DBGrid,这个控件用来显示查询结果,选中VB的“工程”菜单下的“部件……”项,在控件标签中,选中“Microsoft Data Bound Grid Control 5.0”即可,在工具箱中就会出现DBGrid控件的小图标。其使用和其它控件一样。 为了和数据库连接,DATA控件是不可少的,回忆一下,该怎样设置它的属性,OK!同输入窗口一样,在CONNECT属性中,选中“ACCESS”项。在DatabaseName属性中,输入“C:\TEMP\登记.mdb”。在RecordSource属性中,选中......嘿,嘿,这里稍微有点不同,如果按输入窗口那样的设置,查询结果中就会包含登记号字段了。在此属性中我们应该输入SQL语句: select name as 姓名,sex as 性别,hometown as 籍贯,age as 年龄,birthday as 生日,company as 单位,address as 地址,zip as 邮编,telephone as 电话,fax as 传真 from Register。别着急,尽管这条语句有点长,实际上却比较简单。这条语句的语法是: SELECT 字段名,字段名,……FROM 表名 WHERE 条件; 对照语法,我们可以看出输入的SQL语句的含义:从表Register中查询姓名,性别,籍费,……字段的值。只要在字段列表中不选中登记号字段,在查询结......
Visual Basic 的数据库编程(一)(2005-10-09 15:34:00)
摘要: Visual Basic作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得简单多了。但即便如此,数据库应用程序的开发仍然算得上是VB编程中的难点,这是因为你不仅要熟悉VB中关于数据库编程方面的知识(当然这是十分简单的)还要了解数据库的知识。所以我们先介绍一下数据库的基本知识,算是学习数据库编程前的热身运动吧!
一、热身运动 首先需要声明是,我们这里介绍的数据库知识都是指的关系数据库。所谓关系数据库就是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库。 不管表在数据库文件中的物理存储方式如何,它都可以看作一组行和列,与电子表格的行和列类似。在关系数据库中,行被称为记录,而列则被称为字段。下面是一个客户表的例子。 表1 客户表
客户号 姓名 地址 城市 街道 邮编1723 Doe John 1234 Ffth Avenue New York NY 10043391 Smith Mary 9876 Myrtle Lavee Bosten MA 60783765 Blasel Mortimer 2296j River Road peoria IL 7011
此表中每一行是一个记录,它包含了特定客户的所有信息,而每个记录则包含了相同类型和数量的字段:客户号、姓名等等。 表 是一种按行与列排列的相关信息的逻辑组,类似于工作单表。 字段 数据库表中的每一列称作一个字段。表是由其包含的各种字段定义的,每个字段描述了它所含有的数据。创建一个数据库时,须为每个字段分配一个数据类型、最大长度和其它属性。字段可包含各种字符、数字甚至图形。 记录 各个客户有关的信息存放在表的行,被称为记录。一般来说,数据库表创建时任意两个记录都不能相同。 键 键就是表中的某个字段(或多个字段),它(们)为快速检索而被索引。键可以是唯一的,也可以是非唯一的,取决于它(们)是否允许重复。唯一键可以指定为主键,用来唯一标识表的每行。例如,在前面的例子中,客户标识号 (客户号) 是表的主键,因为客户号唯一地标识了一个客户。 关系 数据库可以由多个表组成,表与表之间可以以不同的方式相互关联。例如,客户数据库还可以有一个包含某个客户的所有定单的表。它只用“客户号”字段来引用该定单的客户,而不在定单表中的每项重复所有客户信......
VB编程的必备技巧(2005-10-09 15:32:00)
摘要:---- 一.怎样创建自定义的光标---- 1.当在设计一个应用程序时,Visual Basic允许程序员将许多控件的MousePointer属性设计成12个预先定义好的鼠标光标之一。然而,有些程序员或许会希望显示一个预定义形状之外的光标。本文说明如何创建一个不同的鼠标指针(光标),包括为一个没有MousePointer属性的控件创建光标。----要在Visual Basic应用程序中将光标(鼠标指针)改变成个不同的形状,可以添加代码来改变希望监视的控件的MouseMove和DragOver事件。----MouseMove事件所包含的代码用于触发该控件的Drag方法。当鼠标在被选中的控件上移动的时候,轮流显示新的鼠标指针。当鼠标指针离开该控件时,则DragOver事件被触发。在Visual Basic程序中,可以重新复位此Drag属性,以便以前的鼠标指针能够被再次显示出来。---- 2.下面的样例程序实现当鼠标指针移动到一个文件列表框控件上时,将其改变成不同的形状。---- 首先采用缺省的方法建立Form1。在Form1上添加一个文件列表框控件,采用缺省的方法建立File1。将File1控件的DragIcon属性设置为所选择的.ICO文件。---- 将如下代码添加到File1的MouseMove事件中:Private Sub File1-MouseMove(ButtonAsInteger, Shift As Integer, X As Single, Y As Single)File1.Drag 1 'icon onEnd Sub---- 将如下代码添加到Form1的DragOver事件中:Private Sub Form-DragOver(Source As Control,X As Single, Y As Single, State As Integer)File1.Drag 0 ′icon offEnd Sub---- 按下F5功能键执行此程序。得到的运行结果是:将鼠标指针移动到该文件列表框控件上时,程序将把所选中的.ICO文件作为缺省的鼠标光标;将鼠标指针离开该控件时,光标则会自动恢复为缺省的形状。---- 二.怎样在窗体上点鼠标右键产生一个弹出式选单(PopUp Menu)?---- 大家都知道,在Windows95/98/2000的桌面和许多流行软件的......
