Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическое обновление данных в recordset / 11 сообщений из 11, страница 1 из 1
12.07.2004, 17:08:52
    #32600174
Shurik777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
Существует ситуация:
Некий рекордсет с данными

Код: plaintext
1.
2.
conn.Provider = "Microsoft.Jet.OLEDB.4.0;"
conn.Open pathMDB, "admin", ""
rst.Open "select * from alltovar", conn, adOpenKeyset, adLockOptimistic

далее производим некую манипуляцию:

Код: plaintext
conn.execute("UPDATE AllTovar SET checkInsert = False WHERE (((AllTovar.checkInsert)=True))")

До того того момента пока не дашь метод rst.requery данные в рекордсете не обновляются. А если сделаешь обновление, то выборка заполняется с нуля (как я понимаю).

Соб-но вопрос: А как сделать, чтобы обновлялись данные в рекордсете, только измененные, не перезапуская весь запрос.
...
Рейтинг: 0 / 0
12.07.2004, 17:24:50
    #32600220
ищ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
а ты сначла сделай обновление,
а потом запрос с условием по обновлению.
зачем тебе открывать всю таблицу?
(rst.Open "select * from alltovar", conn, adOpenKeyset, adLockOptimistic)
...
Рейтинг: 0 / 0
12.07.2004, 18:24:57
    #32600394
Shurik777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
ищзачем тебе открывать всю таблицу?

Вот в том то и дело, что надо всю. Таблица - каталог (а-ля прайс) в котором есть признаки выбора товара и соответственно его количества.
В общем структура по любому должна остаться неизменной.
...
Рейтинг: 0 / 0
12.07.2004, 18:29:34
    #32600405
ищ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
шурик777, чевота там напридумывал
а мы ломай голову: зачем ты так сделал? хрен тебя знаит.
шобы табе прально сказать, надоть
знать всю идею.
...
Рейтинг: 0 / 0
12.07.2004, 20:11:18
    #32600563
Shurik777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
ищшобы табе прально сказать, надоть
знать всю идею.
Идея такая
На форме 2 грида
1 - грид (AllTovar товар из БД; колонки - checkInsert, name, code, price, zakaz, prim) ~ 200000 записей
2 - грид (свободный - туда попадают любые результаты отбора)

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

На форме есть кнопочка (загрузка) -> по клику - событие ->
1. Обновление всех полей checkInsert->false (см. сабж)
2. Загрузка во второй грид данных
3. Поиск и обновление в таблице AllTovar соответствия по Code поля checkInsert->true
поскольку все изменения происходят напрямую в таблице Alltovar, у меня в гриде никаких изменений не происходит :-(

так вот и сам вопрос:
До того того момента пока не дашь метод rst.requery данные в рекордсете не обновляются. А если сделаешь обновление, то выборка заполняется с нуля.
...
Рейтинг: 0 / 0
13.07.2004, 08:50:58
    #32600777
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
200000 записей в гриде?
ИМХО - надо что-то менть в самом понимании о программировании
Человек не сможет реально работать даже со 100 записями одновременно!!!
...
Рейтинг: 0 / 0
13.07.2004, 09:35:43
    #32600827
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
автор
так вот и сам вопрос:
До того того момента пока не дашь метод rst.requery данные в рекордсете не обновляются. А если сделаешь обновление, то выборка заполняется с нуля


попробуй
1 добавить штамп времени в таблицу
2 делаешь запрос к таблице к значениям ид и штампа времени
3 сравниваешь эти значения с текущими в рекордсете грида
4 те которые не совпадают - делаешь Resync

может можно и проще но в голову приходит только это.
...
Рейтинг: 0 / 0
13.07.2004, 09:44:57
    #32600847
bazaea
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
adOpenKeyset поменяй на adOpenDynamic
...
Рейтинг: 0 / 0
13.07.2004, 09:47:59
    #32600859
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
авторadOpenKeyset поменяй на adOpenDynamic

и чем это поможет?
при Requery будут подтягиваться только измененные извне?
...
Рейтинг: 0 / 0
13.07.2004, 11:52:21
    #32601262
Shurik777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
АлексейК[quot автор]
попробуй
...
3 сравниваешь эти значения с текущими в рекордсете грида
4 те которые не совпадают - делаешь Resync


Идея хорошая, но ...
В гриде одновременно отображаются порядка 30~40 записей (от размера окна зависит), а в методе .Resync есть только один подходящий параметр -adAffectCurrent (обновлять только текущую запись), теперь наша ситуация:

Код: plaintext
1.
2.
3.
4.
5.
6.
цикл i с topRow по botRow
{
    rst.move sss
    rst2 = select isChek, name, code ... 
    if rst!isCheck <> rst2!isCheck
       {rst.resync adAffectCurrent}
}

займет хороший промежуток времени при обновлении (скроле, развороте экрана и т.д.)
...
Рейтинг: 0 / 0
13.07.2004, 11:59:07
    #32601288
Shurik777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое обновление данных в recordset
АлексейК[quot автор]
...
4 те которые не совпадают - делаешь Resync


Хотя в частном случае (обновление - в момент загрузки) идея отличная :)
Спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическое обновление данных в recordset / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]