Sql server 2008 错误3078“;找不到表“;从外部ODBC链接表进行MS访问

Sql server 2008 错误3078“;找不到表“;从外部ODBC链接表进行MS访问,sql-server-2008,ms-access,vba,Sql Server 2008,Ms Access,Vba,在Access 2010表单中,我可以添加记录,但在添加记录之前,我们需要在写入新记录之前检查SQL表中是否已经存在业务单位、年份和季度 我需要确认的三件事是,在SQL表“tTbl_ADMIN_rxReit”中,我的表单中的字段分别称为[BU_Selected_Add]、[Qtr_Add]和[Year_Add]: [GL_BU]、[Year]和[Quarter]。 因此,我从一个简单的业务部门dlookup开始,如下所示: If DLookup("[GL_BU]", "tTbl_ADMIN_R

在Access 2010表单中,我可以添加记录,但在添加记录之前,我们需要在写入新记录之前检查SQL表中是否已经存在业务单位、年份和季度

我需要确认的三件事是,在SQL表“tTbl_ADMIN_rxReit”中,我的表单中的字段分别称为[BU_Selected_Add]、[Qtr_Add]和[Year_Add]: [GL_BU]、[Year]和[Quarter]。 因此,我从一个简单的业务部门dlookup开始,如下所示:

 If DLookup("[GL_BU]", "tTbl_ADMIN_RxREBATE", "[GL_BU] = '" & 
 Me!BU_Selected_Add & "'") > 0 Then
 MsgBox "This Business Unit already exists within the data below!"
我得到以下错误:

Run-time error '3078': The Microsoft Access database engine cannot find the 
input table or query "tTbl_ADMIN_RxRebate".  Make sure it exists and that its 
name is spelled correctly.
它肯定存在于SQLServer2008R2中

在添加[BU_Selected_Add]是否在称为[Qtr_Add]和[year_Add]的字段框中的年度和季度添加之前,我需要正确地获取第一部分

  SELECT dbo_tTbl_ADMIN_RxREBATE.MSID, dbo_tTbl_ADMIN_RxREBATE.DateAdded,      dbo_tTbl_ADMIN_RxREBATE.Qtr, dbo_tTbl_ADMIN_RxREBATE.Year, dbo_tTbl_ADMIN_RxREBATE.Rpt_Date, dbo_tTbl_ADMIN_RxREBATE.SRVC_TYP_CD, dbo_tTbl_ADMIN_RxREBATE.GL_BU, dbo_BU_Description.[BU Description], dbo_tTbl_ADMIN_RxREBATE.PY_FNL_PICK_AMT, dbo_tTbl_ADMIN_RxREBATE.PY_FNL_MRGN_AMT, dbo_tTbl_ADMIN_RxREBATE.PY_IBNR_AMT, dbo_tTbl_ADMIN_RxREBATE.CY_FNL_PICK_AMT, dbo_tTbl_ADMIN_RxREBATE.CY_FNL_MRGN_AMT, dbo_tTbl_ADMIN_RxREBATE.CY_IBNR_AMT
  FROM dbo_tTbl_ADMIN_RxREBATE INNER JOIN dbo_BU_Description ON       dbo_tTbl_ADMIN_RxREBATE.GL_BU = dbo_BU_Description.BU
  WHERE (((dbo_tTbl_ADMIN_RxREBATE.Qtr)=[Forms]![Frm_Main]![Frm_Main_Combo_Qtr]) AND ((dbo_tTbl_ADMIN_RxREBATE.Year)=[Forms]![Frm_Main]![Frm_Main_Combo_Year]));

您能否在Access中运行一个
SELECT
查询,并成功地达到相同的目的?如果是这样,您将能够使用
DLookup()
。。。您可能会了解问题的原因。听起来您是说Access db包含一个指向SQL Server表的ODBC链接,该表名为
tTbl\u ADMIN\u rxretrie
。当我链接到SQL Server表时,Access会在链接名称中包含架构名称,将
替换为
,因此希望您的链接的名称类似于
dbo\u tTbl\u ADMIN\u rxretrie
。如果您已经排除了这种可能性,我很抱歉,但这很重要,因为无论服务器上的实际表名如何,Access查询都必须使用链接名。您说“它肯定存在于SQL server 2008中…”,但您正在Access中运行DLookup。SQL Server表是否链接(ODBC?)到Access数据库@汉瑟普,就是这样,阿格,不知道为什么我总是忘了。现在,我该如何在Qtr和年份的组合上分层呢?@HansUp,我在上面讨论了代码。