Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Копирование данных формы (в т.ч. подчинен.) типа как в 1С. / 14 сообщений из 14, страница 1 из 1
14.01.2003, 09:23
    #32090022
AlexEburg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Может кто подскажет, а то этой темы похоже не было:

Как можно универсально перенести (скопировать) данные открытой формы в эту же форму на новой записи. Эта форма имеет подчиненную, т.е. ее данные тоже надо перенести.

В 1С это свиду очень эффекто и быстро. В инете встречаются только обсуждения и примеры дублирования записей, например - http://msa.polarcom.ru/st/d_1000045.htm.

Усложнение задачи: игнорировать перенос значений (только главной формы) определенных полей.

А ведь эта задача встречается очень часто.

Заранее благодарю!
...
Рейтинг: 0 / 0
14.01.2003, 12:49
    #32090183
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Может так?

Сохранили
Код: plaintext
1.
2.
3.
4.
5.
6.
For Each ctl In frm.Controls
        If ctl.ControlType = acTextBox Then
            DoCmd.Runsql  "insert into prom_table (naim,znach) values
            ('" & ctl.Name & "','" & ctl.value & "')" 
         End If
Next ctl


Восстановили
Код: plaintext
1.
2.
3.
4.
5.
set rst = currentdb().openrecordset ( "prom_table" ,dbOpenSnapShot)
while not rst.EOF
      frm.Controls(rst!naim)=rst!znach
      rst.MoveNext
wend
...
Рейтинг: 0 / 0
14.01.2003, 13:09
    #32090211
AlexEburg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Да, очень может. Но, я правильно понял - это касается текущей записи формы?

С переносом одной записи как раз проблем не возникает. Допустим запись галвной формы перенесли (продублировали), причем только того типа полей, которые хотели.

А как быть с переносом значений из подчиненной формы с несколькими записями?
...
Рейтинг: 0 / 0
14.01.2003, 13:42
    #32090259
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Если подчиненная форма не имеет полей связи с главной, то она и останется неизменной. Если такие поля есть, то что должно выводится в подчиненной, если в главной данные еще не сохранены? А если сохранены, то просто обновить ее. По-моему так, или я чего-то не понял?
...
Рейтинг: 0 / 0
14.01.2003, 16:46
    #32090506
AlexEburg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Можно я еще раз поясню проблему:

Две таблицы: СЧЕТ_ШАПКА, СЧЕТ_СТРОКИ,
соответственно две формы СЧЕТ_ШАПКА (главная), СЧЕТ_СТРОКИ (подчиненная).

Открываем форму СЧЕТ_ШАПКА на любой записи - в подчиненной СЧЕТ_СТРОКИ есть несколько заполненных строк.

По нажатию кнопки переходим на новую запись формы СЧЕТ_ШАПКА и копируем данные той записи с которой ушли: сначала главной формы, сохраняем, затем подчиненной. Получаем новый документ заполненный данными из выбранного.

С переносом данных главной формы все понятно – перенесли, сохранили, подчиненная остается пока пустой.

А как после этого перенести в новый документ нескольких записей подчиненной?

Вручную, если подчиненная форма – табличная, можно выделить всю таблицу, перейти на другую запись главной формы, опять же выделить всю таблицу подчиненной формы и вставить. При этом все происходит корректно с полем счетчика и не обновляемыми полями.

Т.е. надо для каждой подчиненной формы писать индивидуальный insert into или придумывать что-то с буфером обмена. А надо бы что-нибудь вроде
CopyFromRecordset где Recordset той подчиненной формы СЧЕТ_ШАПКА, который мы выбрали для копирования.
...
Рейтинг: 0 / 0
15.01.2003, 09:23
    #32090867
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
По-моему, без insert'а по каждой (а что, их тысячи, что-ли?) подчиненной не обойтись. Но, IMHO, создать эту самую подчиненную и красиво ее разместить займет на порядок больше времени, чем написать этот несчастный insert.
...
Рейтинг: 0 / 0
16.01.2003, 02:18
    #32091515
AndreyKa_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Для детального описания нужно знать: какой Access, mdb или adp, DAO или ADO.
Алгоритм такой:
При нажатии на кнопку "Сделать копию операции", текущей является запись которую ты копируешь.
Ты получаешь идентификатор основной записи.
Далее "собираешь" строку запроса Insert Into T1 (поля) Select (поля) From T1 Where ID = [Полученный идентификатор]
Если ID новой записи автоматически не присваивается, то в запрос вставляешь своё значение, если счётчик - max+1
В любом случае надо запомнить идентификатор новой основной записи.
Выполняешь из VBA запрос.
Затем таким же способом копируешь записи и подчинённой таблицы с указанием ID мастер-записи.
В любом случае надо работать с данными, а не с контролами, в конце делаешь перезапрос у формы.

Есть и другие варианты, например на recordset'ах можно транзакцию организовать.
...
Рейтинг: 0 / 0
16.01.2003, 09:41
    #32091580
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
2 AndreyKa_
В любом случае надо работать с данными, а не с контролами
См. вопрос:
Как можно универсально перенести (скопировать) данные открытой формы в эту же форму на НОВОЙ записи. , т.е. возможна ситуация, когда данные пока только в форме, а не в ее источнике, и все это хозяйство можно escap'ом отменить.
...
Рейтинг: 0 / 0
16.01.2003, 10:25
    #32091607
AlexEburg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Благодарю:
Savik и AndreyKa за помощь в проблеме.

Действительно - не данные таблиц нужно перемещать , работаем то с новой записью, которая необязательно должна быть сохранена.

Еще меня удивляет нерешенность этой задачи в приложениях на Access (по крайней мере тех которые я опробовал или читал описание, в т.ч. и бухгалтерских) - просто ее нет. А представьте себе 1С без фунции создания нового документа на базе выбранного (напр. счет на оплату) - пользователи будут в шоке.

Буду биться дальше, напишу что-нибудь вплоть до прохода по всем записям подч. формы.

Может все-таки кто-то решал в своих прог. подобную задачу. Буду благодарен за пример [email=]alex1971@r66.ru . Или ссылку.
...
Рейтинг: 0 / 0
16.01.2003, 16:22
    #32091962
AndreyKa_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
2 Savik
Может я не понимаю, но как ты сможешь создать новую запись и переместить на неё фокус в форме не закончив редактирование образца.

2 Alex
Твоя задача довольно проста в реализации. Отсутствие таких функций в знакомых тебе приложениях можно объяснить тем, что на Access практически не делают коммерческие продукты уровня 1С, с продуманным и оптимизированным вводом данных.
...
Рейтинг: 0 / 0
16.01.2003, 17:17
    #32092016
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
2 AndreyKa_

Последовательность действий:
1.Стою на записи n
2.Делаю my_Copy
3.Перехожу на новую запись
4.Делаю my_Paste

Имею результат : во всех полях формы значения из записи n, но в источнике данных этой записи ЕЩЕ НЕТ.
...
Рейтинг: 0 / 0
16.01.2003, 22:41
    #32092188
AndreyKa_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
>Последовательность действий:
>1.Стою на записи n
>2.Делаю my_Copy
>3.Перехожу на новую запись
Запись n автоматически сохраняется
>4.Делаю my_Paste
...
Рейтинг: 0 / 0
17.01.2003, 11:32
    #32092374
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
2 AndreyKa_
Я ему про Фому, а он мне про Ерёму...
Уже и задавший вопрос ушел давно.
В НОВОЙ - то записи (не n, а, скажем, m, m>n) после шага 4 данные только в ПОЛЯХ ФОРМЫ, запись NewRecord, в источнике их нет ещё, чтобы они там появились, нужен апдейт формы; при копировании ЗАПИСЕЙ они уже там будут, и запись будет не NewRecord.
Best Regards.
...
Рейтинг: 0 / 0
17.01.2003, 15:19
    #32092574
AndreyKa_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных формы (в т.ч. подчинен.) типа как в 1С.
Понял. Только почему она обязательно должна быть NewRecord? Ну сохранил образец, подправил, не понравилось -удалил...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Копирование данных формы (в т.ч. подчинен.) типа как в 1С. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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