Каков наилучший способ переместить записи Access из строя в правильном порядке, используя заблокированное поле идентификатора? - PullRequest
0 голосов
/ 21 мая 2018

У меня примерно 1500 записей в базе данных Access.У меня есть поле ID, которое действует как первичный ключ, и поэтому не может быть изменено вручную.Просматривая исходный лист Excel, в котором эти записи хранились, я заметил, что в базе данных Access отсутствует несколько записей в Excel.Пройдя все из них, я добавил три отсутствующие записи в Access.

В этой базе данных хранятся записи в порядке дат, сгруппированных по производителям.Ex.Все записи от производителя1, собранные в течение недели 1 июня '16, находятся вместе, а записи от производителя2, собранные в течение недели 2 июня '16, хранятся непосредственно после этого.Это важно для нас, потому что данные в этой базе данных часто нужно просматривать визуально, поэтому важно поддерживать порядок в дате.Существует также макрос, который экспортирует данные в лист Excel и форматирует их, чтобы их было легче читать, который экспортирует записи в том порядке, в котором они хранятся (в поле ID).Это проблема, потому что три отсутствующие записи принадлежат прошлым годам - ​​теперь они находятся в середине записей 2018 года. ID s, которые они были назначены при входе, сохраняют их в этом месте.

Есть ли способ надежно вставить эти записи в базу данных в том месте, где они должны быть?Например, сдвинуть значения других записей ID полей вниз на 3, чтобы освободить место для пропущенных записей?Я знаю, что, возможно, я смогу вручную переместить эти три записи в нужное место в макросе, который экспортируется в Excel, но я бы предпочел менее хакерское решение, которое могло бы работать, если подобная проблема возникнет снова.

1 Ответ

0 голосов
/ 21 мая 2018

Порядок данных в базе данных не представляет интереса для базы данных - важна связь между данными.

Чтобы всегда просматривать ваши данные в нужном вам порядке, используйте предложение ORDER BY в выражении SQL.Как правило, вы можете добавлять данные в базовую таблицу напрямую через запрос - если только у вас нет запросов типа «многие к одному», когда ваше обновление должно повлиять на несколько записей.

SELECT FieldName1, FieldName2, . . . .
FROM   MyDataTable
ORDER BY Manufacturer, Date  

Редактировать: Даже здесь вы будете добавлять новые записи в конец набора данных, но обновление запроса переместит записи в правильном порядке.

...