Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Связь "Один ко многим" Добавлено: 10.07.02 08:57  

Автор вопроса:  Andreika

 Мучаюсь уже второй день (похоже от жары мозги плавяться), помогите разобраться.

 

В базе имеется две таблицы, связанные по одному полю (в первой таблице тип поля "Счетчик", во второй тип поля "Числовой")

На форме, для ввода/вывода данных:

для первой таблицы имеется три TextBox;

для второй DataGrid.

 

Вопрос: как производить добавление новой записи, конструкции "Один ко многим"

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #1
Добавлено: 10.07.02 10:06
Нельзя добавить новую запись в связаные таблицы.
Ты должен добавить запись в каждую таблицу отдельно.

Ответить

Номер ответа: 2
Автор ответа:
 Andreika



Вопросов: 5
Ответов: 64
 Профиль | | #2 Добавлено: 10.07.02 11:10

Хорошо, тогда я понимаю так:

 

Сначала необходимо сначала добавить в первую таблицу, а перед добавлением во вторую таблицу получить значение счетчика из первой (для обеспечения связи).

Так вот как получить значение этого счетчика.

P.S.: При этом необходимо учесть, что база многопользовательская и в промежуток времени перед добавлением в эти две таблицы, другой ползователь может произвести добавление своей записи.

Ответить

Номер ответа: 3
Автор ответа:
 Slay



Вопросов: 27
Ответов: 150
 Web-сайт: www.slaysoft.stormway.ru
 Профиль | | #3
Добавлено: 10.07.02 11:44

берешь свой рекордсет, например Data

data1.recodset!Код - возвратит значение поля Код

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

Ответить

Номер ответа: 4
Автор ответа:
 Andreika



Вопросов: 5
Ответов: 64
 Профиль | | #4 Добавлено: 10.07.02 12:01

касяки, будут и это точно.

 А что, за "коинтеры" ????

Ответить

Номер ответа: 5
Автор ответа:
 Slay



Вопросов: 27
Ответов: 150
 Web-сайт: www.slaysoft.stormway.ru
 Профиль | | #5
Добавлено: 10.07.02 12:16

Счетчик – Counter... это я так просто криво разговариваю....

по поводу косяков - смотря как ты реализуешь программу 

у меня сейчас в сетке висит прога там тоже в качестве уникального идентификатора используется счетчики... и вроде пока проблем не было (связанных именно с этим)...

Ответить

Номер ответа: 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

    .AddNew
    .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

Не понял.

 

Как ты получиш значения счетчика до Update ???

Запись-то в таблицу еще не внесена.

Ответить

Номер ответа: 8
Автор ответа:
 Snake



ICQ: 302130238 

Вопросов: 16
Ответов: 39
 Профиль | | #8 Добавлено: 11.07.02 10:02

виртуально он уже существует, я токачто проверил этот код ... работает :-))

Ответить

Номер ответа: 9
Автор ответа:
 Andreika



Вопросов: 5
Ответов: 64
 Профиль | | #9 Добавлено: 11.07.02 10:18

А подключение через что ??? DAO ? ADO ?

 

А то под рукой нет VB и проверить не могу,  поэтому так подробно и выпытываю.

Ответить

Номер ответа: 10
Автор ответа:
 Snake



ICQ: 302130238 

Вопросов: 16
Ответов: 39
 Профиль | | #10 Добавлено: 11.07.02 10:22

через ДАО 3.6 версии

Ответить

Номер ответа: 11
Автор ответа:
 Slay



Вопросов: 27
Ответов: 150
 Web-сайт: www.slaysoft.stormway.ru
 Профиль | | #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

Да с DAO, проблема.

Хотелосбы на ADO.

To Slay:а разве ты не два рекордсета советовал делать

Ответить

Номер ответа: 14
Автор ответа:
 Snake



ICQ: 302130238 

Вопросов: 16
Ответов: 39
 Профиль | | #14 Добавлено: 11.07.02 11:39

К сожалению с АДО связывался всего один раз, когда гостевую делал на АСП, но это было давно, щас и не припомню

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам