|
|
|
| Добрый день господа!!!Подскажите пожалуйста как можно красиво и правильно сделать чтобы в форме была кнопочка "Копирование N-раз". Имеется форма с множествами записями, которые вводятся или выбирается оператором.
При нажатии кнопочки должно вылезти сообщение "Введите количество раз дублирование записей", мы вводим например 3, при этом записей должно клонироваться еще два - несчитая основную запись; и при этом например поле "Литера" должно быть в первой записи равно быть 1, во второй записи 2, и в третьей записи 3..... и т.д....И при этом клонирование запесей допускается только при "Литера" >=1, если "Литера" >1, то выводится сообщение о предложении переправить на 1 и продолжить клонирование также как приводил пример с 3. | |
|
| |
|
|
|
|
| Есть форма, где оператор набирает заявку.... и там необходимо не просто вписывать количество а например чтобы было сколько существует количество заявок клонов столько и должно быть записей..... | |
|
| |
|
|
|
| у них есть поле "Код" которое никогда неповторяется..... | |
|
| |
|
11 Кб. |
|
| копировать все кроме кода
Private Sub BtnCopy_Click()
Dim i As Integer
If Me.fcount > 0 Then
For i = 1 To Me.fcount
CurrentDb.Execute ("INSERT INTO Tbl_Price ( Naim )" & _
"SELECT Tbl_Price.Naim FROM Tbl_Price WHERE [IdPrice]=" & Me.IdPrice & ";")
Next
End If
Me.fcount = 0
Me.Requery
End Sub
| -> копирует текущую запись заданное в поле fcount раз | |
|
| |
|
22 Кб. |
|
| Private Sub cmd_n_copy_Click()
On Error GoTo error_main
Dim dveri As Recordset
Set dveri = CurrentDb().OpenRecordset("dveri")
Dim n_s As String
Dim n As Integer
Dim schet As Integer
Dim otvet1 As Integer
Dim otvet2 As Integer
Dim lit As Long
Dim lit_n As Long
Dim lit_cc As Long
Me.Refresh
otvet1 = MsgBox("Создать несколько подобных изделий в рамках этого договора ?", vbOKCancel)
If otvet1 = 2 Then
MsgBox "Отменено пользователем"
otvet1 = DoEvents
Exit Sub
End If
n_s = InputBox("введите количество дверей в договоре") 'выводим форму для ввода
n = Val(n_s) 'переводим string в integer
If n = 0 Then
MsgBox "Ошибка ввода", vbCritical 'обрабатываем неправильный ввод
n = DoEvents
Exit Sub
End If
lit = Forms!Двери_Е!litera
If lit = 1 Then
lit_n = 1
lit_cc = 2
lit_n = DoEvents
lit_cc = DoEvents
End If
If lit <> 1 Then
If lit = 0 Then
otvet2 = MsgBox("Начальный номер изделия в договоре 0." & Chr(10) & _
"Исправить на 1 ?", vbOKCancel, "Предупреждение")
lit = DoEvents
If otvet2 = 1 Then
lit_n = 1
lit_cc = 2
End If
If otvet2 = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
End If
If lit <> 1 And Not lit = 0 Then
otvet2 = MsgBox("Начальный номер изделия в договоре не равен 1." & Chr(10) & _
"Исправить?", vbYesNoCancel, "Предупреждение")
If otvet2 = 7 Then
lit_n = lit
lit_cc = lit + 1
lit_n = DoEvents
in_otvet = MsgBox("Нумерация будет продолжена с " & lit_cc & "-го изделия", _
vbOKCancel, "Предупредждение")
If in_otvet = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
End If
If otvet2 = 6 Then
lit_n = 1
lit_cc = 2
End If
If otvet2 = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
End If
End If
Forms!Двери_Е!litera = lit_n
schet = n - lit_n
If schet < 0 Then
MsgBox "Ошибка ввода - текущий номер изделия больше чем у последнего", _
vbCritical 'обрабатываем неправильный ввод
Exit Sub
End If
If schet = 0 Then
MsgBox "Ошибка ввода - текущий номер изделия совпадает с последним", _
vbCritical
Exit Sub
End If
Do Until schet = 0 'запускаем цикл копирования
schet = schet - 1 '{!}f переписать на уровне записей
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
Forms!Двери_Е!litera = lit_cc
Forms!Двери_Е.Refresh
lit_cc = lit_cc + 1
DoCmd.GoToRecord acDataForm, "Двери_Е", acLast
Loop
Exit Sub
error_main:
MsgBox err.Description
Exit Sub
End Sub
Вот весь код....вылазит ошибка. см ошибка.JPG.
Имеется: таблицы хранятся в Мускуле, а в Аксе только линкованные таблицы, запросы, формы, отчеты.
Если вся база в Аксесе, то ошибок нет..... | |
|
| |
|
|
|
| Добрый день господа!!!Посмотрите пожалуйста почему вылазит ошибка.....уже неделю мучаюсь и никак неполучается...... Самое главное ошибка появляется только когда все таблицы перекинуты в Мускул - в Аксе остаются только линкованные таблицы....
При нажатии на кнопку "Копировать N-раз", вылазит форма с сообщением как показано в коде
otvet1 = MsgBox("Создать несколько подобных изделий в рамках этого договора ?", vbOKCancel)
If otvet1 = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
n_s = InputBox("введите количество дверей в договоре")
затем мы вводим количество дверей необходимых для клонирования. Для клонирования допускается только поле № изделия(litera) равным 1, если оно будет равно нуль или будет больше единицы то клонирование его выполнить нельзя.
т.е если мы посмотрин на картринку Форма Двери Евро-межгород.JPG, то мы должны получить в итоге клонированных столько записей сколько мы укажем в "введите количество дверей в договоре" включая и саму запись, т.е если мы указали 5, то он должен скопировать 4 раза.
Например: на картинке Двери Евро-межгород.JPG показан №дог 3137 и все остальные поля - это запись 127585. Значит если мы нажмем на конопку "Копировать N-раз" и введем в предложенной форме "введите количество дверей в договоре" число 3, то тогда эта запись 127585 с №дог 3137 и всеми остальными полями должны клонироваться включая эту запись ровно три раза, т.е клонируется еще два раза. Тогда получим что в записях 127585;127586 и 127587 будет одна и та же информация.
При этом поле № изделия(litera) должно идти по порядку до числа равному числу введенному в "введите количество дверей в договоре", а вся остальная информация без изменения.
Все поля находящиеся в этой форме имеются и в линкованной таблице "dveri", внутри поле "Код" ключевое.
Все скрины находятся здесь http://zalil.ru/30130817 | |
|
| |