Tag: adodb

使用VBA和ADODB在Excel中精梳表格

使用Excel VBA我希望能够将excel中的两个表与一个公共密钥相结合。 我build议ADODB作为一种方法,但是可以使用其他更高效/优雅的方法。 请看下面的例子: 我有以下开始… 工作表Sheet1 ABC 1 type year1 year2 2 aaa 100 110 3 bbb 220 240 4 ccc 304 200 5 ddd 20 30 6 eee 440 20 Sheet2中 ABC 1 type year1 year2 2 bbb 10 76 3 ccc 44 39 4 ddd 50 29 5 eee 22 23 6 fff […]

虽然不赞成,DAO仍然用于从Excel自动化的Access数据库?

我正在试图把我的头围绕着它。 我查了其他的问题,似乎没有什么太相似的。 Office 2013开发中心包含丰富的DAO示例,并指出使用Access文件(不需要Access窗口)的最简单方法之一,但是DAO是已弃用的技术。 ( https://msdn.microsoft.com/en-us/library/office/ff834801.aspx ) 我正在尝试编写一个Excel加载项(最终结束点),它将以.accdb格式对Access赋值赋值。 我不能只使用ADODB来执行SQL查询来提取数据,除非SQL也可以执行以下操作: 检查指定的报告是否有指定的标题 检查是否存在指定的表,查询,表单和报告 检查表中的特定字段是否存在 检查是否已将特定字段设置为主键 我还需要检查表中是否存在某些值,但是我可以使用SQL来解决这些值。 那么我应该使用DAO还是坚持使用ADODB? 请记住,我正在使用Excel,而不是在Access VBA中编程。

如何将QueryTable连接转换为ADODB连接?

我正在尝试更新使用QueryTables连接到Microsoft SQL Server的旧Excel表。 以下是工作: With ActiveSheet.QueryTables.Add(Connection:= _ "ODBC;DSN=[dbname];UID=[name];PWD=[pass];APP=Microsoft Office 2003;WSID=[machine name];DATABASE=[dbname];AutoTranslate=No;QuotedId=No;AnsiNPW=No" _ , Destination:=Range("A20")) .CommandText = Array("[a valid query]") 有一些更复杂的事情,我希望能够处理这个QueryTable获取的信息,但我不断收到以下错误: 运行时错误“-2147467259(80004005)”:[DBNETLIB] [ConnectionOpen(Invalid Instance())。]无效的连接。 用下面的代码: Private SqlConn As ADODB.Connection Private Sub InitiateSqlConn(Optional User As String, Optional Pass As String, Optional Server As String, Optional DB As String) If SqlConn Is Nothing Then Dim strConn As String […]

使用单元格格式的OLEDB读取Excel

我在C#中使用ADO DB读取Excel表格,但是我面对的问题是无法复制其格式的单元格数据。 例如 我的一个单元格是货币格式($ 2,123.45),所以当我得到结果集时,我得到的单元格值为(2123.45)。 有什么办法可以得到完全相同的单元格数据,因为它显示在Excel表单。 下面是我从Excel中获取结果集的代码 string sQuery = "Select * From [" + sSheet + "$]"; if (dtType == DataLayer.TestData) sWorkbook = Path.GetDirectoryName(ConfigurationManager.AppSettings["resourcesFolder"]) + @"\Data\Test Data\" + sWorkbook; if (dtType == DataLayer.ExpectedData) sWorkbook = Path.GetDirectoryName(ConfigurationManager.AppSettings["resourcesFolder"]) + @"\Data\Expected Data\" + sWorkbook; string cnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sWorkbook + "; Extended Properties= 'Excel 8.0; […]

将列转换为date时间格式时不支持“转换”和“转换”函数(在vbscript – Excel adodb中)

我已经写了一个vbscript连接excel文件(.xlsx)作为数据库使用ADODB连接。 我想从excel文件中提取'StartDate'列中的值大于'15 / 05/2015'的logging,但是在执行adodb查询时,将引发错误为“标准expression式中的数据types不匹配”。 我尝试使用“Convert”和“Cast”function将“StartDate”列转换为date格式,但不支持。 如何编写查询来检索logging? excel中“StartDate”列中的值看起来像“21/05/2015 0:00” ,双击该字段看起来像“21/05/2015 12:00:00 AM” 我试过的查询(所有查询都引发了数据不匹配错误): Select * from [Student$] where StartDate >= '15/05/2015' Select * from [Student$] where StartDate >= '15/05/2015 12:00:00 AM' Select * from [Student$] where StartDate >= '15/05/2015 00:00:00.000' Select * from [Student$] where StartDate >= '15/05/2015 0:00'

以只读模式打开adodb连接到excel文件

案例 :在Windows 7 64bit的Excel 2013中使用VBA脚本中的adodb.connection作为只读文件打开一个excel文件(.xlsx)。 问题 :excel文件似乎打开编辑,即使在adodb的连接string中将Mode参数设置为Read ,以便以只读模式打开连接: szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & SourceFile & ";" & _ "Mode=Read;" & _ "Extended Properties=""Excel 12.0;HDR=Yes;"";" testing :打开连接后,我设置了一个断点,如下所示 Set rsCon = CreateObject("ADODB.Connection") rsCon.Open szConnect 并testing是否在“Mode = Read”中打开了源文件。 通过adodb,它仍然能够以其他用户/连接的写入/编辑模式打开我试图通过文件资源pipe理器打开它,而脚本处于中断模式,但popup一个提示说文件“ 被locking编辑 ”popup我只能以只读模式打开。 那么可能是什么错误?

VBA – 更新进度栏,同时运行SQL查询

我有一个进度条,根据行更新: Call ProgressBar(X) 其中X表示栏显示为“完成”的百分比。 我粗略地计算了整个代码中的各个时间间隔,并把线路放在了几个地方。 在大多数的代码中,它的运行非常顺利,只有一半的代码,问题被迫从10%跳到60%。 我正在使用ADODB连接在代码中运行SQL查询(我不能从代码中拿出来,因为我通过它传递variables)。 从10到60的跳转是执行查询的那一行的哪一侧 Set rs = conn.Execute(QryND) 其中rs定义为ADODB.Recordset,conn定义为ADODB.Connection。 我想理想的是,我会知道是否可以说: Call ProgressBar(10) 'code to the effect of: "in x seconds, execute the next line but in 'the meantime continue with the code Call ProgressBar(20) 'code to the effect of: "in 2x seconds, execute the line but in the 'meantime continue with […]

预期无效的SQL语句; “删除”,“插入”,

我有一个代码 Dim Cn As New ADODB.Connection Dim cmd As ADODB.Command Set cmd = New ADODB.Command Dim i As Long Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 8.0;""" Cn.Open cmd.ActiveConnection = Cn cmd.CommandText = "DECLARE @TS_HD DOUBLE;" & _ "SET @TS_HD = ?TS_HD;" & _ "SELECT So_HD, Ngay_HD, […]

从excel中检索ADODB数据,打开工作簿时无法识别工作表范围的NamedRange

我试图把数据从几个excel中的数据库。 所有的代码都是用Access编写的。 每个Excel都有一张到大约10张数据存在的表单。 他们被组织在一张桌子上。 每个有数据的区域都是带有工作表范围的NamedRange,所以所有工作表的NamedRanges是相同的(名字相同,范围通常相同,但名字很重要),它的正确范围是不同的。 我使用ADODB连接。 我有的问题是,当打开工作簿(例如由其他用户),它不会识别工作表范围NamedRange 连接: adocnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath & FileName & ";Mode=Read;Extended Properties=""Excel 12.0 Xml;HDR=no; IMEX=3;"";" adocnn.cursorlocation = adUseClient 'tested for both server/client 开放logging: sheetname = "CZ00904001" & "$" namedrange = "Version" adors.Open "SELECT * FROM [" & sheetname & namedrange & "]", adocnn, adOpenStatic, adLockReadOnly, adCmdText 所以SELECT * FROM […]

如何防止VB6中的Microsoft ACE和JET复制Excel电子表格中第一行的数据?

我正在处理一个用VB6编写的遗留应用程序,它读取Excel电子表格并将它们插入数据库。 它大部分工作,但如果电子表格中的数据没有在第一行开始,则第一个数据行将被复制。 例如,电子表格中的前3行是空白的,前四行数据如下所示: _| A | B | C | D | E | F | G | 1| | | | | | | | 2| | | | | | | | 3| | | | | | | | 4| 99 |Text1|Text2|Text3|Text4|Text5| 77 | 应用程序连接到Excel电子表格并使用以下代码读取它: Public Function obtainConnectionExcel(sql_conn, uid) As Variant Dim […]