|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
INSERT INTO - 向数据库中添加数据
作者:bengdeng | 来源:Excel吧 | 时间:2008-10-09 | 阅读权限:游客 | 会员币:0 | 【大 中 小】
国庆长假终于过去,手上的事也忙得差不多,继续我们的SQL之路,下面的好多语句应该都不能单独说明,因为很多情况下都是组合在一起用的,不过为了一篇文章一个知识点,一个个的来了解,我们就从向数据库添加数据的INSERT INTO开始。
前面几篇 SQL语言教程 中介绍SQL的文章后,我们已可以创建,修改与删除一个数据库,今天介绍的INSERT INTO,我们就可以向上面创建的数据库中添加数据。INSERT INTO添加数据基本有两种方法:一种是一次性输入一笔数据,另一种是一次性输入多笔数据。因为后者还要用到SQL语句中最核心,最重要,最常用,也是最难全懂的Select语句,因此在这一篇文章中,我们先介绍第一种,语法如下:
INSERT INTO 表格名 (列名1, 列名2, ...) VALUES (数值1, 数值2, ...)
上面的语法就是向表格名中指定的表格里添加一行新的数据,在列名1,列名2……中添加对应的值,需要说明的一点是,不一定表格中的每一个列名都指定值,如果没有指定,该列的值就是设定数据库时默认的值。如果列的数值没有,而设定数据库时该列设定的是必填字段,而程序会提示出错。
按照惯例,我们还是给出一段程序来让我们更了解上面说的内容:
Sub 向销存表数据库录入数据()
'*******************************************
'时间:2008-10-9
'作者:bengdeng
'功能:在程序文件同一目录下进销存表数据库中录入数据
'注意:要在工具/引用中引用microsoft activex date objects x.x
' 其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'发布:http://www.excelba.com
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
WN = "进销存表.mdb"
TableName = "明细表"
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
sSql = "INSERT INTO " & TableName & " (物品名称, 结余日期,结余数量,进仓数量,出仓数量)" & _
"VALUES ('铅笔',#" & Date & "#,0,0,0)"
conn.Execute sSql
MsgBox "成功在“" & TableName & "”中增加了一条记录!", , "http://excelba.com"
conn.Close
End If
Set conn = Nothing
End Sub
上面的程序有两点特别说明一下:一个是字符串可以用单引号来特别确认,这个在字符串与SQL的一些保留关键词一样时,特别需要注意;另一个是日期数值的表示方式为——#日期#,否则不正确。同样,我们也给出一段操作Excel的代码:
Sub 向销存表文件录入数据()
'*******************************************
'时间:2008-10-9
'作者:bengdeng
'功能:在程序文件同一目录下进销存表文件中录入数据
'注意:要在工具/引用中引用microsoft activex date objects x.x
' 其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'发布:http://www.excelba.com
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
WN = "进销存表.xls"
TableName = "明细表"
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
"Extended Properties=Excel 8.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
sSql = "INSERT INTO [" & TableName & "$] (物品名称, 结余日期,结余数量,进仓数量,出仓数量)" & _
"VALUES ('一笔',#" & Date & "#,0,0,0)"
conn.Execute sSql
MsgBox "成功在“" & TableName & "”中增加了一条记录!", , "http://excelba.com"
conn.Close
End If
Set conn = Nothing
End Sub
向表中增加并更新记录
Sub addValues()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim myPath As String
Dim myTable As String
Dim arrALL()
Dim arrFields()
Dim arrValues()
Dim i As Long
Dim r As Long
myPath = ThisWorkbook.Path & "\学校管理.mdb"
myTable = "学生档案"
On Error GoTo errmsg
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myPath
rst.Open "select * from " & myTable & " where 1=2", cnn, adOpenDynamic, adLockOptimistic
With Sheet1
r = .Range("a1").End(xlDown).Row
arrALL = .Range("a1:j" & r)
arrFields = WorksheetFunction.Index(arrALL, 1, 0)
For i = 2 To r
arrValues = WorksheetFunction.Index(arrALL, i, 0)
rst.AddNew arrFields, arrValues
Next
End With
MsgBox "数据添加成功", , "添加数据"
Exit Sub
errmsg:
MsgBox Err.Description, , "错误报告"
End Sub
最后大家自己动一下复制上面的代码,在VBA里操作一下,就能更好的理解了。希望通过这些文章,能让你开始对SQL的应用感兴趣,并应用到工作与生活中。
如果没有看到CREATE TABLE - 创建数据表的语句文章的朋友请到http://www.excelba.com/Art/Html/293.html 中利用里面的代码生成这篇文章需要的文件,然后再运行一下这两段代码吧。
转载请注明:本文来自:Excel吧 (www.excelba.com) 详细出处参考:http://www.excelba.com/Art/Html/299.html |
|