使用 OleDb 从 Access Forms 连接到 SQL Server

     2023-05-07     152

关键词:

【中文标题】使用 OleDb 从 Access Forms 连接到 SQL Server【英文标题】:Connecting to SQL Sever From Access Forms Using OleDb 【发布时间】:2017-03-07 15:30:41 【问题描述】:

我正在开展一个将 Microsoft Access 后端迁移到 SQL Server 后端的项目,我的客户坚持使用 Access 创建表单来执行任何插入、更新和删除操作。问题是他的机器上有 SQL 数据工具,而他团队中的其他人(没有数据工具)也需要能够使用这些表单。我认为解决此问题的最佳方法是使用和 OleDb 连接,通过访问连接到表单,以便他的团队可以使用它,而我的访问知识非常有限。到目前为止,我所拥有的只是下面的内容

“Driver=SQLOLEDB;Data Source=SomeServer;Initial Catalog=SomeDatabase;Integrated Security=SSPI”

我知道用户对 SQL 框有信任,并且可以通过 ODBC 连接。我们只是无法让 OleDb 正常工作。非常感谢任何有关如何在访问表单中部署 OleDB 连接的帮助。

【问题讨论】:

我不明白你的问题。 “在 Access 表单中部署 OleDB 连接”是什么意思?你有代码给我们看吗?什么不工作? 我所有的代码都是我包含的。由于能力,客户无法使用程序化解决方案。我根本不熟悉访问权限,并且有一种方法可以建立从访问权限到 SQL Server 的连接,我全神贯注。我的问题是我们尝试过的一切都不起作用或出现错误。诸如找不到连接文件之类的东西。 【参考方案1】:

这是我们用于 SQL Server 的连接。它支持使用受信任的连接或 SQL Server 身份验证。

Call GetConnection(gvstr_SQLServer_Name, gvstr_SQLServer_Database, _
        cnConn, adUseServer, False, False)

    If GetConnection(gvstr_SQLServer_Name, gvstr_SQLServer_Database, _
            gv_DBS_SQLServer, adUseServer, True, False) = True Then
        gvbln_UsingSQLServer = True
        DoCmd.Hourglass True
        ReLink_SQLSERVER_Tables
    Else
        gvbln_UsingSQLServer = False
    End If



Public Function GetConnection(ByVal strDSN As String, _
    ByVal strDatabase As String, _
    ByRef cnLocal As ADODB.Connection, _
    ByVal CursorLoc As CursorLocationEnum, _
    ByVal UsePassword As Boolean, _
    ByVal blnTrusted As Boolean) As Boolean

Dim intWaitDuration     As Integer
Dim strConnectString    As String
Dim strDisplay          As String

Const CURRENT_METHOD As String = "GetConnection"
On Error GoTo ERROR_HANDLER
GetConnection = False
intWaitDuration = 60     
Retry_Connection:
If cnLocal Is Nothing Then Set cnLocal = New ADODB.Connection
If cnLocal.State = adStateOpen Then
        Write_To_Log "Connection already open -- -will not reopen!!"
    GetConnection = True
    GoTo Proc_Exit
End If

With cnLocal
    Debug.Print "Use TRUSTED CONNECTION (ABOVE)"
    If gvstr_Workstation = "my-pc" Then
        strConnectString = "Driver=SQL Server;" & _
                                "Server=" & strDSN & ";" & _
                                "Database=" & strDatabase & ";" & _
                                "Trusted_Connection=yes"
    Else
        If blnTrusted = True Then
            strConnectString = "Driver=SQL Server;" & _
                                "Server=" & strDSN & ";" & _
                                "Database=" & strDatabase & ";" & _
                                "Trusted_Connection=yes"
        Else
             strConnectString = "Driver=SQL Server;" & _
                                "Server=" & strDSN & ";" & _
                                "Database=" & strDatabase & ";" & _
                                "User Id=Sql_myuid;Password=ppppp"

            strDisplay = "Driver=SQL Server;" & _
                                "Server=" & strDSN & ";" & _
                                "Database=" & strDatabase & ";" & _
                                "User Id=S*********t;Password=****************"

        End If
    End If
     Write_To_Log "Will use Conn String: " & strDisplay
    .ConnectionString = strConnectString
    .CursorLocation = CursorLoc
    .Open
End With
GetConnection = True
Proc_Exit:
Exit Function

ERROR_HANDLER:
Debug.Print Err.Number & vbCrLf & Err.Description

Err.Source = "Module_Utilities: GetConnection  at Line: " & Erl
DocAndShowError
Resume Proc_Exit
Resume Next
Resume
End Function

【讨论】:

我需要在哪里添加它才能让它工作?我是否需要更改代码中没有看到任何变量的任何内容? 抱歉,如果您使用我展示的第一条指令调用该函数,则 TRUSTED CONNECTION 的值如下所示: Call GetConnection("PROD_0001", "MySQLDAtabase", _ cnConn, adUseServer, False, True) 或者像 SQL Server 身份验证这样:调用 GetConnection("PROD_0001", "MySQLDAtabase", _ cnConn, adUseServer, True, False) 谢谢,我将在以后的应用程序中使用它。此实例需要非编程解决方案。

如何使用 .NET 中的 OleDb 命名空间连接到 Access 数据库?

】如何使用.NET中的OleDb命名空间连接到Access数据库?【英文标题】:HowtoconnecttoanAccessdatabaseusingtheOleDbnamespacein.NET?【发布时间】:2010-12-2413:51:11【问题描述】:我想为我的Windows窗体应用程序使用Access数据库。(用C#编写)我使用O... 查看详情

Access 2013 的 OleDb 连接字符串是啥?

...么?【发布时间】:2013-03-2609:54:27【问题描述】:我正在使用VisualStudio2012创建一个Web应用程序,该应用程序使用以下编程线连接到Access2013数据库:stringconnectionString="p 查看详情

使用 Microsoft.Jet.OLEDB.4.0 从 C# 将行插入 Access db,自动编号列设置为零

】使用Microsoft.Jet.OLEDB.4.0从C#将行插入Accessdb,自动编号列设置为零【英文标题】:InsertrowsintoAccessdbfromC#usingMicrosoft.Jet.OLEDB.4.0,autonumbercolumnissettozero【发布时间】:2008-09-3013:29:12【问题描述】:我正在使用C#和Microsoft.Jet.OLEDB.4.0提... 查看详情

使用 DEFAULT 值和 OleDB 时如何终止 SQL 语句?

】使用DEFAULT值和OleDB时如何终止SQL语句?【英文标题】:HowtoterminateSQLstatementswhenusingDEFAULTvalueandOleDB?【发布时间】:2021-08-2017:51:07【问题描述】:使用C#和JETOleDB驱动程序(Microsoft.Jet.OLEDB.4.0)连接到旧的Access数据库(想想Access97)... 查看详情

使用 Jet 连接到 Access DB

】使用Jet连接到AccessDB【英文标题】:ConnectingtoanAccessDBusingJet【发布时间】:2011-03-1521:37:44【问题描述】:我正在尝试使用VisualStudio2008中的Jet连接到Access数据库,就像这样-dbProvider="PROVIDER=Microsoft.Jet.OLEDB.4.0;"然后找到要读取的源... 查看详情

如何使用c#连接到access 2007

】如何使用c#连接到access2007【英文标题】:howtoconnecttoaccess2007withc#【发布时间】:2010-12-1309:45:16【问题描述】:嘿,我是连接数据库的新手,由于某种原因,每次我使用以下这些行时,我的程序都会崩溃:stringconnectionString="Provid... 查看详情

使用 OleDb 的 MS Access 中的内部 OLE 自动化错误

】使用OleDb的MSAccess中的内部OLE自动化错误【英文标题】:InternalOLEAutomationerrorinMSAccessusingOleDb【发布时间】:2019-02-1114:37:33【问题描述】:我正在尝试使用OleDb从ASPMVC应用程序访问MSAccess数据库。我在连接字符串中使用的提供程序... 查看详情

使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值

】使用c#和oledb查询更新Ms-Access2010中的列值【英文标题】:updatingcolumnvalueinMs-Access2010usingc#andoledbquery【发布时间】:2013-09-1206:47:27【问题描述】:我正在努力更新MS-ACCESS数据库中的记录/列值...非常感谢您的帮助..!我正在使用Data... 查看详情

为啥 oledb dataadapter 没有从 vb.net 中的 access 数据库中获取任何数据?

...:13【问题描述】:我遇到了一个非常特殊的问题。我正在使用ms 查看详情

尝试从 Access 数据库中搜索时出现 C#OleDb 异常“没有为一个或多个必需参数提供值”[关闭]

...【发布时间】:2021-05-2801:22:44【问题描述】:我正在尝试使用Windows窗体应用程序在Access 查看详情

C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件

】C#:使用Microsoft.ACE.OLEDB.12.0连接到dbf文件【英文标题】:C#:ConnectingtodbffileusingMicrosoft.ACE.OLEDB.12.0【发布时间】:2013-04-0408:49:05【问题描述】:我正在尝试使用Microsoft.ACE.OLEDB.12.0提供程序连接到64位操作系统中的dbf文件。我写了[T... 查看详情

使用 C# 连接到链接到 SharePoint 列表的 Access 数据库

】使用C#连接到链接到SharePoint列表的Access数据库【英文标题】:ConnecttoAccessdatabasethatlinkstoSharePointlistsusingC#【发布时间】:2012-03-1405:57:40【问题描述】:我有一个窗口应用程序,我在其中尝试连接到一个Access数据库,该数据库有... 查看详情

.Net Windows 应用程序使用 OLEDB 和 Access

】.NetWindows应用程序使用OLEDB和Access【英文标题】:.NetWindowsapplicationusingOLEDBwithAccess【发布时间】:2011-02-2512:41:21【问题描述】:我正在尝试在Windows应用程序中使用OLEDB在MSAccessDB中插入一条记录。我收到一个错误“sql语句末尾缺... 查看详情

无法通过 C# 中的 OleDB 从 Microsoft Access 中删除表的所有行

】无法通过C#中的OleDB从MicrosoftAccess中删除表的所有行【英文标题】:Couldn\'tdeleteallrowsofatablefromMicrosoftAccessviaOleDBinC#【发布时间】:2015-11-1420:09:42【问题描述】:我有一个方法,我打算让它从表中删除所有数据。然而,即使它被... 查看详情

无法使用 OLEDB 连接 MS Access(.mdb 文件)

】无法使用OLEDB连接MSAccess(.mdb文件)【英文标题】:cannotconnectwithMSAccess(.mdbfile)withOLEDB【发布时间】:2014-12-0514:05:32【问题描述】:我有问题。我必须编写一个使用OLEDB与MSAccess(.mdb文件)连接的ABAP应用程序,但我的代码无法... 查看详情

与直接在 Access 中查询相比,使用 OleDb 查询时的结果不同

】与直接在Access中查询相比,使用OleDb查询时的结果不同【英文标题】:DifferentresultswhenqueryingwithOleDbcomparedtodirectlyinAccess【发布时间】:2013-08-2014:13:40【问题描述】:我们目前在几个内部产品中使用ADO.Net,其中一个产品必须使用... 查看详情

使用 Decimal 参数的数据类型不匹配 - OleDb、C#、Access

】使用Decimal参数的数据类型不匹配-OleDb、C#、Access【英文标题】:DatatypemismatchusingDecimalparameter-OleDb,C#,Access【发布时间】:2013-04-2203:28:27【问题描述】:好的,所以我正在尝试将已在我的程序中更新的私有成员发送到访问数据库... 查看详情

不使用 UCanAccess 从 Java 8 连接到 Access 数据库

】不使用UCanAccess从Java8连接到Access数据库【英文标题】:ConnecttoanAccessdatabasefromJava8withoutusingUCanAccess【发布时间】:2015-08-2215:01:02【问题描述】:我正在尝试使用Java8连接到本地.mdb文件。到目前为止,我使用了UCanAccess的库,但并... 查看详情