как передать рекордсет от одной формы к другой?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

как передать рекордсет от одной формы к другой?

Сообщение АндрейБ » 21.11.2006 (Вт) 11:29

Хочу ускорить процес поиска, т.к. таблицы большие и хочу передать значение рекордсет от одной формы к другой.
Форма1 при определенном событие открывает Рекордсет1 и если в Рекодсете1 есть записи, то открывает Форма2, в которой по тем же критериям открывается Рекордест2. Причем открытие рекордсета занимает 3-7 секунд, а когда 2 раза надо открыть то 10-15 секунд.
Я пытаюсь сделать так
Рекордсет2 = Рекордсет1.Опенрекордсет
Рекордсет2 = Форма1!Рекордсет1.Опенрекордсет

Но не работает, подскажите как сделать?
Кто ищет, тот всегда найдет ...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.11.2006 (Вт) 11:39

Set
Изображение

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 12:15

Set стоит, просто забыл указать.
Кто ищет, тот всегда найдет ...

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

Сообщение alibek » 21.11.2006 (Вт) 12:28

А зачем OpenRecordset?
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение shady » 21.11.2006 (Вт) 12:31

Recordset.Clone

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 13:13

не работает, пишет ошибка 424,
Object required - типа объект не найден, оно и понятно что Рекордсет1 описан в одной форме, а Рекордсет во второй!
Есть какие-то реальные предложения?
Кто ищет, тот всегда найдет ...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.11.2006 (Вт) 13:21

Предложение тебе понять разницу между объектом и методом объекта.
Достаточно реальное?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 13:44

наверное - я навичок поэтому не надо сильно грузит терминами.
Лучше дайте ответ рельно ли сделать то что я спрашиваю?
Кто ищет, тот всегда найдет ...

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.11.2006 (Вт) 13:50

Реально. Просто надо внимательно прочитать всё что уже тебе сказали...(убрать OpenRecorset и добавить Set)
Salus populi suprema lex

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 14:50

Set RS = RS5.Clone
я поставил так - ошибка осталась!
напиши как мне все же написать?
RS5 - в форме 1, RS в форме 2, передача идет от 1 ко второй, присвоение при открытие 2 формы.
Кто ищет, тот всегда найдет ...

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

Сообщение shady » 21.11.2006 (Вт) 14:53

а как объявлены RS и RS5?
при таком раскладе
Код: Выделить всё
Set RS = RS5.Clone
один из них должен быть глобальным..

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 15:17

Форма 1 - часть кода относящиеся к теме:
Dim DBS As Database
Dim RS5 As Recordset
Set DBS = OpenDatabase(App.Path + "/Price/Price.mdb")
Set RS5 = DBS.OpenRecordset("Select * From I Where Code = '" & Text1.Text & "' And ID = " & RS7!ID & ";")
If RS5.RecordCount > 1 Then
M.Show vbModal - открываем новую форму 2!!!
End If

Форма 2:
Private Sub Form_Load()
Dim RS As Recordset
Set RS = RS5.Clone - не работает!!!
Кто ищет, тот всегда найдет ...

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 21.11.2006 (Вт) 16:53

RS5 объявить как Public в модуле формы и обратиться к ней Set RS = Form1.RS5.Clone
Salus populi suprema lex

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.11.2006 (Вт) 16:56

M.Show vbModal
ключевое слово - надеюсь всем станет ясно 8)

ну а дальше вообще шедевр :)

Dim DBS As Database
Dim RS5 As Recordset
Set DBS = OpenDatabase(App.Path + "/Price/Price.mdb")
Set RS5 = DBS.OpenRecordset("Select * From I Where Code = '" & Text1.Text & "' And ID = " & RS7!ID & ";")
If RS5.RecordCount > 1 Then
M.Show vbModal - открываем новую форму 2!!!
End If

Форма 2:
Private Sub Form_Load()
Dim RS As Recordset
Set RS = RS5.Clone - не работает!!!

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 17:01

Konst_One - конечно ты доктор, но не надо прикалываться, лучше разъясни что к чему!
Кто ищет, тот всегда найдет ...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.11.2006 (Вт) 17:08

все очень просто:

Код: Выделить всё
'Form1
Private Sub Command1_Click()
OpenForm
End Sub

Private Sub OpenForm()
Dim DBS As Database
Dim RS5 As Recordset

Set DBS = OpenDatabase(App.Path + "/Price/Price.mdb")
Set RS5 = DBS.OpenRecordset("Select * From I Where Code = '" & Text1.Text & "' And ID = " & RS7!ID & ";")

Form2.View RS5

End Sub

'Form2
Private WithEvents  rst as RecordSet
Public Sub View(byref rs as Recordset)
Set rst=rs
Me.Show vbModal
End Sub

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 21.11.2006 (Вт) 18:07

ясно.
всем спасибо, сам бы неделю разбирался бы.
Кто ищет, тот всегда найдет ...


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

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

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

    TopList  
cron