2013-11-12 4 views
0

Во-первых, спасибо, что помогли мне. Во-вторых, я уверен, что ответ на мой вопрос есть, но я не могу найти его. Вот что я пытаюсь сделать.Ошибка ловушки при создании повторяющейся записи

У меня есть форма, основанная на таблице Tbl_LedgerEntry. В нем перечислены ID #, Date, Status of Job и детали. Существует вторая таблица Tbl_LedgerAccouting, в которой перечислены соответствующие учетные транзакции (TransID, Check #, Check Amount, Debit/Credit) на основе идентификатора Tbl_LedgerEntry ID #. В Tbl_LedgerAccounting может быть только одна запись для любого ID #. Отдельные таблицы существуют, потому что есть несколько ID #, где нет соответствующего TransID.

Я создал кнопку, которая добавляет запись в Tbl_LedgerAccounting. Однако, если для соответствующего ID # уже есть TransID, тогда это ошибки на меня ПОСЛЕ того, как пользователь вводит учетную информацию. Я хочу, чтобы ошибка была до того, как пользователь вводит информацию. В принципе, мне нужен мой VBA, чтобы проверить, существует ли запись в Tbl_LedgerAccounting для связанного идентификатора # перед запросом пользователя на ввод.

Форматы Таблица

Tbl_LedgerEntry

ID # (AutoNumber & Key), JobID, дата, статус, детали

Tbl_LedgerAccounting

TransID = ID # из Tbl_LedgerEntry (также ключ в этом таблица), контрольная сумма, контрольный номер, дебет/кредит

Короче говоря, мне нужно найти TransID и посмотреть, существует ли он в Tbl_LedgerAccounting перед входными запросами.

ответ

1

Единственный способ, которым я вижу это, - проверить, существует ли запись, когда вы выполняете событие Form_Load. То есть, если tbl_LedgerAccounting соединяется через свою собственную форму. Не через подформу, заметьте, а свою собственную автономную форму. Если да, то вы могли бы добавить что-то вроде этого к событию Load:

Dim db as Database 
Dim rec as Recordset 

Set db = CurrentDB 
'I'm assuming you're entering the TransID into a textbox in a prior form (aka OtherFormName) 
Set rec = db.OpenRecordset ("Select TransID from Tbl_LedgerAccounting WHERE TransID = " & Forms!OtherFormName.TransID & "") 

'If the recordset you return has more than one record... 
If rec.EOF = False Then 
    'TransID is in the table already, so tell the user and then close the form 
    MsgBox "This TransID already exists" 
    Me.Close 
End If 

Вам может потребоваться настроить это немного, но это более или менее, как это сделать.

+0

Большое спасибо. Мне нужно было немного подстроить его, но вы предоставили мне фундамент, чтобы сделать это. – Dragonsen

Смежные вопросы