Получить последнюю запись в таблице БД доступа программно? - PullRequest
0 голосов
/ 24 апреля 2019

Я создаю записи клиентов и хочу использовать настраиваемый идентификатор на основе года и номера +1 последней строки данных в моей таблице БД Access.

Примером идентификатора будет год и номер строки следующей свободной строкигде будут записаны новые данные. (если это новая таблица БД будет 2019-0001)

Я разработал, как извлечь год из даты, но я не могу найти какую-либо информацию дляДля получения количества записей в таблице БД Access были бы полезны любые указатели, где можно найти информацию / код.

Я использовал обычные методы CRUD для ввода данных, но я бы хотел, чтобы идентификатор клиентабыть фильтруемым по году (первые 4 цифры), чтобы его можно было использовать для создания системы поощрений типа бонуса лояльности.

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Хорошо, составные идентификаторы - это немного головная боль в Access ... решение, которое я использовал на протяжении многих лет, - это использовать мой идентификатор в качестве Autonumber / Primary key и создавать составной ключ только для целей отображения.Одним из решений является создание таблицы, которая содержит все годы вместе с последней записью
2017 1232
2018 2122
2019 2001
Таким образом, каждый раз, когда вы хотите добавить новую запись, вы читаете текущий год... если совпадение, вы читаете последнее значение ... вы добавляете его в поле составного ключа, например 2019002001, и увеличиваете значение последней записи на 1
2019 2002

0 голосов
/ 26 апреля 2019

Я ценю всех, кто нашел время, чтобы ответить на мой вопрос.

Что я искал, так это простые строки кода C #, чтобы найти последнюю запись в таблице базы данных Access. SQL-запрос не является проблемой или ответом, который я искал. (Зачем использовать хранимые процедуры в программе на C #, если вам это не нужно?)

Я решил сделать это в наборах данных вместо того, чтобы просто запросить таблицу БД Access для последней записи, чего я хотел бы избежать.

0 голосов
/ 24 апреля 2019

Я только что внедрил аналогичный идентификатор в одну из баз данных моей организации.Ключ должен поддерживать два отдельных столбца, один для года и один для идентификатора.Вы также можете использовать эти два столбца в качестве первичного ключа для обеспечения целостности, хотя я обнаружил, что проще использовать отдельный столбец автонумерации в качестве первичного ключа.

Вы можете использовать запрос, подобный следующему, чтобы добавитьзаписи последовательно для каждого года.Он использует функцию Nz для проверки на нулевые значения (т. Е. Новый год) и по умолчанию имеет значение Id, равное 0, а затем добавляет 1.

INSERT INTO YOUR_TABLE (Year, Id)
SELECT New_Year, New_Id 
FROM (SELECT 2019 as New_Year, Nz(Max(Id),0)+1 as New_Id FROM YOUR_TABLE WHERE Year = 2019);

Вам потребуется использовать функцию Format в запросах SELECT иформы / отчеты для отображения в формате ####-####, поскольку начальные нули не сохраняются и не нужны в необработанных данных.

Ниже приведен пример запроса SELECT, который печатает составные идентификаторы

SELECT Format([Year],"0000") & "-" & Format([Id],"0000") AS Composite_Id
FROM YOUR_TABLE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...