VB数据库应用实例教程
VBA与数据库操作综合实例教程

VBA与数据库操作综合实例教程在当今信息技术发展迅速的时代,数据的管理和操作变得越来越重要。
VBA(Visual Basic for Applications)作为一种用于MicrosoftOffice应用程序的编程语言,可以为我们提供数据库的操作和管理功能。
本教程将以VBA为工具,带您进行数据库操作的综合实例教程,介绍如何使用VBA编写数据库应用程序,以便更好地管理和处理数据。
一、数据库基础知识在开始学习VBA与数据库操作之前,我们先来了解一些数据库的基础知识。
数据库是用于存储和访问数据的系统,它可以帮助我们有效地组织和管理数据。
常见的数据库管理系统包括Microsoft Access、SQL Server、Oracle等。
1. 数据库表数据库中的数据通常以表的形式组织,表由行和列组成。
每一行代表一条记录,每一列代表一个字段。
一个数据库通常由多个表组成,表与表之间可以建立关系。
2. SQL语言SQL(Structured Query Language)是一种用于与数据库进行交互的标准查询语言。
它可以用于创建、修改和查询数据库中的表和数据。
在VBA中,我们可以使用SQL语句来操作数据库。
二、连接数据库在使用VBA进行数据库操作之前,我们首先要连接到目标数据库。
VBA通过ADO(ActiveX Data Objects)来实现与数据库的连接。
以下是一个连接Access数据库的示例:```vbaDim conn As New ADODB.Connectionconn.Provider = "Microsoft.ACE.OLEDB.12.0"conn.Open "C:\path\to\your\database.accdb"```在这个示例中,我们创建了一个名为`conn`的连接对象,并指定了数据库的提供程序和路径。
接下来,我们需要使用`Open`方法打开数据库连接。
VB中对数据库的操作

VB中对数据库的操作''数据库操作(SmDbCtrl)'Option ExplicitPublic DbStyle As StringDim CT As SmDataDiap''====================================== ================================== '创建一个SQLSERVER定形连接(连接到SQL)'函数名:CreateShape'参数: P_Cnn ADODB连接,ServerName 服务器名,DBname 数据库名,UserID 登录用户名,UPw 登录密码,Timerout 连接超时'返回值:TRUE 连接成功.FALSE 连接失败.'例: CreateShape P_Cnn,"CJH","cjherp001","sa","123",15'====================================== ==================================Public Function CreateShape(ByRef P_Cnn As ADODB.Connection, _ServerName As String, _DbName As String, _UserID As String, _UPw As String, _Optional Timerout As Long = 15) As BooleanDim ReturnVal As BooleanDim ConnStr As StringErr.ClearOn Error Resume NextConnStr = "Provider=MSDataShape;Data Provider=SQLOLEDB.1;Password=" & UPw & ";Persist Security Info=True;User ID=" & UserID & _";Initial Catalog=" & DbName & ";Data Source=" & ServerNameP_Cnn.ConnectionString = ConnStrP_Cnn.ConnectionTimeout = TimeroutP_/doc/9c5451052.html,mandTimeou t = TimeroutP_Cnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = "SQL"ReturnVal = TrueElseErr.ClearDbStyle = ""ReturnVal = FalseEnd IfCreateShape = ReturnValErr.ClearEnd Function'====================================== ================================== '创建一个连接(连接到SQL)'函数名:CreateSqlConn'参数: P_Cnn ADODB连接,ServerName 服务器名,DBname 数据库名,UserID 登录用户名,UPw 登录密码,Timerout 连接超时'返回值:TRUE 连接成功.FALSE 连接失败.'例: CreateSqlConn p_cnn,"CJH","cjherp001","sa","123",15'====================================== ================================== Public Function CreateSqlConn(ByRef P_Cnn As ADODB.Connection, _ServerName As String, _DbName As String, _UserID As String, _UPw As String, _Optional Timerout As Long = 15) As BooleanDim ReturnVal As BooleanErr.ClearOn Error Resume NextIf P_Cnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenP_Cnn.CloseEnd IfP_Cnn.Provider = "MSDASQL.1"P_Cnn.ConnectionString = "Driver={SQL Server};Server=" & ServerName & ";DataBase=" & DbName & ";Uid=" & UserID &";Pwd=" & UPw & ";APP=" & App.Path & ";WSID=" & UserID & ";Connect Timeout=" & Timerout & ";"P_Cnn.ConnectionTimeout = TimeroutP_/doc/9c5451052.html,mandTimeou t = TimeroutP_Cnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = "SQL"ReturnVal = TrueElseErr.ClearDbStyle = ""ReturnVal = FalseEnd IfCreateSqlConn = ReturnValErr.ClearEnd Function''====================================== ================================== '创建一个连接(连接到ACCESS)'函数名:CreateMdbConn'参数: MdbCnn ADODB连接,MdbPath ACCESS数据库路径,Provider JET引擎版本,UserID 登录用户名,UserWord 登录密码'返回值:TRUE 连接成功.FALSE 连接失败.'例: CreateMdbConn p_cnn,"C:\DEMO.MDB","sa","123"'====================================== ==================================Public Function CreateMdbConn(ByRef MdbCnn As ADODB.Connection, _MdbPath As String, _Optional Provider = "Microsoft.Jet.OLEDB.4.0;", _Optional UserID As String = "admin", _Optional UserWord As String = "") As BooleanDim ConStr As StringErr.ClearOn Error Resume NextIf MdbCnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenMdbCnn.CloseEnd If'/------------------------------------------------------------------ConStr = "Provider=" & Provider & _"Data Source=" & MdbPath & ";" & _"Jet OLEDB:Database Password=" & UserWord & ";" & _"User ID=" & UserID & ";"MdbCnn.ConnectionString = ConStrMdbCnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = "MDB"CreateMdbConn = TrueElseErr.ClearDbStyle = ""CreateMdbConn = FalseEnd IfErr.ClearEnd Function'====================================== ==============================='创建一个连接(连接到其它数据库类型)'函数名:CreateOtherConn'参数: OtherCnn ADODB连接,FilePath 数据库路径,UserName 登录用户名,PassWord 登录密码,DbType SmDbType枚举数据库类型'返回值:TRUE 连接成功.FALSE 连接失败.'例:'CreateOtherConn Cnn, "E:\CjhLx\dbf", , , FoxPro'StrSql = "select * from [employee.dbf]"'Set Rs = RsOpen(Cnn, StrSql)'Set DataGrid1.DataSource = Rs'====================================== ===============================Public Function CreateOtherConn(ByRef OtherCnn As ADODB.Connection, _FilePath As String, _Optional UserName As String = "admin", _Optional PassWord As String = "", _Optional DbType As SmDbType = Access) As BooleanDim ConnStr As StringDim DriveName(5) As StringDim tDbType(5) As StringDim UserPwd(5) As StringErr.Clear'/驱动程序DriveName(1) = "{Microsoft Access Driver (*.mdb)}"DriveName(2) = "{Microsoft Excel Driver (*.xls)}"DriveName(3) = "{Microsoft Text Driver (*.txt; *.csv)}"DriveName(4) = "{Microsoft Visual FoxPro Driver};SourceType=DBF"DriveName(5) = "{Microsoft dBase Driver (*.dbf)}"'/类型tDbType(1) = "MDB"tDbType(2) = "XLS"tDbType(3) = "TXT"tDbType(4) = "FDB"tDbType(5) = "DDB"'/用户名和密码.UserPwd(1) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"UserPwd(2) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"UserPwd(3) = ""UserPwd(4) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"UserPwd(5) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"On Error Resume NextIf OtherCnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenOtherCnn.CloseEnd IfConnStr = "Provider=MSDASQL.1;Persist Security Info=False;DRIVER=" & DriveName(DbType) & ";" & UserPwd(DbType) & "DBQ=" & FilePathOtherCnn.ConnectionString = ConnStrOtherCnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = tDbType(DbType)CreateOtherConn = TrueElseErr.ClearDbStyle = ""CreateOtherConn = FalseEnd IfErr.ClearEnd Function'====================================== =================================== '打开一个记录集'函数名:RsOpen'参数: P_Cnn ADODB连接,StrSql SQL查询语句,SetNothing 非连接方式(TRUE默认).连接方式(FALSE)'返回值:记录集'例: RsOpen P_CNN,"SELECT ACHGOODS.* FROM ACHGOODS WHERE GDSID='001''====================================== =================================== Public Function RsOpen(ByRef P_Cnn As ADODB.Connection, _StrSql As String, _Optional SetConnect As Boolean = True) As ADODB.RecordsetDim Rs As New ADODB.RecordsetErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenIf SetConnect Then '使用非连接Rs.CursorLocation = adUseClient '使用客户端游标Rs.LockType = adLockBatchOptimistic '开放式批更新Rs.CursorType = adOpenKeyset '键集游标Else '使用连接(主要用于更新二进制字段)Rs.CursorLocation = adUseClientRs.CursorType = adOpenKeysetRs.LockType = adLockOptimistic '记录锁定End IfRs.Open StrSql, P_Cnn '执行SQLIf SetConnect Then Set Rs.ActiveConnection = Nothing '设置非连接If Err.Number = 0 ThenSet RsOpen = Rs.CloneElseSet RsOpen = NothingEnd IfRs.CloseSet Rs = NothingErr.ClearEnd Function'//执行一条SQL语句Public Function ExecSql(ByRef P_Cnn As ADODB.Connection, _StrSql As String) As BooleanErr.ClearIf P_Cnn.State <> 1 Then P_Cnn.OpenP_Cnn.Execute StrSqlExecSql = (Err.Number = 0)Err.ClearEnd Function''======================================================================== '建立数据库'函数名:CreateDataBase'参数: ServerName 服务器名,UserID 用户名(SA),Pwd 登录密码,DataBasName 建立的数据库名,DataBasPath 库文件目录的绝对路径'返回值:无'例: CreateDataBase "CJH","SA","123","CJHERP001","C:\DB"'====================================== ================================== Public Function CreateDataBase(ServerName As String, _UserID As String, _Pwd As String, _DataBasName As String, _DataBasPath As String) As BooleanDim A As Long, LeftName As StringDim DbC As New ADODB.ConnectionDim CreateBasSql As StringDim BagTrFlag As BooleanErr.ClearIf CreateSqlConn(DbC, ServerName, "Master", UserID, Pwd) ThenIf Right$(DataBasPath, 1) <> "\" Then DataBasPath = DataBasPath & "\"On Error GoTo Errhan:DataBasPath = Trim$(DataBasPath)If Len(DataBasPath) < 2 Then Exit FunctionIf Dir$(Left$(DataBasPath, 2), vbDirectory) = "" Then Beep: Exit Function '根目录是否存在'/---------------------------------------------------------If Right$(DataBasPath, 1) <> "\" Then DataBasPath = DataBasPath & "\"For A = 1 To Len(DataBasPath)If Mid$(DataBasPath, A, 1) = "\" ThenLeftName = Left$(DataBasPath, A)'/如果目录不存在,则先建立If Dir$(LeftName, vbDirectory) = "" Then MkDir LeftName: DoEventsEnd IfNextErr.ClearDbC.BeginTrans'/---------------------------------------------------------CreateBasSql = " CREATE DATABASE " & DataBasName & " ON (NAME=" & DataBasName & ",FILENAME='" & DataBasPath & DataBasName & ".mdf', SIZE=20,FILEGROWTH=4) " & _ " LOG ON (NAME=" & DataBasName & "Log" & ",FILENAME='" & DataBasPath & DataBasName & "Log.ldf',SIZE=20,FILEGROWTH=0)"DbC.Execute CreateBasSql/doc/9c5451052.html,mitTransEnd IfErrhan:If Err.Number <> 0 Then DbC.RollbackTransCreateDataBase = (Err.Number = 0)DbC.CloseSet DbC = NothingErr.ClearEnd Function''建立数据表'函数名:CreageDbT ab'参数: P_Cnn ADO连接,CreateTableSql 建表字符串'返回值:无'例:CreateDbTab P_CNN,CreateTabStrPublic Function CreateDbTab(ByRef P_Cnn As ADODB.Connection, _CreateTableSql As String) As BooleanErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenP_Cnn.BeginTransP_Cnn.Execute CreateTableSqlP_/doc/9c5451052.html,mitTransCreateDbTab = (Err.Number = 0)Err.ClearEnd Function''得到服务器上所有的数据库名'函数名:GetAllDatabases'参数: ServerName 服务器名,UserID 登录用户名(SA),Pwd 登录密码'返回值:数据库名的字符串数组'例: GetAllDatabases "CJH","SA","123"Public Function GetAllDatabases(ServerName As String, _UserID As String, _Pwd As String, _Optional strDriver As String = "SQL Server") As String()Dim PCnn As New ADODB.ConnectionDim RsSchema As New ADODB.RecordsetDim ConnStr As StringDim ReturnVal() As StringDim ReID As LongErr.ClearOn Error Resume NextConnStr = "Driver={" & strDriver & "};"ConnStr = ConnStr & "Server=" & ServerName & ";"ConnStr = ConnStr & "uid=" & UserID & ";pwd=" & Pwd & ";"PCnn.ConnectionString = ConnStrPCnn.Open: ReID = 0Set RsSchema = PCnn.OpenSchema(adSchemaCatalogs)Do Until RsSchema.EOFReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1) = RsSchema!Catalog_NameRsSchema.MoveNextLoopIf PCnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenPCnn.CloseEnd IfGetAllDatabases = ReturnValErr.ClearEnd Function''取某数据库下的数据表'函数名:GetDbTabS'参数: P_Cnn ADO连接'返回值:包含数据表的字符串数组'例: TabArr=GetDbTabS(P_CNN)Public Function GetDbTabs(ByRef P_Cnn As ADODB.Connection) As String()Dim RstSchema As ADODB.RecordsetDim strCnn As StringDim ReturnVal() As StringDim ReID As LongErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenSet RstSchema = P_Cnn.OpenSchema(adSchemaTables)ReID = 0Do Until RstSchema.EOFIf UCase$(Left$(RstSchema.Fields("TABLE_TYPE"), 3)) <> "SYS" ThenReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1) = RstSchema.Fields("TABLE_NAME") ' & ":" & RstSchema!TABLE_TYPEEnd IfRstSchema.MoveNextLoopRstSchema.CloseSet RstSchema = NothingGetDbTabs = ReturnValErr.ClearEnd Function'====================================== ====================================== '取临时表名'函数名:GetTmpName'参数:'返回值:一个唯一的临时表名'例: TmpName=GetTmpName()'(注:临时表名="#TmpTal" & 累加数 & 毫秒数)'====================================== ====================================== Public Function GetTmpName(Optional UserName As String= "") As StringDim ReturnVal As StringDim TimVal As StringStatic K As LongErr.ClearOn Error Resume NextK = K + 1If K >= 2147483645# Then K = 0 '累加数TimVal = timeGetTime() '毫秒数ReturnVal = "#" & "TmpTal" & UserName & TimVal & CT.ToStr(K)GetTmpName = IIf(Err.Number = 0, ReturnVal, "")Err.ClearEnd Function''====================================== ================================='对表格或记录集以 INSERT INTO 保存.'函数名:GetInsertIntoSql'参数: P_Cnn ADO连接,mRs 记录集,DateTabName 目标数据表名'返回值:SQL语句'例: InsertIntoDB P_CNN,RS,"ACHGOODS"'====================================== =================================Public Function InsertIntoDB(ByRef P_Cnn As ADODB.Connection, _DateTabName As String, _ByRef MRs As ADODB.Recordset) As BooleanDim StrSql As StringDim TabFied() As SmFiedArrtr '数据库字段Dim SaveFied() As SmFiedArrtr '表格与数据库同时存在的字段Dim SaveID As LongDim AddSave As BooleanDim AddFile As SmFiedArrtrDim FileCon As StringDim FldVal As StringDim TmpVal As VariantDim FldType As LongDim A As Long, B As Long, I As LongDim FldValColl As New Collection'/--------------------------------------------------------------------------------------Err.ClearOn Error Resume NextIf (MRs.EOF And MRs.BOF) Then Exit FunctionErase TabFiedIf P_Cnn.State <> 1 Then P_Cnn.OpenTabFied = GetTabFldAttrib(P_Cnn, DateTabName) '取数据库字段If UBound(TabFied, 1) > 0 ThenSaveID = 0: AddSave = FalseFor A = 0 To MRs.Fields.Count - 1For B = 0 To UBound(TabFied, 1)If UCase$(TabFied(B).FieldName) =UCase$(MRs.Fields(A).Name) Then'处理重复的字段名.Err.ClearFldValColl.Add TabFied(B), "_" & UCase$(TabFied(B).FieldName)If Err.Number <> 457 ThenSaveID = SaveID + 1ReDim Preserve SaveFied(SaveID - 1)SaveFied(SaveID - 1) = TabFied(B)End IfExit ForEnd IfNextNext'/---------------------------------------------------------------------------------------'/保存字段列表For A = 0 To UBound(SaveFied, 1) '字段列表If SaveFied(A).FieldType <> 205 ThenFileCon = FileCon & "[" & SaveFied(A).FieldName & "],"End IfNext AFileCon = Left$(FileCon, Len(FileCon) - 1)MRs.MoveFirstWhile Not MRs.EOFFldVal = ""For I = 0 To UBound(SaveFied, 1)FldType = SaveFied(I).FieldType '字段类型If FldType <> 205 Then '将IMAGE字段排除TmpVal = CT.ToStr(MRs.Fields(SaveFied(I).FieldName)) '字段值If Len(TmpVal) = 0 Then '对空或NULL的处理Select Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型If SaveFied(I).FieldIsNull <> 0 Then '可接受NULLFldVal = FldVal & "NULL,"ElseFldVal = FldVal & "0,"End IfCase 135 '日期If SaveFied(I).FieldIsNull <> 0 Then '可接受NULLFldVal = FldVal & "NULL,"ElseIf DbStyle = "MDB" ThenFldVal = FldVal & "#" & Now() & "#,"ElseFldVal = FldVal & "'" & Now() & "',"End IfEnd IfCase Else '其它类型If SaveFied(I).FieldIsNull <> 0 ThenFldVal = FldVal & "NULL,"ElseFldVal = FldVal & "'',"End IfEnd SelectElseSelect Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型FldVal = FldVal & "" & TmpVal & ","Case 135If DbStyle = "MDB" ThenFldVal = FldVal & "#" & TmpVal & "#,"ElseFldVal = FldVal & "'" & TmpVal & "',"End IfCase Else '其它类型FldVal = FldVal & "'" & Replace(TmpVal, "'", "''") & "',"End SelectEnd IfEnd IfNextFldVal = Left$(FldVal, Len(FldVal) - 1)StrSql = "INSERT INTO [" & DateTabName & "] (" & FileCon & ") VALUES (" & FldVal & ")"P_Cnn.Execute StrSqlMRs.MoveNextWendEnd IfSet FldValColl = NothingInsertIntoDB = (Err.Number = 0)Err.ClearEnd Function''对表格或记录集以 UPDATE 保存.'函数名:GetUpdataSql'参数: P_Cnn ADO连接,mRs 记录集,DateTabName 目标数据表名,WhereStr 更新条件'返回值:SQL语句'例: UpdataDB P_CNN,RS,"ACHGOODS","WHERE GDSID='001'"Public Function UpdataDB(ByRef P_Cnn As ADODB.Connection, _DateTabName As String, _ByRef MRs As ADODB.Recordset, _WhereStr As String) As BooleanDim StrSql As StringDim TabFied() As SmFiedArrtr '数据库字段Dim SaveFied() As SmFiedArrtr '表格与数据库同时存在的字段Dim SaveID As LongDim AddSave As BooleanDim AddFile As SmFiedArrtrDim FileCon As StringDim FldVal As StringDim TmpVal As VariantDim FldType As LongDim A As Long, B As Long, I As Long'/----------------------------------------------------------------------------------------Err.ClearOn Error Resume Next'If MRs.EOF And MRs.BOF Then Exit FunctionErase TabFiedIf P_Cnn.State <> 1 Then P_Cnn.OpenTabFied = GetTabFldAttrib(P_Cnn, DateTabName) '取数据库字段If UBound(TabFied, 1) > 0 ThenSaveID = 0For A = 0 To MRs.Fields.Count - 1For B = 0 To UBound(TabFied, 1)If UCase$(TabFied(B).FieldName) = UCase$(MRs.Fields(A).Name) ThenSaveID = SaveID + 1ReDim Preserve SaveFied(SaveID - 1)SaveFied(SaveID - 1) = TabFied(B)Exit For '找到数据库与记录集中相同的值,跳出循环.End IfNextNext'/--------------------------------------------------------------------------------------MRs.MoveFirstWhile Not MRs.EOFFldVal = ""For I = 0 To UBound(SaveFied, 1)FldType = SaveFied(I).FieldType '字段类型If FldType <> 205 Then '将IMAGE字段排除TmpVal = CT.ToStr(MRs.Fields(SaveFied(I).FieldName)) '字段值If Len(TmpVal) = 0 Then '对空或NULL的处理Select Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型If SaveFied(I).FieldIsNull <> 0 Then '可按受NULLFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=NULL"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=0"End IfCase 135 '日期时间If SaveFied(I).FieldIsNull <> 0 Then '可接受NULLFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=NULL"ElseIf DbStyle = "MDB" ThenFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=#" & Now() & "#"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]='" & Now() & "'"End IfEnd IfCase Else '其它类型If SaveFied(I).FieldIsNull <> 0 ThenFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=NULL"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=''"End IfEnd SelectElseSelect Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型FldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=" & TmpValCase 135If DbStyle = "MDB" ThenFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=#" & TmpVal & "#"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]='" & TmpVal & "'"End IfCase Else '其它类型FldVal = FldVal & ",[" & SaveFied(I).FieldName & "]='" & Replace(TmpVal, "'", "''") & "'"End SelectEnd IfEnd IfNextFldVal = " Set " & Right$(FldVal, Len(FldVal) - 1) & " " & WhereStrStrSql = "UpDate [" & DateTabName & "]" & FldValP_Cnn.Execute StrSqlMRs.MoveNextWendEnd IfUpdataDB = (Err.Number = 0)Err.ClearEnd Function''取某数据表下所有的字段及其属性'函数名:GetTabFldAttrib'参数: P_Cnn ADO连接,DateTabName 目标数据表名'返回值:SmFiedArrtr 类型数组'例: FiedAtrrib=GetTabFldAttrib(P_CNN,"ACHGOODS")Public Function GetTabFldAttrib(ByRef P_Cnn As ADODB.Connection, _DbTableName As String) As SmFiedArrtr()Dim A As LongDim StrSql As StringDim Rs As New ADODB.RecordsetDim ReturnVal() As SmFiedArrtrDim ReID As LongErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenStrSql = "Select T op 1 * From [" & DbTableName & "]" '取字段名Set Rs = RsOpen(P_Cnn, StrSql)Set Rs.ActiveConnection = NothingErase ReturnVal: ReID = 0For A = 0 To Rs.Fields.Count - 1ReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1).FieldType = Rs.Fields(A).Type '数据类型ReturnVal(ReID - 1).FieldName = Rs.Fields(A).Name '字段名ReturnVal(ReID - 1).FieldIsNull = Rs.Fields(A).Attributes And adFldIsNullable '是否可接受NULLReturnVal(ReID - 1).FieldDefSize = Rs.Fields(A).DefinedSize '定义的数据长度ReturnVal(ReID - 1).FieldActSize = 0 '实际数据长度(因只有字段名),故此值是0NextSet Rs = NothingGetTabFldAttrib = ReturnValErr.ClearEnd Function''取某数据表下除IMAGE字段名的所有字段名'函数名:GetTabFldName'参数: P_Cnn ADO连接,DateTabName 目标数据表名'返回值:String 类型数组'例: StrFld=GetTabFldName(P_CNN,"ACHGOODS")Public Function GetTabFldName(ByRef P_Cnn As ADODB.Connection, _DbTabname As String) As StringDim N As LongDim ReturnVal As StringDim FltArt() As SmFiedArrtrErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenReturnVal = ""FltArt() = GetTabFldAttrib(P_Cnn, DbT abname)For N = 0 To UBound(FltArt)If FltArt(N).FieldType <> 205 ThenReturnVal = ReturnVal & DbTabname & "." & FltArt(N).FieldName & ","End IfNextReturnVal = Left$(ReturnVal, Len(ReturnVal) - 1)GetTabFldName = IIf(Err.Number = 0,ReturnVal, "")Err.ClearEnd Function''取记录集下所有的字段及其属性'函数名:GetRsAttrib'参数: mRs 记录集'返回值:FiedArrtr类型数组'例: RsAtrrib=GetRsAttrib(Rs)Public Function GetRsAttrib(ByRef MRs As ADODB.Recordset) As SmFiedArrtr()Dim A As LongDim ReturnVal() As SmFiedArrtrDim Rs As New ADODB.RecordsetDim ReID As LongErr.ClearSet Rs = MRs.CloneErase ReturnValFor A = 0 To Rs.Fields.Count - 1ReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1).FieldType = Rs.Fields(A).Type '数据类型ReturnVal(ReID - 1).FieldName = Rs.Fields(A).Name '字段名ReturnVal(ReID - 1).FieldIsNull = Rs.Fields(A).Attributes And adFldIsNullable '是否可接受NULLReturnVal(ReID - 1).FieldDefSize = Rs.Fields(A).DefinedSize '定义的数据长度ReturnVal(ReID - 1).FieldActSize = Rs.Fields(A).ActualSize '数据的实际长度NextSet Rs = NothingGetRsAttrib = ReturnValErr.ClearEnd Function''取[窗体控件]与[字段]的对应关系'函数名:GetConT oFld'参数: P_Cnn ADODB.Connection,SelectStr SQL语句.'返回值:SmCtrlCorRs 类型数组'例: FrmAndFied=GetConT oFld(P_Cnn,Me)'*窗体控件命名规则:1-3 控件类型,4 W读写标志,R只读标志,其它,不作处理, 5 数据类型,6----最后.相对的字段名'*关于数据类型:C -字符 I 整数 F 浮点数 A 金额 U 单价 D 日期 T 时间Public Function GetConToFld(ByRef P_Cnn As ADODB.Connection, ByRef Frm As Object, SelectStr As String) As SmCtrlCorRs()Dim RevArr() As SmCtrlCorRsDim StrSql As StringDim Rs As New ADODB.RecordsetErr.ClearOn Error Resume Next' If (Frm Is Nothing) Or (P_Cnn Is Nothing) Then Exit Function ' If Len(Trim$(DbTabname)) = 0 Then DbTabname = /doc/9c5451052.html,'' StrSql = "SELECT TOP 1 * FROM [" & DbTabname & "]"StrSql = SelectStrIf P_Cnn.State <> 1 Then P_Cnn.OpenSet Rs = RsOpen(P_Cnn, StrSql)RevArr = GetConT oRs(Frm, Rs)GetConT oFld = RevArrSet Rs = NothingErase RevArrErr.ClearEnd Function''取[窗体控件]与[记录集]的对应关系'函数名:GetConT oRs'参数: Frm 源窗体名,mRs 源记录集'返回值:SmCtrlCorRs 类型数组'例: FrmAndFied=GetConT oRs(Me,Rs)'*窗体控件命名规则:1-3 控件类型,4 W读写标志,R只读标志,其它,不作处理, 5 数据类型,6----最后.相对的字段名'*关于数据类型:C -字符 I 整数 F 浮点数 A 金额 U 单价 D 日期 T 时间Public Function GetConToRs(ByRef m_Frm As Object, _ByRefMRs As ADODB.Recordset) As SmCtrlCorRs()Dim A As Long, B As LongDim SaveID As LongDim AddSave As BooleanDim ArrayCon() As Control '控件Dim TabFied() As SmFiedArrtr '数据库字段Dim SetFied() As String '同时存在的字段Dim ReturnVal() As SmCtrlCorRs '定义一个结构数组,用于返回Dim AddFile As SmCtrlCorRsDim Rs As New ADODB.RecordsetDim SId As LongDim FrmCon As ControlDim ConName As StringDim ConID As LongDim Frm As FormErr.ClearOn Error Resume NextErase ArrayCon: ConID = 0Set Frm = m_FrmFor Each FrmCon In Frm.Controls '取控件,放入一个数组中ConName = /doc/9c5451052.html,'/将图片框控件排除If UCase$(TypeName(FrmCon)) = UCase$("PictureBox") Or UCase$(TypeName(FrmCon)) = UCase$("Image") Or UCase$(TypeName(FrmCon)) = UCase$("SMPICBOX") ThenElseIf Len(ConName) > 5 ThenIf UCase$(Mid$(ConName, 4, 1)) = "W" Or UCase$(Mid$(ConName, 4, 1)) = "R" ThenConID = ConID + 1ReDim Preserve ArrayCon(ConID - 1)Set ArrayCon(ConID - 1) = FrmConEnd IfEnd IfEnd IfNext'/---------------------------------------------------------------------------------------------Erase TabFiedSet Rs = MRs.CloneIf Rs.EOF And Rs.BOF ThenRs.AddNewEnd IfTabFied = GetRsAttrib(MRs) '取字段属性If UBound(TabFied, 1) > 0 ThenSaveID = 0: AddSave = FalseFor A = 0 To UBound(TabFied, 1)For B = 0 To UBound(ArrayCon, 1)ConName = UCase$(Right$(ArrayCon(B).Name, Len(ArrayCon(B).Name) - 5))。
vb数据库操作实例

vb数据库操作实例在VB中,我们可以使用ADO(ActiveX Data Objects)来进行数据库操作。
ADO提供了一种统一的方法来访问各种类型的数据源,包括关系型数据库、文本文件、Excel文件等。
下面我们将分别以访问Access数据库和SQL Server数据库为例,介绍一些常见的数据库操作实例。
1. 访问Access数据库Access是一种常用的关系型数据库管理系统,我们可以使用VB来访问和操作Access数据库。
首先,我们需要添加对ADODB的引用,然后创建一个连接对象和一个命令对象。
```vbDim conn As New ADODB.ConnectionDim cmd As New mandconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\path\to\database.accdb"conn.Opencmd.ActiveConnection = connmandType = adCmdTextmandText = "SELECT * FROM TableName"Dim rs As ADODB.RecordsetSet rs = cmd.ExecuteWhile Not rs.EOF'处理数据rs.MoveNextWendrs.Closeconn.Close```上述代码首先创建了一个连接对象`conn`,并设置了连接字符串,这里使用了Access数据库的OLEDB提供程序。
然后创建了一个命令对象`cmd`,并设置了命令的类型和文本。
接着执行了命令,并通过`Recordset`对象`rs`来获取查询结果。
最后使用`While`循环遍历结果集,并对数据进行处理。
2. 访问SQL Server数据库SQL Server是一种常用的关系型数据库管理系统,我们可以使用VB来访问和操作SQL Server数据库。
vbnet数据库编程例子

vbnet数据库编程例子是一种用于开发Windows应用程序的编程语言,它具有强大的数据库编程能力。
下面将列举10个数据库编程的例子,以帮助读者更好地理解和掌握数据库编程的技巧。
1. 连接数据库并查询数据提供了多种连接数据库的方式,可以使用来连接各种类型的数据库,如SQL Server、MySQL等。
通过使用连接字符串,可以轻松地连接到数据库,并执行SQL查询语句来检索数据。
2. 插入数据使用可以通过执行INSERT语句将数据插入数据库表中。
可以通过构建SQL INSERT语句,并使用的Command对象来执行该语句。
3. 更新数据通过执行UPDATE语句,可以使用更新数据库表中的数据。
可以根据需要构建SQL UPDATE语句,并使用Command对象执行该语句。
4. 删除数据使用可以执行DELETE语句来删除数据库表中的数据。
可以构建SQL DELETE语句,并使用Command对象执行该语句。
5. 使用事务使用可以创建事务来确保数据库操作的原子性。
可以使用Transaction对象来开始、提交或回滚事务。
6. 使用参数化查询为了提高数据库查询的安全性和性能,可以使用参数化查询。
提供了SqlParameter类来创建参数,并将其与SQL查询语句一起使用。
7. 使用存储过程存储过程是在数据库中预定义的一组SQL语句。
使用可以调用存储过程并传递参数,以执行一系列数据库操作。
8. 使用数据适配器填充数据集数据适配器是连接数据源和数据集的桥梁。
使用可以创建数据适配器,并使用Fill方法将数据库中的数据填充到数据集中。
9. 使用数据绑定显示数据数据绑定是将数据与用户界面进行关联的一种技术。
使用可以将数据集中的数据绑定到各种控件上,以显示数据库中的数据。
10. 处理数据库异常在数据库编程中,可能会出现各种异常情况,如连接失败、查询出错等。
使用可以通过使用Try-Catch块来捕获和处理这些异常,以保证程序的健壮性。
vb数据库编程实例

VB编程实例4(单个数据库表应用程序) 1.打开工程vblx,添加一个窗口Form1,修改Form1的属性,名称(Nam e)为:fxs,Caption(窗口标题)为: 学生档案,保存在你的目录下.在fm ain中添加水平菜单(m3):数据库,添加下拉菜单(m31): 学生档案,其单击代码为:fxs.Show 2.准备好access数据库xs.m db,有两个表xs,cj,在数据源中添加系统DSN,选择驱动程序为Microsoft Access Driver,名称为lx,数据库指向你的xs.m db 添加ADO部件(Mi crosoft ADO Data Control 6.0)和DataGrid 部件(Microsoft DataGrid Control 6.0). 3.在窗体上放一个框架Fram e1,去掉Caption,设BorderStyle为0-None,在Fram e1上放一个Fram e2, 去掉Caption,设BorderStyle为0-None,在Fram e2上放置Adodc1,设其ConnectionString属性为DNS=lx, RecordSource的命令类型为2-adCm dTable,表名为xs,在Fram e2上放置命令按钮数组Comm and1(0~3),Caption分别为:添加,保存,删除,关闭在Fram e1上放一个Fram e3,去掉Caption,在Fram e3上放置标签数组zdm(0~7),设置字体,颜色, Caption分别为序号,登录名,姓名,性别,生日,电子邮件,电话,住址,放置文本框数组zdz(0~7), DataSource为Adodc1,DataField分别为xh,dlm,xm,xb,sr,eml,dh,dz 4.在窗体上放一个DataGrid1,设其DataSource为Adodc1,右击DataGrid1选择检索字段, 再右击调出属性页,在通用页设置允许添加,删除,更新,在列页设置各列的标题分别为: 序号,登录名,姓名,性别,生日,电子邮件,电话,住址,在布局页设置各列的宽和对齐方式5.响应Form的Load事件,添加如下代码: Left = (Screen.Width - Width) \ 2 Top = (Screen.Height - Height) \ 2'窗口居中 Fram e1.Left = 0: Fram e1.Top = 0 Fram e1.Width = ScaleWidth Fram e1.Height = ScaleHeight / 4 Fram e2.Left = (ScaleWidth -Fram e2.Width) \ 2 Fram e3.Left = (ScaleWidth - Fram e3.Width) \ 2 DataGrid1.Top = ScaleHeight / 4: DataGrid1.Left = 0 DataGrid1.Width = ScaleWidth DataGrid1.Height = ScaleHeight * 3 / 4 Adodc1.Refresh 响应Form的Resize事件,添加如下代码: If WindowState = 1 Then Exit Sub'最小化时不执行代码If WindowState = 0 Then Left = (Screen.Width - Width) \ 2 Top = (Screen.Height - Height) \ 2'正常窗口居中End If Fram e1.Left = 0: Fram e1.Top = 0 Fram e1.Width = ScaleWidth Fram e1.Height = ScaleHeight / 4 Fram e2.Left = (ScaleWidth - Fram e2.Width) \ 2 Fram e3.Left = (ScaleWidth - Fram e3.Width) \ 2 DataGrid1.Top = ScaleHeight / 4: DataGrid1.Left = 0 DataGrid1.Width = ScaleWidth DataGrid1.Height = ScaleHeight * 3 / 4 响应Form的Unload事件,添加如下代码: Adodc1.Recordset.Close 响应Comm and1的Click事件Select Case Index Case 0 Adodc1.Recordset.AddNew Case 1 Adodc1.Recordset.Update Case 2 Adodc1.Recordset.Delete Case 3 Unload fxs End Select。
VB数据库编程技术实例

VB数据库编程技术一ODBC概述在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),为了解决此问题,微软公司开发了ODBC(Open DataBase Connectivity,即开放数据库互连)。
ODBC 是一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据库应用编程接口(API),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。
使用ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,屏蔽了DBMS之间的差异,数据库底层操作由各个数据库的驱动程序完成。
因此应用程序有很好的适应性和可移植性,并且具备了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。
主要任务包括:建立与数据源的连接;向数据源发送SQL请求;断开与数据源的连接数据源数据源是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库的运行平台。
数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据源指向一个服务器名,就可在应用程序中实现同时访问多个DBMS的目的。
数据源(Data Source Name,简称DSN)是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。
在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。
数据源分为以下三类:(1)用户数据源:用户创建的数据源,称为“用户数据源”。
此时只有创建者才能使用,并且只能在所定义的机器上运行。
任何用户都不能使用其他用户创建的用户数据源。
(2)系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。
(3)文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。
vb数据库编程实例 -回复

vb数据库编程实例-回复VB数据库编程实例数据库是一个非常重要的工具,可用于存储和管理大量数据。
在编程中,使用数据库可以实现更高级的功能和更复杂的数据处理。
VB(Visual Basic)是一种基于对象的编程语言,提供了丰富的数据库编程功能。
在本篇文章中,我们将通过一个实例来介绍VB数据库编程的基本概念和步骤。
1. 数据库准备在开始之前,我们需要准备一个数据库。
我们可以使用任何数据库系统,如MySQL、Oracle或SQL Server。
在本实例中,我们将使用Microsoft Access作为我们的数据库。
打开Access并创建一个新的数据库文件,我们将其命名为“example.mdb”。
2. 创建表格在我们的例子中,我们将创建一个简单的用户表格。
该表格将包含用户的ID、姓名和年龄信息。
在Access中,创建一个新的表格,为表格添加三个字段,分别为“ID”(自动编号)、“Name”(文本类型)和“Age”(数值类型)。
3. 创建VB应用程序现在,我们将使用VB来创建一个窗体应用程序,以便能够与数据库进行交互。
打开Visual Studio,创建一个新的VB Windows Forms应用程序项目。
这将创建一个空的窗体。
4. 引用在VB中进行数据库编程,我们将使用库。
在解决方案资源管理器中的“引用”下,右键单击并选择“添加引用”。
在“COM”标签页下,找到“Microsoft ActiveX 数据对象2.8库”(或更高版本),勾选并点击“确定”按钮。
5. 添加控件在窗体设计器中,打开工具箱,并从中拖动一个“DataGridView”控件和四个“TextBox”控件到窗体上。
DataGridView将用于显示数据库中的数据,而TextBox将用于添加、更新和删除数据。
6. 设计界面调整控件的位置和大小,使其布局合理。
为TextBox控件添加标签,以标识其对应的数据库字段。
为DataGridView控件添加列,以与表格中的字段对应。
VBA在数据库操作中的应用实例

VBA在数据库操作中的应用实例数据库是现代信息管理的重要工具,能够高效地存储和组织大量的数据。
在实际应用中,我们经常需要对数据库进行操作,例如插入、更新、删除、查询等。
VBA(Visual Basic for Applications)作为一种用于Microsoft Office应用程序的编程语言,具备强大的数据库操作能力。
本文将通过几个实例,介绍VBA在数据库操作中的应用。
一、连接数据库在开始进行数据库操作之前,我们需要先连接数据库。
VBA中可以使用ADODB对象来进行数据库连接。
下面的示例将演示如何连接Access数据库。
```vbaDim conn As ObjectSet conn = CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\database.accdb"```上述代码中,我们首先创建了一个ADODB.Connection对象,然后通过Open方法打开了指定的数据库。
二、插入数据插入数据是数据库操作中最常见的需求之一。
接下来的示例将演示如何使用VBA在数据库中插入一条记录。
```vbaDim strSql As StringstrSql = "INSERT INTO Students (Name, Age, Grade) VALUES ('John', 18, 'A')"conn.Execute strSql```上述代码中,我们首先定义了一条插入语句,然后通过Execute方法执行该语句,即可在数据库的Students表中插入一条新的记录。
三、更新数据更新数据是修改数据库中已有记录的常见操作。
下面的示例将演示如何使用VBA更新数据库表中的记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Visual Basic 6.0实用技术
任务1 数据浏览窗口的设计
〖准备工作〗
〖1〗Adodc控件 选择【工程】的【部件(0)…】选项即可打开“部件”对话框,找到 并选中选中“Microsoft ADO Data Controls 6.0 (OLEDB)”即可 Adodc控件添加到工具箱中。 工具箱中的Adodc控件为: 〖2〗DataGrid控件 选择【工程】的【部件(0)…】选项即可打开“部件”对话框,找到 并选中选中“Microsoft DataGrid Controls 6.0 (OLEDB)”即可将 DataGrid控件添加到工具箱中。 工具箱中的DataGrid控件为:
Visual Basic 6.0实用技术
任务2 数据维护窗口的设计
〖准备知识〗
〖3〗MonthView控件 选择【工程】的【部件(0)…】选项即可打开“部件”对话框,找到并选 中选中“Microsoft Windows Common Controls-2 6.0 (SP3)”即可将 MonthView控件添加到工具箱中。 工具箱中的MonthView控件为: 〖4〗数据表Student的属性、类型和宽度等信息如表所示:
设计步骤 见课本P150
Visual Basic 6.0实用技术
任务4 数据输出到Excel
〖任务要求〗
在本章任务3的数据查询窗口中加入“数据输出到Excel”的功能。 运行结果如图所示:
设计步骤 见课本P158
Visual Basic 6.0实用技术
任务2 数据维护窗口的设计
〖任务要求〗
(8)用户可以将以“学号.jpg”为文件存储在固定的文件夹下,如程序目录下的 “picture”文件夹下,系统会自动读取该图像文件并加入到学生信息维护窗口中 的image控件中。另外,删除学生时自动将该文件删除; (9)录入常用数据时,如“政治面貌”、“民族”和“生源地”等信息,采用组 合框让用户方便选择; (10)录入时间时,采用日历控件进行录入,避免录入格式出错。 实现的数据维护窗口如图所示:
对象名.DriveExists <驱动器名称> 对于可删除介质的驱动器,即使没有介质存在, DriveExists 方法也返回 True。可使用 Drive 对象 的 IsReady 属性确定驱动器是否准备好。
对象名.FileExists <文件路径+文件名> 对象名.FolderExists <文件夹路径> 对象名.GetDrive <驱动器> 对象名.GetFolder <文件夹路径> 对象名.GetFile <文件路径+文件名> 对象名.MoveFile 源文件 目标文件 对象名.MoveFolder 源文件夹 目标文件夹
属性 Xuehao xingming Xingbie Csny Syd Zzmm Mz Bt Zp 学号 姓名 性别 出生年月 生源地 政治面貌 民族 补贴 照片 说明 字符 字符 字符 日期时间型 字符 字符 字符 数值型 字符 类型 宽度 10 8 2 8 10 10 10 7,2 20 备注 NOT NULL,主键 NOT NULL NULL NULL NULL NULL NULL NULL NULL
Visual Basic 6.0实用技术
任务1 数据浏览窗口的设计
〖准备工作〗 〖3〗数据表Student的属性、类型和宽度等信息如表所示:
属性 xuehao xingming xingbie csny syd zzmm Mz Bt 学号 姓名 性别 出生年月 生源地 政治面貌 民族 补贴 说明 字符 字符 字符 日期时间型 字符 字符 字符 数值型 类型 宽度 10 8 2 8 10 10 10 7,2 备注 NOT NULL,主键 NOT NULL NULL NULL NULL NULL NULL NULL
Visual Basic 6.0实用技术
任务2 数据维护窗口的设计
〖准备知识〗
方法2:使用CreateObject方法创建一个FileSystemObject对象,使用格式如下: Set <变量名> = CreateObject(“Scripting. FileSystemObject”) (2)FileSystemObject对象的属性 FileSystemObject的属性只有Drives,这是系统中所有Drive对象的对象集 合,用户可以获取当前计算机系统中所有驱动器的信息。如: Dim fs, d, dc, s Set fs = CreateObject("Scripting.FileSystemObject") Set dc = fs.Drives s = "该计算机中有以下驱动器" & vbCrLf For Each d In dc s = s & d.DriveLetter & " 驱动器 " s = s & vbCrLf Next MsgBox s 运行结果如图所示:
Visual Basic 6.0实用技术
任务2 数据维护窗口的设计统对象(File System Object,FSO)模型提供了一整套对文件系统 进行管理和操作的方法和属性。包括创建、移动、改变或删除文件夹(目录)和 文件,以及获得驱动器的信息和操作驱动器。 〖2〗文件系统对象FileSystemObject对象 FileSystemObject对象是FSO模型中的核心对象,在应用程序中使用FSO 的主要步骤是: ●创建一个FileSystemObject对象。 ●根据应用程序的需要,通过调用FileSystemObject对象中的方法来创建一个新 的对象。 ●通过读取新对象的属性值获取用户所需的信息或利用对象的方法进行所需的操作。 (1)创建FileSystemObject对象 创建FileSystemObject对象有两种方法: 方法1:使用New关键字声明一个变量为FileSystemObject对象类型。使用格 式如下: Dim <变量名> As New FileSystemObject
属性 Code mzname 代码 民族名称 说明 字符 字符 类型 2 20 宽度 备注 NOT NULL,主键 NOT NULL
〖7〗政治面貌表zzmm的属性、类型和宽度等信息如表所示:
属性 Code 代码 说明 字符 类型 2 宽度 备注 NOT NULL,主键
zzmmname
政治面貌名称
字符
DriveExists FileExists FolderExists GetDrive GetFolder GetFile MoveFile MoveFolder
指定驱动器是否存在 指定文件是否存在 指定文件夹是否存在 返回与该驱动器相对应的 Drive对象 返回与该文件夹相对应的 Folder对象 返回与该文件相对应的File对 象 移动文件 移动文件夹
Visual Basic 6.0实用技术
任务2 数据维护窗口的设计
〖准备知识〗
(3)FileSystemObject对象的方法
方法名 CopyFile CopyFolder CreateFolder CreateTextFile DeleteFile DeleteFolder 复制文件 复制文件夹 创建文件夹 创建文本文件 删除文件 删除文件夹 操作类型 语法格式 对象名.CopyFile 源文件 目标文件[,存在的文件是否覆盖] <存在的文件是否覆盖>是 True时文件将被覆盖;如果是 False,不被覆盖;缺省值是 True 对象名.CopyFolder 源文件夹 目标文件夹[,存在的文件夹是否覆盖] 对象名.CreateFolder <文件夹名> 对象名.CreateTextFile <文件名> 对象名.DeleteFile <文件名>[,文件属性为只读是否删除] 对象名.DeleteFolder <文件夹名>[,文件夹属性为只读是否删除] DeleteFolder方法不管指定的文件夹中是否有内容,它都被删除
Visual Basic 6.0实用技术
第四章 数据库应用实例
Visual Basic 6.0实用技术
常见的数据库有Microsoft Access、Microsoft SQL SERVER、Oracle、 Sybase。 以下是数据库中常用的术语: 记录(Record):记录是存放数据的基本单位,一个记录就是一条完整的信 息; 字段(Field):每个记录由若干字段组成; 数据表(Table):记录的集合构成一个数据表; 数据库(Database):若干数据表构成一个数据库。 常用数据库访问技术: (1)DAO(Data Access Object)数据访问对象:DAO是Microsoft Jet数 据库引擎数据访问对象,是第一个面向对象的接口,有着极为广泛的应用。 (2)ODBC是一种底层数据访问技术,允许Visual Basic通过ODBC连接到其 他数据库。 (3)OLE DB(Object Linking and Embedding Database)是新的低层接 口,Microsoft将用它取代ODBC作为连接数据库的主要低层数据访问技术。 (4)ADO是新近发展的数据库访问技术,ADO提供了在OLE DB中不能直接访 问的函数。
Visual Basic 6.0实用技术
任务1 数据浏览窗口的设计
〖任务要求〗
设计一个数据浏览窗口,功能包括: (1)使用多个文本框显示数据表当前记录信息; (2)使用表格显示数据表多条记录信息; (3)提供【首记录】、【上一记录】、【下一记录】、【最后记录】、【指定记 录】功能按钮,并且具有判断记录越界的功能; (4)表格与文本框具有关联功能; (5)动态显示总记录数和当前记录。 实现的数据浏览窗口如图所示:
设计步骤见课本P132