про целостность данных

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

про целостность данных

Сообщение shady » 02.06.2006 (Пт) 15:49

если не трудно, подскажите:
есть 2 (1, 2)таблицы связанные в акцессе (отношением один ко многим, с поддержкой целостности данных).
у меня на форме 2 гриды (1, 2), они отоброжают эти связанные таблицы (1, 2), соответственно два рекордсета открытых adOpenDynamic, adLockOptimistic.
после того как я добавил в рекордсет "1" новую запись
Код: Выделить всё
    rsLZK.AddNew
    rsLZK("DATE") = Replace(DTPicker1.Value, ".", "/")
    rsLZK("IDDept") = DataCombo1.BoundText
    rsLZK("IDPlat") = DataCombo2.BoundText
    rsLZK("CodeZatrat") = DataCombo3.BoundText
    rsLZK("NameZatrat") = DataCombo3.Text
    rsLZK("LimitMoneyMonth") = Replace(Trim(Text1.Text), ",", ".")
    rsLZK.Update

в гриде становлюсь на эту запись и пытаюсь добавить в связанный рекордсет данные (перед этим в dgLZK_RowColChange ("1") я делаю
Код: Выделить всё
Set rsLZKDetail = New ADODB.Recordset
    rsLZKDetail.Open "SELECT * FROM LZKDetail WHERE date BETWEEN " & strStartDate & " AND " & strNowDate & " AND idLZK = " & CInt(dgLZK.Columns(2)), cna, adOpenDynamic, adLockOptimistic
Set dgLZKDetail.DataSource = rsLZKDetail

(если неправильно, поправьте пожалуйста)
и когда все-таки пытаюсь выполнить
Код: Выделить всё
    rsLZKDetail.AddNew
    rsLZKDetail("idLZK") = frmWork.dgLZK.Columns(2).Value
    rsLZKDetail("numberPP") = Text1.Text
    rsLZKDetail("date") = Text2.Text
    rsLZKDetail("NaimDocOpl") = Text3.Text
    rsLZKDetail("VidPlat") = DataCombo1.BoundText
    rsLZKDetail("VidLpatStr") = DataCombo1.Text
    rsLZKDetail("CountryID") = DataCombo2.BoundText
    rsLZKDetail("CountryName") = DataCombo2.Text
    rsLZKDetail("RegionID") = DataCombo3.BoundText
    rsLZKDetail("RegionName") = DataCombo3.Text
    rsLZKDetail("SummOpl") = Replace(Text4.Text, ",", ".")
    rsLZKDetail.Update

вываливается ошибка:
Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице LZK ("1")


Так вот, подскажите пожалуйста, как правильно работать со связанными таблиуами

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 02.06.2006 (Пт) 15:53

В поле внешнего ключа связанной таблицы нужно проставить значение первичного ключа основной таблицы.
Лучший способ понять что-то самому — объяснить это другому.

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 02.06.2006 (Пт) 16:02

если я не путаю немного...
мои таблицы связан так LZK.id (с типом счетчик) отношением ко многим связан с LZKDetail.idLZK

rsLZKDetail("idLZK") = frmWork.dgLZK.Columns(2).Value
это значение того LZK.id

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 06.06.2006 (Вт) 7:04

неужели больше нет вариантов? а кто как обеспечивает целостность??


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 110

    TopList