Вопрос № 44177: Добрый день всем!
Подскажите реализацию вопроса:
VB6, БД на Access98. имеются две таблицы Tabl1 и Tabl2 с одинаковой структурой (индентичны). В таблицах есть поле "InvNumber", где обьявлено в конструкторе:"Совпадение не допуска...
Вопрос № 44.177
Добрый день всем!
Подскажите реализацию вопроса:
VB6, БД на Access98. имеются две таблицы Tabl1 и Tabl2 с одинаковой структурой (индентичны). В таблицах есть поле "InvNumber", где обьявлено в конструкторе:"Совпадение не допускается". Как при занесении данных в Tabl1 проконтролировать в Tabl2, чтобы не было индентичной записи по данному полю, что-2:
то наподобие:
код Visual Basic
Private Sub Data1_Validate(Action As Integer, Save As Integer)
Set dbBibliot = OpenDatabase(gDataBaseName) 'здесь хранится путь к БД
Data2.RecordSource = "SELECT InvNumber FROM StudTitDolg=" & DBGrid1.Columns("InvNumber").Text 'Поиск в Tabl2 такой же записи
If Tabl2.InvNumber=Tabl1.InvNumber THEN
Action = 0
Save = False
MsgBox ("Повторяющийся Инв.Номер.")
Exit Sub
dbBibliot.Close
End If
End Sub
Отвечает: Игорь Елизаров
Здравствуйте, Робатько Анатолий Васильевич!
А кто занимается занесением данных в эти таблицы ?
Может разграничить индексы в момент занесения ?
вариант - в таблицу 1 заносим четные индексы с шагом 2
а в таблицу 2 - нечетные, тоже с шагом 2
тогда индексы будут уникальны сразу в момент создания
но для учета и инвентаризаций этот вариант может не подойти, там номера должны быть сквозными
Другой вариант, если индексное поле не числовое, то к обычному индексу добавляем префикс в зависимости от таблицы, например _tab1 _tab2
(или номер отдела или еще что..)
таким образом мы получим уникальный индекс в пределах нескольких таблиц
ну и третий путь, может быть самый интересный.
если две таблицы одинаковы, зачем их две ?
сделай одну общую и дополнительное поле, указывающее тип таблицы
по этому полю ты всегда сможешь сформировать как первую так и вторую табличку обычным запросом, а уникальность индекса будет обеспечена тем, что данные лежат не в двух таблицах, а в одной, и это поле общее..
Ответ отправил: Игорь Елизаров (статус: 4-ый класс)
Ответ отправлен: 25.05.2006, 18:29 Оценка за ответ: 5 Комментарий оценки: Благодарю за оперативный ответ!