#sql #vba #ms-access
#sql #vba #ms-access
Вопрос:
Я не знаю правильного жаргона для этой темы, поэтому здесь. У меня есть таблица SQL, построенная следующим образом:
CREATE TABLE [dbo].[MANUAL_LINE_ITEMS]
( [SHIPMENT_ID] [int] NOT NULL
, [LINE_ITEM_ID] [int] NOT NULL
, [JOB_NUMBER] [nvarchar](50) NULL
, [RELEASE_NUMBER] [nvarchar](50) NULL
, [NO_OF_PCS] [nvarchar](50) NULL
, [DESCRIPTION] [nvarchar](100) NULL
, [SSMA_TimeStamp] [timestamp] NOT NULL
, CONSTRAINT PK_MANUAL_LINE_ITEMS_SHIPMENT_ID_LINE_ITEM_ID PRIMARY KEY CLUSTERED ([SHIPMENT_ID],[LINE_ITEM_ID])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
Я бы хотел, чтобы LINE_ITEM_ID автоматически увеличивался для каждого SHIPMENT_ID, а затем сбрасывался для следующего. Моя таблица ОТГРУЗОК выглядит следующим образом:
CREATE TABLE [dbo].[SHIPMENTS]
( [SHIPMENT_ID] [int] identity(1,1) NOT NULL
, [JOB] [nvarchar](50) NOT NULL
, [REL] [nvarchar](50) NOT NULL
, [SHIPMENT_NUMBER] [int] NOT NULL
, [DATE] [datetime2](0) NULL
, [FREIGHTCHARGE] [smallmoney] NULL
, [SHIPPER] [nvarchar](50) NULL
, [MANUAL_LINE_ITEM_ENTRY] [bit] NULL
, ...
, CONSTRAINT PK_SHIPMENTS_SHIPMENT_ID_JOB_REL_SHIPMENT_NUMBER PRIMARY KEY CLUSTERED ([SHIPMENT_ID],[JOB],[REL],[SHIPMENT_NUMBER])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
Форма доступа для ПОСТАВОК использует подчиненную форму для добавления / перечисления сведений о позиции. У меня есть возможность при необходимости переработать таблицы SQL или использовать события Access VBA. Что нужно сделать, чтобы получить LINE_ITEM_ID для автоматического увеличения для каждого SHIPMENT_ID? TIA.
Комментарии:
1. Вы хотите сгенерировать пользовательский уникальный идентификатор. Это общая тема. Требуется, чтобы VBA вычислял и сохранял в таблице. В противном случае позвольте отчету вычислить номер этой строки, используя свойство RunningSum текстового поля и функцию группировки отчета.
2. Спасибо 7 июня. Это необходимо для того, чтобы записи были уникальными между собой и записывались в его таблицу SQL. Итак, мне нужно будет сделать подчиненную форму несвязанной и написать инструкции SQL UPDATE в VBA для записи каждой записи или набора записей, правильно? И это означает, что мне придется планировать / записывать VBA в CRUD?
3. Подчиненная форма не обязательно должна быть несвязанной. Нужен VBA в каком-либо событии, таком как form BeforeUpdate, для вычисления значения и заполнения поля.