Хобрук: Ваш путь к мастерству в программировании

Запрос доступа из запроса связанной таблицы MS SQL с использованием текстовых критериев

У меня есть таблица в экземпляре SQL Server 2012, например

 CREATE TABLE [dbo].[Test](
 [SampleDateTime] [datetime] NULL,
 [Unit ID] [nvarchar](4) NULL,
 [WS Avg 2min] [float] NULL,
 [WD Avg 2min] [float] NULL,
 [WGS 10min] [float] NULL,
 [WGD 10min] [float] NULL,
 [Air Temp] [float] NULL,
 [Rel Humidity] [float] NULL,
 [Dew Point] [float] NULL,
 [Pyranometer] [float] NULL,
 [Quantum] [float] NULL,
 [Air Pressure] [float] NULL,
 [Snow Level] [float] NULL,
 [Rainfall] [float] NULL,
 [PW Current] [varchar](10) NULL,
 [Visibility] [float] NULL,
 [CBase 1] [float] NULL,
 [CBase 2] [float] NULL,
 [CBase 3] [float] NULL,
 [Vert Vis] [float] NULL
 ) ON [PRIMARY]

подключен к MS Access (2010) через связанную таблицу ODBC (собственный клиент SQL Server 11.0)

Когда я открываю таблицу, я вижу все данные

Однако, когда я пытаюсь выполнить простой запрос

SELECT dbo_Test.* FROM dbo_Test
WHERE ( (dbo_Test.[Unit ID])="BASE") ;

Я по-прежнему получаю все строки, а не только строки, где [Unit ID] является «BASE». Тот же запрос в SQL Server Mgt. Студия отлично работает, возвращая только ожидаемые результаты.

Я также заметил, что при сортировке связанной таблицы по [Unit ID] она не сортируется должным образом. Будут строки с данными, просто не отсортированными, как я ожидал. (См. изображение ниже, отсортированное по возрастанию [Unit ID]) введите здесь описание изображения

Есть ли способ заставить эту связанную таблицу вести себя правильно?

20.08.2015

Ответы:


1

Кажется, в вашей таблице отсутствует первичный ключ. Это может вызвать всевозможные проблемы (например, вы не сможете писать в эту связанную таблицу). Хотя я был бы удивлен, если бы эффект, который вы видите, был вызван этим.
Но попробуйте добавить столбец IDENTITY в качестве первичного ключа и повторно связать таблицу из Access.

// Редактировать: слишком поздно :)

20.08.2015

2

Оказывается, проблема заключалась в том, что для таблицы не был установлен первичный ключ. Из-за наших данных я не мог использовать SampleDateTime в качестве первичного ключа. Итак, вместо этого я создал уникальный ключ для SampleDateTime + Unit ID.

ALTER TABLE [dbo].[Test] ADD CONSTRAINT [KEY_AWAData_DateandUnitID] UNIQUE NONCLUSTERED 
(
    [SampleDateTime] ASC,
    [Unit ID] ASC
) 
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

Теперь MS Access может выполнять запросы и сортировать, как ожидалось.

20.08.2015
Новые материалы

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..