如何在 SQL - ODBC 中使用相对路径?

矩阵

我的 Excel (ODBC/Access) 有问题。我想刷新计算机中任何文件夹中的数据。我有我从桌面使用的文件,但我想在将数据移至文档等时刷新同一文件中的数据。请您提供我应该做什么?

我有一个文件连接如下:

DSN=Excel Files;DBQ=C:\Users\User\Desktop\Task1\SalesBudget2018.xlsx;DefaultDir=C:\Users\User\Desktop\Task1;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;

谢谢你。

EDIT1:谢谢。我尝试使用您的解决方案,但收到错误:“运行时错误 2147467259 数据库或对象为只读”,我的代码如下。该错误与“.Open”行有关:

Sub RefreshData()

Dim CreateNew As Object
Dim RunSELECT As Object
Dim Data As String
Dim SQL As String

FolderPath = ActiveWorkbook.path

Path = Left(FolderPath, InStrRev(FolderPath, "\") - 1)

Set CreateNew = CreateObject("ADODB.Connection")
With CreateNew
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & Path & "\SalesBudget2018.xlsx" & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;"";"
    .Open
End With

'Run SQL

SQL = "SELECT * FROM [twRynki$]"
Set RunSELECT = cn.Execute(SQL)
Do
   output = output & RunSELECT(0) & ";" & RunSELECT(1) & ";" & RunSELECT(2) & vbNewLine
   Debug.Print RunSELECT(0); ";" & RunSELECT(1) & ";" & RunSELECT(2)
   rs.Movenext
Loop Until rs.EOF
    
End Sub
阿尔伯特·D·卡尔勒

你的路径实际上根本不是相对的。但是 ACE/JET 数据引擎无论如何都不支持相对路径。相对路径是

\Data\mydb.mdb

因此,上面将是一个名为 data from current location 的文件夹。使用 relative 向下的一个文件夹是:

..\Data\mydb.mdb

但是,不支持 ACE/Access 相对路径。但是,当我们希望软件从当前文件夹中工作时,我们该怎么做?我们在 APPLICATION 启动时简单地获取并使用完整的路径名。因此,您可以获取/抓取当前文件夹。在 Excel VBA 中,您可以使用这个:

ActiveWorkbook.Path

所以上面会给你当前的路径。因此,您可以在代码中使用它来设置连接字符串。那么,即使在访问中,我们是否希望该软件在任何文件夹中工作?我们只是在启动时获取/获取完整路径名。因此,该软件可以在任何文件夹中运行,并且您可以有效地获得相对地址,因为您“不关心”软件的放置位置,因为无论如何您总是会获取/获取完整的路径名。因此,在上面,您可以附加一个名为 data 的文件夹名称

ActiveWorkbook.Path & "\Data\Mydb.accdb"

因此,从当前工作簿位置,您始终可以拥有一个名为 data 的文件夹,在该文件夹中您可以拥有您的数据库。因此,实际上您确实获得了相对寻址,但您总是按照上述方式提取当前工作簿的完整路径名。最终结果是您不会错过没有某种形式的相对寻址,因为您不需要使用这种方法。

以上是针对 Excel VBA 的。从 Access VBA 获取当前路径?你可以使用这个:

currentproject.Path

因此,您到 Excel 的连接字符串可能是这样的:

dim strExcelPath   as string
strExcelPath = CurrentProject.Path & "\Task1\SalesBudget2018.xlsx"

不清楚访问应用程序是否与 task1 位于同一文件夹中?假设是,那么这将起作用:

strExcelPath = CurrentProject.Path & "\SalesBudget2018.xlsx"

所以,现在文件夹可以在桌面上,我的文件 - 没关系。因此,您可以将上述内容用作连接字符串的一部分。不清楚您是链接到 Excel(链接表),还是使用 VBA 并说 ADO 代码。不过,这真的无所谓。在应用程序启动时,你得到上面的连接字符串,对照链接表检查它——如果相同则什么都不做。如果不同,则您重新链接该表。因此,如果文件夹被移动,您只需重新链接一次。无论您将文件夹移到何处?只要您假设 Excel 工作表与访问应用程序位于同一文件夹中,那么您就可以开始了。如前所述,您可以在上面添加一个子文件夹,例如 ExcelSheets。再一次,无论你把这个文件夹和 Access 部分移动到哪里,只要子文件夹在同一个目录/文件夹中,

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中使用相对路径

如何在Play框架项目中使用相对路径访问资源文件?

如何在环境变量或相对路径中使用替换指令

如何使用Rstudio相对路径

如何避免在Angular 2中使用相对路径较长的导入?

如何使用相对路径在Webpack中使用SCSS(SASS)加载真棒字体?

如何在Scala中使用相对路径读取文本文件

我如何在Doxygen配置中使用相对路径名

如何在ReSharper DotSettings图层中使用相对路径

如何在Node-Loader和本机插件中使用相对路径

如何在Taleo Connect客户端中使用相对路径?

如何在使用MVC的现有ASP.NET Core应用中使用React Router设置相对路径

如何使用pathlib标准化相对路径

如何在open()中使用相对路径在python中打开文件?

如何在Databricks中使用R Notebook中的相对路径?

如何在Angular Library中使用文件的相对路径?

如何在Visual Studio中使用python设置相对路径?

如何在CodeBuild / Ubuntu(TS2307)中使用tsc解析相对路径?

如何在JSON中使用Groovy Gpath获取相对路径?

如何在Windows CMD上使用相对路径?

Thunderbird扩展-如何在Javascript中使用相对路径?

如何在CodeIgniter中使用相对路径?

如何使Excel在外部工作簿链接中使用相对路径

如何在XML配置中的Spring集成中使用相对路径

如何在Orchard和System.IO.File方法中使用(根)相对路径?

如何在CMake生成的解决方案中使用相对路径打开源代码中的文件

如何让`zip` 在脚本中使用相对路径?

如何在 XDocument.Load 中使用相对路径与 Xamarin?

如何在 React 或 Next.js 中使用绝对路径而不是相对路径?