Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с циклом
 
 автор: МаксФактор   (20.09.2009 в 20:56)   личное сообщение
 
 

Хотел сделать чтобы значения в таблице пересчитывались в цикле, а VBA выдает ошибку на строке SET ...., что ему может не нравиться?

Private Sub Form_Load()
Dim rs As ADODB.Recordset, v As Variant
    Set rs = CurrentDb.OpenRecordset("ОсновнДанные")
 Do Until rs.EOF
    rs.MoveFirst
    v = Abs(Me!Поле28)
    Me!ууууу = v
    rs.Update
    rs.MoveNext
 Loop
Me.FilterOn = True
Me.Filter = "[ОсновнДанные]![НаимПокупателя]=[Forms]![Форма1]![ПолеСоСпискомЗаказчики]"

End Sub

  Ответить  
 
 автор: Lukas   (20.09.2009 в 21:01)   личное сообщение
 
 

Это библиотека ADO


Dim rs As ADODB.Recordset



Это библиотека DAO


Set rs = CurrentDb.OpenRecordset


Выберите одну библиотеку и работайте ее методами

  Ответить  
 
 автор: МаксФактор   (20.09.2009 в 21:25)   личное сообщение
 
 

Dim rs As Recordset

а если я так пишу, туже самую ошибку выдает

  Ответить  
 
 автор: NaBar   (20.09.2009 в 21:32)   личное сообщение
 
 

Может я слышу звон, не знаяя где он, конечно... Я просто с Recordset-ами не разобралась, сделала цикл так:

    For intI = 1 To DCount("*", "Журнал")
        DoCmd.GoToRecord acDataForm, "Журнал", acGoTo, intI
       ' все необходимые действия 
    Next intI

  Ответить  
 
 автор: МаксФактор   (20.09.2009 в 21:48)   личное сообщение
 
 

изменил так:
For intI = 1 To DCount("*", "ОсновнДанные ")
DoCmd.GoToRecord acDataForm, "ОсновнДанные ", acGoTo, intI
v = Abs(Me!Поле28)
Me!ууууу = v
Next intI
но ругается на это: DoCmd.GoToRecord acDataForm, "ОсновнДанные ", acGoTo, intI
говорит что объект ОсновнДанные не открыт

  Ответить  
 
 автор: NaBar   (20.09.2009 в 23:30)   личное сообщение
 
 

Ну тогда напрашивается решение перед началом цикла открыть "ОсновнДанные" с помощью DoCmd, наверное как-то так. А обязательно это делать в загрузке формы? может взять какое-нить событие, которое позже происходит? Не совсем понятно, что вы хотите сделать и в какой момент, так как Ме!Поле28 и Ме!ууууу не несут никакой информативности.

  Ответить  
 
 автор: snipe   (21.09.2009 в 03:32)   личное сообщение
 
 

Форма должна быть открыта до начала цикла в видимом или не видимом режиме......а она у вас еще не открыта полностью вот и возникает проблемка - все потому что вы не то событие обрабатываете

создайте макрос (открыть форму в видимом (или невидимом) режиме) после преобразуйте его в VBA и посмотрите как Акс сам пишет команду открытия формы


v = Abs(Me!Поле28)
Me!ууууу = v

что это? почему не вот так
Me!ууууу = Abs(Me!Поле28)

более того если поле Me!ууууу вычисляемое зачем вся эта конструкция каждый раз при открытии формы не проще это поле высчитывать просто на форме

вызывает сомнение вот эта строчка
Me.Filter = "[ОсновнДанные]![НаимПокупателя]=[Forms]![Форма1]![ПолеСоСпискомЗаказчики]"
не проверял но вроде так работать не будет

теперь по самому первому сообщению

пытаетесь получить доступ к рекордсету, а когда получаете его (когда все ошибки исправите) устанавливаетесь на первую запись а далее почему то обращаетесь не к полям рекордсета а к полям формы - о как далее переходите на другую запись рекордсета и опять обращаетесь к полям формы и так пока цикл не закончится - странно все это

Теперь - что делать

видимо открытие формы "ОсновнДанные" происходит после какого то события на форме "Форма1" вот вам и нужное событие которое надо обрабатывать (а не мучаться во время загрузки формы)

если изменение данных будет происходить через рекордсет то доберитесь до таблиц до открытия формы "ОсновнДанные", а уже после открывайте эту форму

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

  Ответить  
 
 автор: МаксФактор   (21.09.2009 в 16:51)   личное сообщение
 
 

Буду пробовать.

  Ответить  
 
 автор: osmor   (22.09.2009 в 08:52)   личное сообщение
 
 

http://hiprog.com/index.php?option=com_content&task=blogcategory&id=119&Itemid=159
Вопрос 2
Там подробно расписано про эту ошибку

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList