Получить index только что созданной записи. MoveLast?

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

Получить index только что созданной записи. MoveLast?

Сообщение erzhavin » 14.09.2006 (Чт) 18:32

Господа хорошие, честно поискав на форуме, я не нашел ответа на свой вопрос. Может поможете? :oops:
У меня есть две таблицы в Access'е. Они связаны с собой по индексу, который автоматически получается при добавлении новой записи в одну из таблиц. Как получить только что созданный индекс новой записи и воткнуть его в новую запись другой таблицы?
Сейчас у меня так:

Код: Выделить всё

    With RS
        .AddNew
        .Fields("MeetingDate") = Me.Date
        .Fields("ContactType") = Me.ContactType
        .Fields("DealerCode") = Me.DealerCode
        .Fields("DLRcontactCode") = Me.DLRcontactCode
        .Fields("ManagerCode") = Me.ManagerCode
        .Update
        .MoveLast
        X = .Fields("MeetingCode")
    End With


Здесь мы получили индекс X (MeetingCode) и потом его суем в новую запись новой таблицы, чтобы связать их.
Но база многопользовательская и .MoveLast может привести меня не к последней записи, так как пользователи работают одновременно и будет БОЛЬШАЯ ошибка!
Как обойти это? Помогите плиз. :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.09.2006 (Чт) 18:37

(голосом Йоды)
Не надо тебе получать индекс последней записи...
Получать тебе надо ID, который будет счетчиком...
Получать его надо на серверном курсоре...
Lasciate ogni speranza, voi ch'entrate.

erzhavin
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 11.07.2005 (Пн) 13:29

Сообщение erzhavin » 14.09.2006 (Чт) 18:43

alibek писал(а):Получать его надо на серверном курсоре...

Уважаемый alibek, а это сложно? Я не совсем тут в теме, и поэтому чтобы не загружать вас хочу спросить: а можно ли связать эти таблицы по времени? Оно же всегда будет уникально если оно будет в секундах? Типа открыл форму - получил время. При закрытии формы записал это уникальное значение в обе таблицы...Так можно? :oops:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.09.2006 (Чт) 18:57

rs.CursorLocation = adLocationServer
...
rs.Open
...
rs.Add
NewID = rs!ID
rs!MeetingDate = Me.Date
rs!ContactType = Me.ContactType
...
rs.Update
...
MsgBox NewID
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.09.2006 (Чт) 18:58

Время тоже плохо, потому что оно (особенно в многопользовательской системе) легко может быть неуникальным.
Лучше всего использовать счетчик, т.к. в этом случае уникальные значения за тебя будет генерировать провайдер, тебе останется их только использовать.
Lasciate ogni speranza, voi ch'entrate.

erzhavin
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 11.07.2005 (Пн) 13:29

Сообщение erzhavin » 14.09.2006 (Чт) 19:13

Спасибо! Все получилось! Благодарю покорно! :)))


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 15

    TopList