adodb recordset(adodb recordset utf-8)

张工 2022-05-21 19:57:49 阅读:39
  

  【分享成果,随喜正能量】太阳每天是新的,所有的阴晴天气都是云风涌动,雨水运行的结果;月亮每天都是圆的,所有的圆缺变化都是月球运动及人们所处的位置和角度来体现的。如果我们的内心永远充满快乐,我们的处境就会是:千江有水千江月,万里无云万里天。

  《VBA数据库解决方案》教程是我推出的第二套教程。目前第一版已经修改完毕。这套教程定位于中级,是学完字典后的又一次特别讲解。数据库是数据处理的有力工具。教程详细介绍了用ADO连接ACCDB和EXCEL的方法和示例操作。教程第一版的修改主要是完成所有程序文件的32位和64位OFFICE system测试。

  这套教程共分两卷,84讲。以后我们会陆续介绍教程的修改内容。今天的内容是第23课:向数据库添加记录。

向数据库中添加记录

第二十三讲 向一个已有数据表中添加数据记录的方法

  大家好,今天我们继续讲解VBA数据库解决方案第23讲:如何使用VBA向一个已有的数据表中添加记录。在上一讲中,我们谈到了如何将工作表的数据保存到新建的数据表中,这是一个非常好的方法。希望读者在实际工作中多加利用。像《VBA代码解决方案》,读者可以在我的材料中感受到我们实际工作中很多问题的影子。我不止一次说过,VBA很实用,用好了可以大大提高我们的工作效率。今天要讲的是:对于一个已有的数据表,我们想给它添加记录。

1 应用场景的具体分析

  其实这也是最常见的应用,在我们的工作中随处可见。例:在上一讲的讲解中,我们使用了VBA代码来备份之前的销售资料,如下图截图3360所示。

向数据库中添加记录

  第三个月,我们会添加第三个月的数据。这是3360年3月的销售记录。

向数据库中添加记录

  其实这些都是来自于工作的现实,也是工作中的现实问题。读者在学习时可以用这些代码作为例子。

2 将工作表数据追加到数据表中的代码及代码解读

  让我们看看我们的解决方案代码3360。

  Mynz _ 23()'第23讲VBA向现有数据表添加数据记录的方法

  Dim cnADO作为新的ADODB。关系

  Dim rsADO作为ADODB。记录集

  Dim strPath,strSQL,strTable作为字符串

  strPath=ThisWorkbook。路径' \mydata2.accdb '

  StrTable='19年的销售经验'

  cnADO。“开放”提供商=Microsoft。ACE . OLEDB.12.0数据源=' strPath

  strSQL='SELECT * FROM ' strTable

  Set rsADO=New ADODB。记录集

  rsADO。打开strSQL,cnADO,1,3

  向用户报告的记录数

  添加MsgBox之前的记录数为:“rsADO。'记录计数'

  页(' 23 ')。挑选

  添加记录

  t=2

  ' Do While单元格(t,1)' '

  rsADO。将记录指针移至最后一条

  rsADO.addnew

  对于i=0至rsADO。字段.计数- 1

  rsADO。字段(i)=工作表(' 23 ')。细胞(t,i 1)

  接下来我

  rsADO。更新

  t=t 1

  环

  向用户报告的最后记录数

  对话框

4;添加后记录数为:" & rsADO.RecordCount

  rsADO.Close

  cnADO.Close

  Set rsADO = Nothing

  Set cnADO = Nothing

  End Sub

  代码截图:

向数据库中添加记录

  代码解读:

  1):

  Dim cnADO As New ADODB.Connection

  Dim rsADO As ADODB.Recordset

  Dim strPath, strSQL, strTable As String

  strPath = ThisWorkbook.Path & "\mydata2.accdb"

  strTable = "19年销售情况"

  cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

  strSQL = "SELECT * FROM " & strTable

  Set rsADO = New ADODB.Recordset

  rsADO.Open strSQL, cnADO, 1, 3

  以上的代码我用了前期绑定的方法创建的ADO, 并打开了数据表的集合

  2):

  '添加记录

  t = 2

  Do While Cells(t, 1) <> ""

  rsADO.MoveLast

  rsADO.addnew

  For i = 0 To rsADO.Fields.Count - 1

  rsADO.Fields(i) = Sheets("Sheet4").Cells(t, i + 1)

  Next i

  rsADO.Update

  t = t + 1

  Loop

  上述代码是把工作表中的数据添加到数据表中.

  这里需要讲解的是: rsADO.addnew 和 rsADO.Update 语句,这两条语句的作用是是向记录集中添加记录,和写入记录.

  .addnew 告诉记录集,我们要添加一行

  .update 通知记录集,我们要把准备好的这个行写入数据库了.

  3)

  为了达到人机对话的目的,我在两处有了代码如下:

  '汇报给用户记录数

  MsgBox "添加前记录数为:" & rsADO.RecordCount

  '汇报给用户最后的记录数

  MsgBox "添加后记录数为:" & rsADO.RecordCount

  运行的过程如下:首先显示添加前的记录:

向数据库中添加记录

  运行完成后显示添加后的记录数:

向数据库中添加记录

  看看我们运行完,添加好数据之后的数据库截图:

向数据库中添加记录

  今日内容回向:

  1 如何向已经有的数据记录集中添加数据?

  2 ADDNWE 和Update的作用是什么?

  本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm

向数据库中添加记录

  我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

向数据库中添加记录

  

二维码