【网学网提醒】:网学会员为大家收集整理了Excel+ADO(DAO)+SQL+Access专辑(示例)提供大家参考,希望对大家有所帮助!
Excel+ADO(DAO)+SQL+Access专辑(示例下载)加入收藏
网站地图
网站搜索
简繁默
excel资源下载首页excel教程下载专区excel函数、VBA、技巧视频教程excel函数学习资料excel财务会计报表模板
返回excel论坛VBA学习资料Excel图表专区excel在线学习Excel技巧全接触excel办公常用表格
Excel在线帮助VBA在线帮助excel2007精华教程Excel电子表格问题解答
Excel函数应用手册
excel→VBA学习资料
阅读新闻
Excel+ADO(DAO)+SQL+Access专辑(示例下载)
:实现筛选功能
DimCNNAsNewADODB.Connection定义一个新的ADO对象连接
DimRSTAsNewADODB.Recordset定义一个ADO对象数据集
DimStpath,strSQLAsString定义路径、查询变量
Stpath=ThisWorkbook.Path&;Application.PathSeparator&;
"学生档案.mdb"定义路径及文件名
CNN.Open"provider=Microsoft.jet.OLEDB.4.0;datasource="&;Stpath'&;";Jet
OLEDB:DatabasePassword="&;"123"打开链接:
provider=Microsoft.jet.OLEDB.4.0是软件提供者为Microsoft.jet.OLEDB.4.0
datasource="&;Stpath是链接数据源为Stpath
JetOLEDB:DatabasePassword="&;"123"是如果ACCESS数据库设置有保护密码,此句必不可少
IfComboBox3.Value=""Then如果性别的框中为空则
strSQL="Select*from档案WHERE籍贯LIKE'"&;ComboBox2.Value&;
"'"从档案表中查找籍贯为ComboBox2的记录
Select*是查找所有符合条件的字段,如果想查找符合条件并显示出具体字段,可以用SELECT字段名1,字段名2....from
档案是从档案表中查找符合籍贯LIKE'"&;ComboBox2.Value&;"'"的记录
WHERE后为查找的条件
ElseIfComboBox2.Value=""Then
strSQL="Select*from档案WHERE性别LIKE'"&;ComboBox3.Value&;"'"
Else
strSQL="Select*from档案WHERE性别LIKE'"&;ComboBox3.Value&;"'"&;"AND
籍贯LIKE'"&;ComboBox2.Value&;"'"
EndIf
以上几句为当选取项目不同时设置不同的查找语句
RST.OpenstrSQL,CNN打开记录集
recordset.Open
Source(来记录来源),
ActiveConnection(打开的链接)
Sheet1.Range("A2:G100").ClearContentsSheet1.Cells(2,1).CopyFromRecordset
RST
CopyFromRecordset方法
将一个ADO或DAORecordset对象的内容复制到工作表中,复制的起始位置在指定区域的左上角,Sheet1.Cells(2,
1).CopyFromRecordsetRST为把查找到的记录得制到以Sheet1.Cells(2,1)为顶点的单元格区域中
RST.Close关闭记录集
SetRST=Nothing释放对象变量
SetCNN=Nothing
2:实现查询功能(ADO+SQL)
OnError
GoTo100
IfTextBox1.Text=""Then
MsgBox"请输入",1+16,"系统提示"TextBox1.SetFocus
Else
DimCNNAsNewADODB.Connection
DimRSTAsNewADODB.Recordset
DimStpath,strSQLAsString
Stpath=ThisWorkbook.Path&;Application.PathSeparator&;"学生档案.mdb"
CNN.Open"provider=Microsoft.jet.OLEDB.4.0;datasource="&;Stpath'&;";Jet
OLEDB:DatabasePassword="&;"123"
strSQL="Select*from档案WHERELIKE'"&;TextBox1.Value&;"'"
RST.OpenstrSQL,CNN
TextBox2.Value=RST.Fields("年龄").Value
TextBox4.Value=RST.Fields("性别").Value
TextBox5.Value=RST.Fields("籍贯").Value
RST.Close
SetRST=Nothing
SetCNN=Nothing
EndIf
ExitSub
100:MsgBox"找不到符合条件的记录",1+16,"系统提示"
实现查询功能(DAO)
OnErrorGoTo100
IfTextBox1.Text=""Then
MsgBox"请输入",1+16,"系统提示"
TextBox1.SetFocus
Else
DimRS1AsRecordset
DimDB1AsDatabase
SetDB1=OpenDatabase(ThisWorkbook.Path&;"\"&;"学生档案.MDB")
SetRS1=DB1.OpenRecordset(Name:="档案",Type:=dbOpenDynaset)
RS1.FindFirst"='"&;TextBox1.Value&;"'"
IfRS1.NoMatch=TrueThen
MsgBox"对不起,没有该记录"
RS1.Close
ExitSub
Else
TextBox2.Value=RS1.Fields("年龄").Value
TextBox4.Value=RS1.Fields("性别").Value
TextBox5.Value=RS1.Fields("籍贯").Value
TextBox6.Value=RS1.Fields("联系电话").Value
EndIf
RS1.Close
SetRS1=Nothing
SetDB1=Nothing
EndIf
ExitSub
100:MsgBox"找不到符合条件的记录",1+16,"系统提示"
3:实现数据输入功能(利用DAO)
代码:
DimRS1AsRecordset
DimDB1AsDatabase
OnErrorGoTo1000
SetDB1=OpenDatabase(ThisWorkbook.Path&;"\"&;"学生档案.MDB")
RS1=DB1.OpenRecordset(Name:="档案",Type:=dbOpenDynaset)
WithRS1.AddNew
.Fields("").Value=Me.TextBox1.Value
.Fields("年龄").Value=Me.TextBox2.Value
.Fields("性别").Value=Me.TextBox4.Value
.Fields("籍贯").Value=Me.TextBox5.Value
.Fields("联系电话").Value=Me.TextBox6.Value
.Update
MsgBox"档案表中增加了一条记录!"
EndWith
DB1.Close
ExitSub
4:实现修改指定记录功能
OnErrorGoTo100
IfTextBox1.Text=""Then
MsgBox"请输入",1+16,"系统提示"
TextBox1.SetFocus
Else
DimRS1AsRecordset
DimDB1AsDatabase
SetDB1=OpenDatabase(ThisWorkbook.Path&;"\"&;"学生档案.MDB")
SetRS1=DB1.OpenRecordset(Name:="
档案",Type:=dbOpenDynaset)
RS1.FindFirst"='"&;TextBox1.Value&;"'"
RS1.Edit
RS1.Fields("年龄").Value=TextBox2.Value
RS1.Fields("性别").Value=TextBox4.Value
RS1.Fields("籍贯").Value=TextBox5.Value
RS1.Fields("联系电话").Value=TextBox6.Value
RS1.Update
RS1.Close
SetRS1=Nothing
SetDB1=Nothing
EndIf
ExitSub
100:MsgBox"找不到符合条件的记录",1+64,"系统提示"
5:实现删除指定记录功能
OnErrorGoTo100
IfTextBox1.Text=""Then
MsgBox"请输入",1+16,"系统提示"
TextBox1.SetFocus
Else
DimRS1AsRecordset
DimDB1AsDatabase
SetDB1=OpenDatabase(ThisWorkbook.Path&;"\"&;"学生档案.MDB")
SetRS1=DB1.OpenRecordset(Name:="档案",Type:=dbOpenDynaset)
RS1.FindFirst"='"&;TextBox1.Value&;"'"
RS1.Delete
RS1.UpdateRS1.Close
SetRS1=Nothing
SetDB1=Nothing
EndIf
ExitSub
100:MsgBox"找不到符合条件的记录",1+64,"系统提示"
6:实现排序功能
例:查询结果按年龄字段排序
strSQL="Select*from档案WHERE性别LIKE'"&;ComboBox3.Value&;"'"改为
升序排列(默认)
strSQL="Select*from档案WHERE籍贯LIKE'"&;ComboBox3.Value&;"'ORDERBY
年龄"
降序排列
strSQL="Select*from档案WHERE籍贯LIKE'"&;ComboBox2.Value&;"'ORDERBY
年龄DESC"
7:实现分类汇总功能
DimCNNAsNewADODB.Connection
DimRSTAsNewADODB.Recordset
DimStpath,strSQLAsString
Stpath=ThisWorkbook.Path&;Application.PathSeparator&;"学生档案.mdb"
CNN.Open"provider=Microsoft.jet.OLEDB.4.0;datasource="&;Stpath'&;";Jet
OLEDB:DatabasePassword="&;"123"
strSQL="SELECT籍贯,性别,COUNT(性别)FROM档案GROUPBY籍贯,性别"
RST.OpenstrSQL,CNN
Sheet1.Range("A2:G100").ClearContents
Sheet1.Cells(2,1).CopyFromRecordsetRST
RST.Close
SetRST=Nothing
SetCNN=Nothing
ADO如何新增/修改/刪除資料庫的資料呢?
新增資料庫的資料
首先使用ado連結到Access資料庫ntopsamp.mdb,下SQL指令開啟資料表「產品」的資料,將結果傳回到rs1的recordset當中,ASP程式碼如下:
Setconn1=Server.CreateObject("ADODB.Connection")
conn1.Open"DBQ="&;Server.MapPath("ntopsamp.mdb")&;";Driver={MicrosoftAccessDriver(*.mdb)};"
Setrs1=Server.CreateObject("ADODB.Recordset")
rs1.Open"產品",conn1,1,3
使用Addnew方法以新增一筆資料,ASP程式碼如下:
rs1.Addnew
設定資料表各個欄位的值,您可以使用以下三種語法:
rs1("欄位名稱").Value=值
rs1("欄位名稱")=值
rs1(欄位順序)=值
譬如說,ASP程式碼如下:
rs1("名稱").Value="筆記型電腦"
rs1("數量")=100
rs1(0)="12345"
最後下個Update方法,即將新增的資料儲存到資料表當中。
rs1.Update
rs1.Close
Response.Write("增加資料:名稱=筆記型電腦
")
修改資料庫的資料
若要修改資料庫的資料,首先使用ado連結到Access資料庫ntopsamp.mdb,下SQL指令尋找待修改的資料,將結果傳回到rs1的recordset當中,ASP程式碼如下:
Setrs1=Server.CreateObject("ADODB.Recordset")
sql="SELECT*FROM產品WHERE名稱='筆記型電腦'"
rs1.Opensql,conn1,1,3,1
若找到待修改的資料,設定資料表各個欄位的值,最後下個Update方法,即將新增的資料儲存到資料表當中,ASP程式碼如下:
ifnotrs1.EOFthen
randomize
no1=round(rnd()*10)
new1="筆記型電腦-"&;no1
rs1("名稱").Value=new1
rs1.Update
Response.Write("修改資料成:名稱="&;rs1("名稱")&;"
")
endif
刪除資料庫的資料
若要刪除資料庫的資料,首先使用ado連結到Access資料庫ntopsamp.mdb,下SQL指令尋找待刪除的資料,將結果傳回到rs1的recordset當中,ASP程式碼如下:
Setrs1=Server.CreateObject("ADODB.Recordset")
sql="SELECT*FROM產品WHERE名稱='"&;new1&;"'"
rs1.Opensql,conn1,1,3,1
若找到待刪除的資料,下個Delete方法,即可刪除資料表中的此筆資料,ASP程式碼如下:
ifnotrs1.EOFthen
rs1.Delete
Response.Write("刪除資料:名稱="&;new1)
endif
conn1.Close
PrivateSubtest()
DimconAsNewADODB.Connection
DimrsAsNewADODB.Recordset
DimsqlAsString
'连access
'con.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\db3.mdb;PersistSecurityInfo=False"
setSql="select*from表名"'SQL查询语句
rs.OpenSql,con,1,3'后面的3是确定读写权限的
rs.AddNew'增加一行记录,不用则修改当前记录
While(Notrs.EOF)
rs("字段1")="..."'数据读写操作
rs("字段2")="..."'数据读写操作
...
rs.movenext'移动到下一条记录,增加新记录无需
rs.UpDate'保存写入资料,如果使用只读权限,则不能使用这个方法
WEND
rs.Close'这个方法用来关闭你所代开的表,如果不使用这个方法可造成数据库负担过重或后续操作问题
con.Close
Setcon=Nothing
EndSub赞同0|评论2010-7-216:09蛮王孟不获|二级
'在你要进行插入操作的事件中插入如下代码,以学生信息表为例'
DimrsAsNewADODB.Recordset
DimconnAsNewADODB.Connection
Setrs=Nothing
sql="insertinto学生信息表(,,性别,年龄,电话号码,成绩)values('"&;Text1.Text&;"','"&;Text2.Text&;"','"&;Combo1.Text&;"','"&;Combo2.Text&;"','"&;Text4.Text&;"','"&;T
ext5.Text&;"')"
conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&;App.Path&;"\数据库名.mdb;PersistSecurityInfo=False"
rs.Opensql,conn
MsgBox"插入成功"
'在你要进行修改操作的事件中插入如下代码'
DimrsAsNewADODB.Recordset
DimconnAsNewADODB.Connection
Setrs=Nothing
sql="update学生信息表set性别='男'where='"&;Text1.Text&;"'"
conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&;App.Path&;"\数据库名.mdb;PersistSecurityInfo=False"
rs.Opensql,conn
msgbox"修改成功"
VB如何用ADO向ACCESS数据库插入和修改记录?
添加:
’下面这句连接数据库指定表的所有字段
Adodc1.RecordSource="select*from库存表"
’下面这句添加记录
Adodc1.Recordset.AddNew
下面4句就是通过4个TEXTBOX控件输入字段的数据,如果是数字类型可以加VAL
Adodc1.Recordset.Fields("货物编号")=Text1.Text
Adodc1.Recordset.Fields("货物名称")=Text2.Text
Adodc1.Recordset.Fields("库存量")=Text3.Text
Adodc1.Recordset.Fields("单位")=Text4.Text
’下面这个是修改后更新
Adodc1.Recordset.Update
修改:
'通过主键指定要修改的记录
Adodc1.RecordSource="select*from库存表where货物编号="&;Text1.Text
Adodc1.Refresh
Adodc1.Recordset.Fields("货物编号")=Text1.Text
Adodc1.Recordset.Fields("货物名称")=Text2.Text
Adodc1.Recordset.Fields("库存量")=Text3.Text
Adodc1.Recordset.Fields("单位")=Text4.Text