Страница: 1 |
Мучаюсь уже второй день (похоже от жары мозги плавяться), помогите разобраться. В базе имеется две таблицы, связанные по одному полю (в первой таблице тип поля "Счетчик", во второй тип поля "Числовой") На форме, для ввода/вывода данных: для первой таблицы имеется три TextBox; для второй DataGrid. Вопрос: как производить добавление новой записи, конструкции "Один ко многим"
Хорошо, тогда я понимаю так: Сначала необходимо сначала добавить в первую таблицу, а перед добавлением во вторую таблицу получить значение счетчика из первой (для обеспечения связи). Так вот как получить значение этого счетчика. P.S.: При этом необходимо учесть, что база многопользовательская и в промежуток времени перед добавлением в эти две таблицы, другой ползователь может произвести добавление своей записи. берешь свой рекордсет, например Data data1.recodset!Код - возвратит значение поля Код таким-же сопособом положи это значение в поле другой таблицы.... по поводу многопользовательского варианта - думаю особых касяков не будет, в таких случаях коинтеры ведут себя нормально касяки, будут и это точно. А что, за "коинтеры" ???? Счетчик – Counter... это я так просто криво разговариваю.... по поводу косяков - смотря как ты реализуешь программу у меня сейчас в сетке висит прога там тоже в качестве уникального идентификатора используется счетчики... и вроде пока проблем не было (связанных именно с этим)... Что за изврат по таблицам отдельно ползать? .AddNew Не понял. Как ты получиш значения счетчика до Update ??? Запись-то в таблицу еще не внесена. виртуально он уже существует, я токачто проверил этот код ... работает ) А подключение через что ??? DAO ? ADO ? А то под рукой нет VB и проверить не могу, поэтому так подробно и выпытываю. через ДАО 3.6 версии > Что за изврат по таблицам отдельно ползать? Что-то я не понял, никто и не говорил о ползании в двух, трех.... реально (даже исходя из твоего примера) значение счетчика попало в две таблицы... или я не прав??? так то прав , просто я так понял что отдельно рекордсеты на каждую табл делать посаветовали Да с DAO, проблема. Хотелосбы на ADO. To Slay:а разве ты не два рекордсета советовал делать К сожалению с АДО связывался всего один раз, когда гостевую делал на АСП, но это было давно, щас и не припомню Страница: 1 |
Вопрос: Связь "Один ко многим"
Добавлено: 10.07.02 08:57
Автор вопроса: Andreika
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #1
Добавлено: 10.07.02 10:06
Нельзя добавить новую запись в связаные таблицы.
Ты должен добавить запись в каждую таблицу отдельно.
Номер ответа: 2
Автор ответа:
Andreika
Вопросов: 5
Ответов: 64
Профиль | | #2
Добавлено: 10.07.02 11:10
Номер ответа: 3
Автор ответа:
Slay
Вопросов: 27
Ответов: 150
Web-сайт:
Профиль | | #3
Добавлено: 10.07.02 11:44
Номер ответа: 4
Автор ответа:
Andreika
Вопросов: 5
Ответов: 64
Профиль | | #4
Добавлено: 10.07.02 12:01
Номер ответа: 5
Автор ответа:
Slay
Вопросов: 27
Ответов: 150
Web-сайт:
Профиль | | #5
Добавлено: 10.07.02 12:16
Номер ответа: 6
Автор ответа:
Snake
ICQ: 302130238
Вопросов: 16
Ответов: 39
Профиль | | #6
Добавлено: 11.07.02 08:47
Можно всё одним SQL-ем сделать
допустим две таблицы "Users" поля "Cod"-счётч "Name"-текст и "HimFends" "OfCod"-число и "FendName" -текст связь COD -> OfCod
rc As Recordset
Set rc = CurrentDb.OpenRecordset("SELECT * FROM Users INNER JOIN HimFriends " & _
"ON Users.COD = HimFriends.OfCod;")
Friends = Array("Маша", "Паша", "Костя", "Оля")
With rc
.Fields("Name") = "snake" 'добавляем 1 запись в Users
Count_t = .Fields("cod") 'запоминаем значение счётчика
.Update
For i = 0 To UBound(Friends)
.AddNew
.Fields("OfCod") = Count_t
.Fields("FrendName") = Friends(i)
.Update
Next i
End With
Номер ответа: 7
Автор ответа:
Andreika
Вопросов: 5
Ответов: 64
Профиль | | #7
Добавлено: 11.07.02 09:04
Номер ответа: 8
Автор ответа:
Snake
ICQ: 302130238
Вопросов: 16
Ответов: 39
Профиль | | #8
Добавлено: 11.07.02 10:02
Номер ответа: 9
Автор ответа:
Andreika
Вопросов: 5
Ответов: 64
Профиль | | #9
Добавлено: 11.07.02 10:18
Номер ответа: 10
Автор ответа:
Snake
ICQ: 302130238
Вопросов: 16
Ответов: 39
Профиль | | #10
Добавлено: 11.07.02 10:22
Номер ответа: 11
Автор ответа:
Slay
Вопросов: 27
Ответов: 150
Web-сайт:
Профиль | | #11
Добавлено: 11.07.02 10:37
Номер ответа: 12
Автор ответа:
Snake
ICQ: 302130238
Вопросов: 16
Ответов: 39
Профиль | | #12
Добавлено: 11.07.02 10:54
Номер ответа: 13
Автор ответа:
Andreika
Вопросов: 5
Ответов: 64
Профиль | | #13
Добавлено: 11.07.02 11:25
Номер ответа: 14
Автор ответа:
Snake
ICQ: 302130238
Вопросов: 16
Ответов: 39
Профиль | | #14
Добавлено: 11.07.02 11:39