powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заказчик выдал идею по вставке записей. Помогите разобраться.
19 сообщений из 19, страница 1 из 1
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370033
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть простая форма ввода данных. Не ленточная, а именно простая. Ситуация такая, необходимо ввести скажем 50 записей, которые между собой в конечном итоге отличаются незначительно. Вот заказчик и говорит, мол лениво копировать, а потом вставлять из буфера 50 раз и только потом изменять, хочу чтобы за одну вставку 50 записей, и вообще не обязательно 50, а ситуационно - т.е сколько потребуется.
Подскажите, пожалуйста, как это можно сделать?
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370034
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ввел запись - по кнопочке открылась формочка с вопросом
скока раз желаете размножать?
юзер вводит цифирь
нажимает ОК
всплывает месадж
вы уверены
юзер тыкает
да
(так можо повторить введенное число раз - для прикола)
запускается саб который и вставляет данные н раз
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370035
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dim t as long

for t = 1 to 50

docmd.RunCommand acCmdSelectRecord
docmd.RunCommand acCmdCopy
docmd.GoToRecord acDataForm, me.name, acNewRec
docmd.RunCommand acCmdPaste

next

, например.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370038
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас попробую
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370067
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал с того, что создал кнопку с помощью мастера, там можно выбрать такую вещь как дублирование записи. Опять же это добавление 1 записи, а не нескольких сразу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub КнопкаДЗ_Click()
On Error GoTo Err_Кнопка150дз_Click


    DoCmd.DoMenuItem acFormBar, acEditMenu,  8 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  2 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  5 , , acMenuVer70 'Paste Append

Exit_КнопкаДЗ_Click:
    Exit Sub

Err_КнопкаДЗ_Click:
    MsgBox Err.Description
    Resume Exit_КнопкаДЗ_Click
    
End Sub


Далее залез в хелп, нашел там кусок кода, и стал скрещивать ужа с ежом, беда в том, что получилось не то что нужно, а колючая проволока:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Sub ДубЗапВВ_Click()
   Dim strMsg As String, strInput As String

    ' Initialize string.
    strMsg = "Введенное вами число меньше 1 или больше 50. Вводите число только из этого периода!"
        ' Prompt user for input.
    strInput = InputBox( "Введите число между 1  и  50 .")
    ' Determine if user chose "Cancel".
    If strInput <> "" Then
        ' Test value of user input.
        Do While strInput <  0  Or strInput >  50 
            If MsgBox(strMsg, vbOKCancel,  "Error!" ) = _
                    vbOK Then
                DoCmd.DoMenuItem acFormBar, acEditMenu,  8 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  2 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  5 , , acMenuVer70 'Paste Append
            Else
                Exit Sub
            End If
        Loop
        ' Display user's correct input.
        MsgBox  "Вставлено записей "  & strInput &  "." 
    Else
        Exit Sub
    End If
End Sub


Но записи не дублируются. Помогите, пожалуйста. исправить код.

2 Geo
Я так понимаю ваш цикл нужно поставить в процедуру, но ведь там автоматом будет ставиться 50 записей, а как быть если нужно скажем 40 или 60?
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370083
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, так (модифицируя ГЕО)?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
dim t as long, i As Long
docmd.RunCommand acCmdSelectRecord 
docmd.RunCommand acCmdCopy
On Error GoTo ErrCopy
i = InputBox( "Сколько раз копировать?" )
for t =  1  to i

docmd.GoToRecord acDataForm, me.name, acNewRec 
docmd.RunCommand acCmdPaste 

next 

Exit Sub

ErrCopy:
MsgBox  "Введено некорректное выражение!" 
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370092
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо 2 Geo и AlexJuice!

Идея с циклом действительно то, что надо! Единственно, что команды пришлось поставить другие! Из того дублирования, что я приводил. А иначе Access извращается и вставляет записи в то поле где находился курсор, причем вставляет ВСЕ в одно поле. А так все работает и не жужжит! Подставил дополнительно MsgBox сообщающий количество вставленных записей.
Сухой остаток такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub ДубЗапВД_Click()
Dim t As Long, i As Long
    
On Error GoTo ErrCopy
i = InputBox( "Сколько раз копировать?" )
For t =  1  To i
    DoCmd.DoMenuItem acFormBar, acEditMenu,  8 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  2 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  5 , , acMenuVer70 'Paste Append


Next
    MsgBox  "Вставлено записей "  & i &  "." 
Exit Sub
    
ErrCopy:
    MsgBox  "Введено некорректное выражение!" 
End Sub


Еще раз спасибо! День прожит не зря!
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370094
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не только день! Ночь тоже
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370269
Может и не зря
Только заказчик вероятно хотел другое.
Просто чтобы форма ввода не закрывалась после ввода одной записи,
а позволяла немного отредактировать данные и еще раз(два, три) нажать на кнопку сохранения.
Обычное дело при потоковом вводе.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370313
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 -------------
Таки нет! Форма ввода закрываться не собирается, а заказчику нужно просто заданное количество копий записи, чтобы потом незначительно изменить каждую копию, а не создавать их вручную.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370324
А изменять он как будет ?
Опять открыть форму на изменение, изменить, нажать на сохранение ?
Гораздо проще сразу подправить значения, введенные для предыдущей записи, и сохранить.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370343
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык, нет такой проблемы! Выбирается запись, вставляется нужное количество раз, ключевое поле там счетчик, а чтобы отредактировать нужно просто перейти к копиям и собственно... отредактировать! Сохраняется все автоматически и ни на какое сохранение жать нет никакой необходимости (если только для удовольствия). И форма ввода сама не закрывается, а только по нажатию кнопки. И весь процесс вставки и редактирования проходит при открытой форме. А если хочется после редактировать то на здоровье записи все равно уникальные.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370371
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Rimbombo
Имхо.
------------- правильно говорит.
Попробуй реальную ситуацию: у тебя 50 записей, отличия в различных полях.
Ты выполняешь множественное копирование, а затем листаешь все записи и правишь...не намного удобнее буфера обмена.

Альтернативный вариант:
После обновления записи копировать значения полей в значения по умолчанию (только немного придется повозится с преобразованием типов, т.к. свойство значения по умолчанию - строка символов, а поля могут быть разных типов).
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370397
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 incold
Вы совершенно правы в части того, что это не намного удобней буфера обмена. Более того по мне так просто поставить через мастера стандартную кнопку дублирования записи, мол продублировал - внес изменения, если надо еще раз продублировал. Но заказчик сказал ХОЧУ ТАК. Теперь он это имеет. Стандартную кнопку дублирования записи я все равно поставлю. Ситуация в принципе изначально ясная.
Что касается уважаемого ----------, то он с упорством достойным лучшего применения говорил про то что форму нужно открывать-закрывать а записи "сохранять", с чем согласиться не могу, по причине того, что все прекрасно работает. В части того, что вы сказали, ------- и это тоже имел в виду, еще раз повторюсь - согласен.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370403
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не всегда нужно делать все то, что говорит заказчик - он может сильно заблуждаться.

В общем-то оба варианта нормальные, но...
При создании сразу нескольких записей, а потом их последующем редактировании повышается вероятность того, что оператор пропустит/забудет/не заметит изменения в одной из записей (или в нескольких).

Возможно оператор говорит "хочу так" потому, что не представляет себе других вариантов.
Вариант с заполнением значений по умолчанию, очень даже (у меня используется в подобных ситуациях), потому как все изменения можно вносить сразу при вводе записей, а повторяющиеся значения каждый раз копируются, т.е. их не нужно перенабирать - вероятность сделать ошибку намного меньше.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370411
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 incold
Я возьму на заметку ваш вариант. К сожалению в один присест я не смогу его осилить, по причине слабой подкованности в вопросе. Подробно разбираться в данный момент нет возможности. Все равно большое спасибо.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370548
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доработал еще немного и получилось так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub ДубЗапВД_Click()
Dim t As Long, i As Long
    
On Error GoTo ErrCopy
If MsgBox( "Вы получили разрешение начальника договорной службы на дублирование записей?" , vbYesNo) = vbYes Then
    i = InputBox( "Сколько раз копировать?" )
    If MsgBox( "Вы действительно хотите вставить   "  & i &  "  записей?" , vbYesNo) = vbYes Then
    Else: GoTo ErrCopy
    End If
For t =  1  To i
    DoCmd.DoMenuItem acFormBar, acEditMenu,  8 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  2 , , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu,  5 , , acMenuVer70 'Paste Append
Next
    MsgBox  "Вставлено записей   "  & i &  "." 

Else: GoTo ErrCopy
End If
Exit Sub
    
ErrCopy:
    MsgBox  "Ошибка ввода, либо вам не разрешено дублировать записи!" 

End Sub


Надеюсь, что это сгодится не только мне, но и другим разработчикам. Большой привет.
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370554
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторIf MsgBox("Вы действительно хотите вставить " & i & " записей?", vbYesNo) = vbYes Then
Else: GoTo ErrCopy
If MsgBox("Вы действительно хотите вставить " & i & " записей?", vbYesNo) <> vbYes GoTo ErrCopy
...
Рейтинг: 0 / 0
Заказчик выдал идею по вставке записей. Помогите разобраться.
    #32370568
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
MsgBox  "Вставлено записей   "  & i &  ". Не забудьте доложить начальнику договорной службы о содеянном. 
Ужо-то он вам за каждую запись вставит!" 

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


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