数据库添加自定义数据类型(sqlserver自定义函数)
【分享成果数据库添加自定义数据类型,随喜正能量】 一个人如果怕吃苦、怕吃亏,则成就有限。每件事情数据库添加自定义数据类型的成功,都是有过程数据库添加自定义数据类型的,就是要耐烦、耐久、耐屈、耐苦。。
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订数据库添加自定义数据类型了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的 *** 和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数据库中如何批量添加指定数据
第四十一讲 批量添加工作表中存在数据表中没有的数据大家好,今日继续讲解VBA数据库解决方案的第41讲,今日的内容是:工作表中存在的数据只要在数据表中没有,那么批量添加。在前几个章节中我重点给大家讲解了ADO连接EXCEL的方案,通过这个方案在实际的工作中可以解决一系列的实际问题,有的问题简单些,有的问题会复杂些,但总会在工作中看到实例的影子。ADO连接EXCEL中我测试是连接07版本以上的EXCEL,连接采用的是前期和后期相结合的 *** 。只是出于我个人的一些习惯,有不清楚的朋友要弄清必要的知识点。
VBA数据库解决方案是面向给中级及以上的人员教程,在讲解中侧重于实例的解决,不会再对内部的一些函数啊,语句啊做详细的讲解了,希望基本的知识点还没有完善掌握的朋友,通过《VBA代码解决方案》来完善自己。
1 应用场景的具体分析今日的内容实例:对于工作表中给出的数据,首先在数据表中确认,如果数据表中没有那么就增加相应的记录。如下面的工作表数据:
其中100042 100043的记录在数据库的数据表中是没有的,我们要把这两条的记录增加进数据表中。怎么做到呢?
我们先分析一下:首先我们要检查这些记录在数据表中有没有,对于没有的才增加记录,那么我将建立一个记录集。这个记录集就是在工作表中存在而数据表为null 的记录。
2 批量增加工作表中有而数据表中没有数据的代码及代码解读代码:
Sub mynz_41() '第41将 在数据表没有而工作表中存在的数据在数据表中批量增加的方案
Dim cnADO, rsADO As Object
Dim strPath, strTable, strSQL, strMsg As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "\mydata2.accdb"
strTable = "员工信息"
cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath
'汇报给用户记录数
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "当前记录数为:" & rsADO.RecordCount
rsADO.Close
'加入没有记录,那么增加
strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "] A " _
& "LEFT JOIN " & strTable & " B " _
& "ON A.员工编号=B.员工编号 WHERE B.员工编号 IS NULL"
Set rsADO = CreateObject("ADODB.Recordset")
rsADO.Open strSQL, cnADO, 1, 3
If rsADO.RecordCount > 0 Then
strSQL = "INSERT INTO " & strTable & strSQL
cnADO.Execute strSQL
strMsg = strMsg & vbCrLf & rsADO.RecordCount & "条记录已添加到数据库数据库添加自定义数据类型!"
Else
strMsg = "这些记录都已经存在,没有记录添加到数据库!"
End If
MsgBox strMsg, vbInformation, "提示"
rsADO.Close
'汇报给用户记录数
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "最新的记录数为:" & rsADO.RecordCount
rsADO.Close
'释放内存
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
部分代码截图:
代码讲解:
1) '加入没有记录,那么增加
strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "] A " _
& "LEFT JOIN " & strTable & " B " _
& "ON A.员工编号=B.员工编号 WHERE B.员工编号 IS NULL"
Set rsADO = CreateObject("ADODB.Recordset")
rsADO.Open strSQL, cnADO, 1, 3
If rsADO.RecordCount > 0 Then
strSQL = "INSERT INTO " & strTable & strSQL
cnADO.Execute strSQL
strMsg = strMsg & vbCrLf & rsADO.RecordCount & "条记录已添加到数据库!"
Else
strMsg = "这些记录都已经存在,没有记录添加到数据库!"
End If
MsgBox strMsg, vbInformation, "提示"
rsADO.Close
在这部分代码中实现了建立一个记录集,这个记录集是工作表中存在而数据表中是不存在的,这里要特别注意的是SQL语句的写法:
strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "] A " _
& "LEFT JOIN " & strTable & " B " _
& "ON A.员工编号=B.员工编号 WHERE B.员工编号 IS NULL"
这个SQL的语句中分别连接了EXCEL和数据表,条件是A中存在的在B中为NULL的记录.
2) 本书讲解的是VBA数据库的解决方案,一些SQL语句没有做详细的讲解,大家可以记住即可。SQL语句是一种专门的逻辑语言,如果大家不想专门的去学习,建议大家记住即可。
下面看我们的运行情况:
今日内容回向:
1 如何建立数据库与EXCEL的双重连接?
2 null是0值么?
本讲内容参考程序文件:VBA与数据库操作(第一册).xl ***
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】 待人宽厚,便是真正的有福之人,不仅施与好处给别人,更是为以后的自己积了福气。