|
|
|
| Private Sub save___print_Click()
On Error GoTo save___print_Click_Err
Dim i
If (IsNull(aah)) Then
DoCmd.RunMacro "eror.4", , ""
DoCmd.GoToControl "AAH"
Exit Sub
End If
If (IsNull(Hasce)) Then
DoCmd.RunMacro "eror.5", , ""
DoCmd.GoToControl "hasce"
Exit Sub
End If
If (IsNull(sum) Or sum = 0 Or sum < 0) Then
DoCmd.RunMacro "eror.3", , ""
DoCmd.GoToControl "sum"
Exit Sub
End If
If (IsNull(npatak)) Then
DoCmd.RunMacro "eror.6", , ""
DoCmd.GoToControl "Npatak"
Exit Sub
End If
If data < date Then
DoCmd.RunMacro "eror.7", , ""
DoCmd.GoToControl "data"
Exit Sub
End If
If (IsNull(order)) Then
Beep
Exit Sub
End If
On Error Resume Next
If (Form.Dirty) Then
DoCmd.RunCommand acCmdSaveRecord
End If
If (MacroError.Number <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
Exit Sub
End If
On Error GoTo 0
DoCmd.OpenReport "nandor", acViewNormal, "", order, acNormal
""""""""""""""""DoCmd.GoToRecord acForm, "n", acNewRec """"""""""""""""( пишет ошибку Eror 2046 The command or action "gotorecord" isnt acalible now)
DoCmd.GoToControl "aah"
save___print_Click_Exit:
Exit Sub
save___print_Click_Err:
MsgBox Error$
Resume save___print_Click_Exit
End Sub | |
|
| |
|
|
|
|
| да это код из этой форумы | |
|
| |
|
|
|
| замените эту строчку на
Forms("n").Recordset.AddNew
или
me.Recordset.AddNew
Совет, отказывайтесь от макросов | |
|
| |
|
|
|
| У тебя фокус находится на отчете
надо его переместить на форму n и перейти на новую запись | |
|
| |
|
|
|
| как это? как я понимаю команда DoCmd.GoToRecord и менает фокус
я всегда так делую и всегда работает
Private Sub save___print_KeyPress(KeyAscii As Integer)
On Error GoTo save___print_KeyPress_Err
If (IsNull(aah)) Then
DoCmd.RunMacro "eror.4", , ""
DoCmd.GoToControl "AAH"
Exit Sub
End If
If (IsNull(Hasce)) Then
DoCmd.RunMacro "eror.5", , ""
DoCmd.GoToControl "hasce"
Exit Sub
End If
If (IsNull(Sum) Or Sum = 0 Or Sum < 0) Then
DoCmd.RunMacro "eror.3", , ""
DoCmd.GoToControl "sum"
Exit Sub
End If
If (IsNull(npatak)) Then
DoCmd.RunMacro "eror.6", , ""
DoCmd.GoToControl "Npatak"
Exit Sub
End If
If (IsNull(order)) Then
Beep
Exit Sub
End If
On Error Resume Next
If (Form.Dirty) Then
DoCmd.RunCommand acCmdSaveRecord
End If
If (MacroError.Number <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
Exit Sub
End If
On Error GoTo 0
DoCmd.OpenReport "tandor", acViewNormal, "", order, acNormal
DoCmd.GoToRecord acForm, "t", acNewRec
DoCmd.GoToControl "aah"
save___print_KeyPress_Exit:
Exit Sub
save___print_KeyPress_Err:
MsgBox Error$
Resume save___print_KeyPress_Exit
End Sub а это код работает вчём разница ? (взято ис другой формы) | |
|
| |
|
|
|
| формы не popup или модальные ? Обе? | |
|
| |
|
|
|
| Osmor спасибо за совет заработало но типер ошибка в DoCmd.GoToControl "aah" и ещё вот такой вапрос есть поле в поле по умалчению дата например 21,05,2011(имя поле data) как написать чтобы при нажатии кнопки vba провиряла если data < текущий даты или data > текущуий даты но чтобы +5 дней далше я напишу
dim t as date
t =date
if d< t then
*********
end if а как далше
и как пичатать очёт чтобы небыло конпки отмена (чтобы не появилась окно где написано идёт печать очёта )
popup - yes
модальные -yes | |
|
| |
|
|
|
|
но типер ошибка в DoCmd.GoToControl "aah"
|
можно попробывать (если фокус находится на форме)
me![aah].setfocus
или
forms![имя формы]![aah].setfocus | |
|
| |
|
|
|
| Да заработало спасибо а на другие вапросы кто нибуть может ответить ? | |
|
| |
|
|
|
| ..можно поизучать вот тут...
http://vba-help.ru/vbahelp/Function/date/DatePart/ | |
|
| |
|
|
|
|
| data > текущуий даты но чтобы +5 дней
data <= DateAdd('d', 5, Date()) | |
|
| |
|
|
|
| Час это понятно но проблема в том что день может быть первым днём месеца или паследним днём тогда будит ли работать этот код? | |
|
| |
|
|
|
| Будет работать!
Всё уже придумано - до нас. | |
|
| |
|
|
|
|
| Надо видимо - поле дата привести в соответствующий тип - тип дата.
Или чё не работает то? | |
|
| |
|
|
|
| час в свойствах FOR DATES или не правилно? | |
|
| |
|
|
|
|
Функция CDate распознает форматы данных в соответствии с параметрами языковых стандартов
компьютера. Если формат передаваемого аргумента не соответствует распознаваемым настройкам даты,
функция не сможет определить правильный порядок дней, месяцев и лет. Кроме того, длинный формат даты
не распознается, если в нем содержится строка дня недели.
|
| |
|
| |
|
|
|
|
В этом примере функция CDate используется для преобразования строки в тип Date. На практике не
рекомендуется определять в тексте программы дату и время в виде строк (как показано в этом примере).
Вместо этого пользуйтесь литералами даты и времени, например #2/12/1969# и #4:45:23 PM#.
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "12 февраля 1969 г."
' Преобразование в тип данных Date.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Преобразование в тип данных Date.
MyShortTime = CDate(MyTime)
|
| |
|
| |
|