|
|
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Люди, хочу изменить значение в рекордсете формы по отобранным данным. Как это сделать? FindFirst наверное будет долго и глупо, а вот как-нить recordset where. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:39 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
currentdb.execute "update ...",dbfailonerror me.requery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:42 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
УГУ так сейчас и работает, а через рекордсет реально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:47 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
А зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:52 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Может это в отдельную тему надо, но вот вопрос по Requery. Есть форма, в ней вложенная ленточная. В главной форме Form_Activate() в которой Вложенная.requery. Ставлю галку во вложенной ленточной, потом если переключиться в другое окно, при возвращении он пишет - "Необходимо сохранить тиекущее поле передвыполнением макрокоманды Обновление". C чем это может быть связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:55 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
2 paparome: А действительно! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 14:56 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Нужно, вот для чего. В форму идут преобразованные ID, поэтому в рекордсете формы будет легче выделить однородную группу по одному ID. Нсли идти по currentdb.execute, то это будет долго. Хотелось бы через рекордсет. Это реально? или ничего не остается, кроме как findfirst? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:06 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Люди, ну неужели нельзя как-то хитро воспользоваться recordsetclone(where), потом синхронизировать(как?) как-нить эти рекордсеты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 15:43 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Ничего не понял авторВ форму идут преобразованные ID Но почему бы не оставить в таком случае в форме скрытое поле с непреобразованным ид? В MDB этого делать даже не надо, просто пишем me!ИмяПоляТаблицыИлиЗапроса и получаем содержимое поля. Кстати, речь о mdb? автор, поэтому в рекордсете формы будет легче выделить однородную группу по одному ID. А что значит "легче выделить группу"? авторНсли идти по currentdb.execute, то это будет долго. Сомневаюсь я что-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:17 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
2 GEO автор Нсли идти по currentdb.execute, то это будет долго. Сомневаюсь я что-то... Каждый ID в таблице контекстно закодирован, поэтому нужно будет писать раскодировку на все записи, после чего уже делать что-либо - это долго (проверено). Но почему бы не оставить в таком случае в форме скрытое поле с непреобразованным ид? В MDB этого делать даже не надо, просто пишем В источнике данных формы уже есть раскодированное поле, именно поэтому и был задан вопрос по работе именно с данными формы, а не таблицы. А что значит "легче выделить группу"? вообще цель: очистить флаги у строк с определенным ID (Кстати, он не уникален) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:33 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
авторочистить флаги у строк с определенным ID (Кстати, он не уникален) Код: plaintext 1. 2. ИМХО: будет быстрее чем по recordset'у лазить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:43 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Согласен с pararome. Возьми да сделай таблицу с кучей строк и какими-нибудь данными. Поменяй в ней несколько записей по условию посредством запроса, а потом через рекордсет. И сравни время. А вообще автор"Необходимо сохранить тиекущее поле передвыполнением макрокоманды Обновление". C чем это может быть связано? На gotfocus главной формы ничего не выполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 16:53 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Нет определенного ID таблице - он закодирован и его показывать, временно сохраняя где-либо, нельзя!!! Получится так: Update tbl1 Set flag = false where id = [Раскодировка(ваш определенный ID)] это долго. :) Private Sub flag_AfterUpdate() Dim prep As Long, s As Long If flag Then prep = [ Код ] PredCena (prep) With Me.Recordset s = ![ Index ] .FindFirst ("[ Код ]=" & prep & " and [ Флаг ]=true and Index <>" & s) If Not (.NoMatch) Then Do .Edit ![ Флаг ] = False .Update .FindNext ("[ Код ]=" & prep & " and [ Флаг ]=true and Index <>" & s) Loop Until .NoMatch End If End With End If End Sub Все работает, но идет какое-то нелепое обновление формы, сразу по нескольким полям, хотя "я их нэ заказывал". Index нужен только для того, чтобы не стирать флаг там, где мы его ставим(он уникален). Код - это раскодированный ID в форме (он не уникален) Флаг - цель всего. :) 1)Возможно, вместо Index как-то использовать Bookmark? 2)точно не знаю, но если проводить все на recordsetclone, наверное все будет быстрее. Как потом синхронизировать изменения флагов? 3)Возможно ли выделить как-то recordset(where) типа pr=[Код]: recordset("select * where [Код]=" & pr) и воспользоваться movenext. (Чтобы уйти от Find)? 4)Если по п.№3 будет отдельный рекордсет, то как потом синхронизировать? Вот... Спасибо заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:13 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Похоже просто идет самопроизвольное обновление все подчиненной формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 17:34 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Смотри сюда: Private Sub flag_AfterUpdate() Dim prep As Long, s As Long, rec As DAO.Recordset If flagThen prep = [Код] s = Me.Recordset![Index] Me.RecordsetClone.Filter = "[Код]=" & prep & " and [Флаг]=true and Index<>" & s Set rec = Me.RecordsetClone.OpenRecordset While Not rec.EOF rec.Edit rec![Флаг] = False rec.Update rec.MoveNext Wend flag.Requery End If End Sub И у тебя все работает. Чисто и аккуратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 19:20 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Спасибо!!!!! Это то, что надо!!! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 19:22 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
извиняюсь перед paparome за опечатку. Зы. Из всего топика понял совсем мало. Ни что, ни почему не работает, ни почему заработало :( :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 21:33 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
Чем извиняться, взял бы да подправил... :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 21:35 |
|
||
|
Изменение области данных в рекордсете формы
|
|||
|---|---|---|---|
|
#18+
:) неправильно это, имхо (хотя и употребляю иногда) Написал, так написал. Хотя раз удалил подряд два своих топика, часов в семь-восемь утра, когда просмотров почти не было, и мне вдруг опять случайно приспичило дополнить Serge Gavrilov. Как то неподрассчитал я :)) И через минут 5 удалил. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 21:43 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32538946&tid=1674275]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
200ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 561ms |

| 0 / 0 |
