为什么链接视图会从MS Access与SQL Manager中提供不同的结果?

xec*_*s12 5 sql-server ms-access

我在SQL Server 2000上创建了一个视图,并通过ODBC将视图链接到我的Access 2007数据库.从Access打开视图显示看起来像重复的值.我更新了我的观点,以包含有问题的数据的ID,并且它是重复的.

看起来访问是为该类型的每一行显示每种类型的第一条记录.这个问题提到了Order By或Top子句,但我并没有在我看来使用它们中的任何一个.视图将8个表链接在一起,我唯一能想到的是我在视图中的一些表,我没有在Access中链接.我将链接这些表也只是为了尝试它,但我不认为我在Access中需要它们.

我已经厌倦了在谷歌寻找答案,但除了我提到的问题之外,我没有太多运气.对于像这样的链接视图,这种行为是否正常?

这是我的sql管理器的结果集:

id    Type          Dim1
----  ------------  ------
3111  Pipe          480   
3112  Fittings      0
3113  Pipe          1080
3114  Fittings      0
3115  Fittings      0
3116  Fittings      0
3117  Pipe          216
Run Code Online (Sandbox Code Playgroud)

在访问中,我看到:

id    Type          Dim1 
----  ------------  ------
3111  Pipe          480
3112  Fittings      0
3111  Pipe          480
3112  Fittings      0
3112  Fittings      0
3112  Fittings      0
3111  Pipe          480
Run Code Online (Sandbox Code Playgroud)

Chr*_*cht 5

您不需要在Access中链接的所有8个表...视图就足够了,Access不需要知道基础表.

我认为你有一个不同的问题,我也遇到了类似你的问题.
当我通过ODBC链接Access中的SQL Server视图时,会弹出一个窗口,要求我从视图中的列中选择唯一标识符(读取:主键):

如果我没有选择任何东西(或者某些错误的列,这些列不能识别唯一的记录),Access会像示例中那样搞砸显示的数据.
显然,如果没有唯一标识符,Access无法正确显示视图.

解决您的问题:
据我了解您的看法,这id是独一无二的,对吧?
如果是,只需删除视图,通过ODBC重新链接它,当弹出"选择唯一标识符"窗口时,您需要选择该id列.