2011-09-08 13 views
5

Creé una vista en SQL Server 2000 y vinculé la vista a mi base de datos de Access 2007 a través de ODBC. Abrir la vista desde Access mostró lo que parecía un valor duplicado. Actualicé mi vista para incluir los ID de los datos en cuestión y se duplicó.¿Por qué la vista vinculada proporciona resultados diferentes de MS Access frente a SQL Manager?

Parece que el acceso muestra el primer registro para cada tipo para cada fila de ese tipo. Esto question mencionado mirando las cláusulas Ordenar por o Arriba, pero no estoy usando ninguno de ellos en mi opinión. La vista vincula 8 tablas y lo único que puedo pensar es en algunas de las tablas que tengo, desde mi punto de vista, no tengo un enlace en Access. Voy a vincular esas tablas también para probarlo, pero no creía que las necesitaba en Access.

Estoy cansado de buscar respuestas en Google, pero no he tenido mucha suerte además de la pregunta que mencioné. ¿Este comportamiento es normal para vistas enlazadas como esta?

Este es mi conjunto de resultados de SQL Manager:

id Type   Dim1 
---- ------------ ------ 
3111 Pipe   480 
3112 Fittings  0 
3113 Pipe   1080 
3114 Fittings  0 
3115 Fittings  0 
3116 Fittings  0 
3117 Pipe   216 

y en el acceso veo esto:

id Type   Dim1 
---- ------------ ------ 
3111 Pipe   480 
3112 Fittings  0 
3111 Pipe   480 
3112 Fittings  0 
3112 Fittings  0 
3112 Fittings  0 
3111 Pipe   480 

Respuesta

5

Usted no necesita todas las 8 tablas vinculadas en Access ... la ver es suficiente, Access no necesita saber acerca de las tablas subyacentes.

Creo que tienes un problema diferente, tuve problemas similares a los tuyos también.
Cuando vincula una vista de SQL Server en el acceso a través de ODBC, aparece una ventana que me quiere seleccionar un identificador único (es decir: la clave principal) de las columnas de la vista:

"select unique identifier" window

Si yo no seleccione nada (o algunas columnas incorrectas, que no identifican un registro único), el acceso atornilla los datos mostrados como en su ejemplo.
Aparentemente, Access no puede mostrar la vista correctamente sin un identificador único.

solución para su problema:
Según entiendo su punto de vista, la id es único, ¿verdad?
En caso afirmativo, simplemente elimine la vista, vuelva a vincularla a través de ODBC, y cuando aparezca la ventana "Seleccionar identificador único", debe seleccionar la columna id.

+0

Sabía que sería así de simple. Acabo de actualizar la tabla cuando agregué la ID. No eliminarlo no da el diálogo de registro único. Gracias. – xecaps12

1

Cuando crea un enlace ODBC en Acceso a una tabla o vista de SQL Server, Access almacena meta información sobre esa fuente de datos de SQL Server. Si luego cambia la estructura de la tabla de SQL Server o la definición de vista, la información almacenada en caché de Access no se actualiza de manera confiable para que coincida ... incluso si "actualiza" el enlace. Es más seguro eliminar el enlace y volver a crearlo de nuevo para garantizar que la información almacenada en caché de Access sea coherente con la fuente de datos revisada.

Parece que descubrió este hecho con la ayuda de Cristian. Estoy enfatizando este punto para el beneficio de otros lectores. Esto parece ser un problema bastante común, pero se evita fácilmente cuando comprendes lo que sucede bajo las sábanas.

+0

También ayuda saber cómo trata el acceso los datos si no selecciona un identificador único, o si no lo hace lo suficiente.Recién había seleccionado el campo de tipo la primera vez que, sin saber, el acceso arrojaría los resultados por los valores seleccionados. Simplemente asumí que haría que consultar la vista sea más lento al no seleccionar un valor verdaderamente único, no cambiar los resultados. – xecaps12

+0

Sí, eso me sorprendió. Sin una clave única, esperaría que Access tratara el origen de datos como de solo lectura, pero * no * devuelva un conjunto de filas diferente. No entiendo por qué sucedió eso. Aún así, es interesante que el problema desapareció después de que recreó, en lugar de actualizar, el enlace. – HansUp

+1

acceso general trata todo como de sólo lectura si no tiene clave ... pero además, se mete la pata del conjunto de filas de puntos de vista que se muestra (único punto de vista, no hay problema con las tablas que yo sepa) si ninguna tecla o la tecla equivocada es seleccionado. Yo tampoco lo entiendo, pero me encuentro con que muy a menudo en el trabajo, porque tenemos unos pocos usuarios avanzados (controladores, en su mayoría) que tienen BMD con vistas vinculadas de SQL Server y mesas para que puedan crear y ejecutar consultas personalizadas. Y casi cada vez que vinculan una nueva vista a su MDB ... –