Можно ли поднять Recordset с нуля?

udav2alex
Дата: 23.11.2006 22:23:10
Хочу создать Recordset, заполнить его данными, а потом данные из Recordset записать в таблицу.

Задача такая:
1. Есть TBL, содержащая набор записей.
2. Каждая запись в TBL формируется на основе одной из записей отдельной таблицы темплейтов + реакция пользователя (ну например, темплейт "Я люблю кататься на <<ср-во передвижения>>", форма-мастер попросит ввести _ср-во передвижения_).
3. Новые записи нужно добавлять в TBL пачками (!), с возможностью отката, ибо одновременно в базе могут сидеть несколько юзеров - они не должны видеть отдельные записи вне пачки. Да и удалять записи для отката не очень хочется...

Т.е. сначала некая форма (типа мастера) задает вопросы читая пачку темплейтов, генерит при этом некую _сущность_ которая содержит будущие записи TBL, а потом, когда ВСЯ пачка записей сформирована и пользователь подтвердил, что правильно ответил на все вопросы, сбрасывает данные в таблицу TBL. Мне кажется, что такой сущностью может быть Recordset.

Подскажите, пожалуйста, как подступиться к этому - где чего почитать, может быть?
Recordset.open имхо не катит, т.к. отстутствует Source. Думаю, что надо создать Recordset, определить его поля, а потом наполнять... Но как это сделать не знаю. Возможно, я ошибаюсь даже с подходом...

Что скажете, господа эксперты?
nibbles
Дата: 23.11.2006 23:08:04
udav2alex
Что скажете, господа эксперты?


Хм... по-моему, я мало выпил... пойду еще хряпну

P.S. Recordset с нуля создать можно, заполнить его данными тоже можно, добавить из него данные в другой источник данных - можно, добавлять данные внутри пакетов-батчах - можно, скрыть от других пользователей обновления - можно... и вообще - все можно, если задача сформулирована ясно и должным образом декомпозирована, а вопрошающий не хочет, чтоб "господа эксперты" за него сделали всю работу.

Удачи
Karfaqen
Дата: 23.11.2006 23:17:13
Можно иметь временную таблицу для одного сеанса анкетирования, которую, после удачного завершения сеанса, переписывать в одной транзакции в основную таблицу готовых анкет TBL. А до завершения этого сеанса ваши "мастера" трудятся в пределах этой временной таблицы, по ходу дела заполняя ее вашими вопросами/ответами.
udav2alex
Дата: 23.11.2006 23:24:24
nibbles
udav2alex
Что скажете, господа эксперты?


Хм... по-моему, я мало выпил... пойду еще хряпну

P.S. Recordset с нуля создать можно, заполнить его данными тоже можно, добавить из него данные в другой источник данных - можно, добавлять данные внутри пакетов-батчах - можно, скрыть от других пользователей обновления - можно... и вообще - все можно, если задача сформулирована ясно и должным образом декомпозирована, а вопрошающий не хочет, чтоб "господа эксперты" за него сделали всю работу.

Удачи


Ну а я и не говорил "сделайте за меня"! Спасибо и за "можно".
Если бы перечислил методы, то вообще бы цены не было.
Хряпни хорошенько... за здоровье.
udav2alex
Дата: 23.11.2006 23:25:44
Karfaqen
Можно иметь временную таблицу для одного сеанса анкетирования, которую, после удачного завершения сеанса, переписывать в одной транзакции в основную таблицу готовых анкет TBL. А до завершения этого сеанса ваши "мастера" трудятся в пределах этой временной таблицы, по ходу дела заполняя ее вашими вопросами/ответами.


Ну это решение в лоб ;)
Я думал покрасивее сделать...
nibbles
Дата: 23.11.2006 23:34:47
показываю... создание НЗ с нуля:
Set rst = New ADODB.Recordset
With rst
    .Fields.Append "CustNum", adVarChar, 100
    .Fields.Append "CalcNum", adVarChar, 100
    .Fields.Append "Email", adVarChar, 100
    .Open
     .AddNew Array("CustNum", "CalcNum", "Email"), _
               Array(Nz(Me.CustNum.Value, ""), Nz(Me.CalcNum.Value, ""), sMailAddress)
    .UpdateBatch
End With
udav2alex
Дата: 23.11.2006 23:36:01
nibbles
показываю... создание НЗ с нуля:
Set rst = New ADODB.Recordset
With rst
    .Fields.Append "CustNum", adVarChar, 100
    .Fields.Append "CalcNum", adVarChar, 100
    .Fields.Append "Email", adVarChar, 100
    .Open
     .AddNew Array("CustNum", "CalcNum", "Email"), _
               Array(Nz(Me.CustNum.Value, ""), Nz(Me.CalcNum.Value, ""), sMailAddress)
    .UpdateBatch
End With


Отлично, спасибо большое.
Извини, если обидел.
iiiiiiiiiiiiiiiiii
Дата: 24.11.2006 12:33:46
автор
Set rst = New ADODB.Recordset

мы саме не местныя занчицца, этта...., интересуемсо, значицо, а индексы на него, на рекордсету эту навесить можно? значицо эдык нескака штук? - хочицо оченно рулимый юзерский "кэш" поиметь, но ф памяти, а не на диске.

или, хаттяб, букмакри у няго живучаи (шобы "индексные" коллекции указателей (массивов букмарков) насоздавать)?


PS. с какого акса этим удобна пользоваццо?