Автоматическое увеличение дочерней строки для каждого заданного родительского идентификатора

#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, для вычисления значения и заполнения поля.