Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Обновление свободной формы  [new]
Lekks
Member

Откуда:
Сообщений: 147
Привет. Есть код (ниже). Как после всех действий можно обнулить все поля формы для ввода новых данных? Пока только через DoCmd.Close и DoCmd.OpenForm реализовать получилось. Me.Undo, Refresh не работают.

    Private Sub SaveCmd_Click()
    On Error GoTo SaveCmd_Click_Error
    Dim ctl As Control
    Dim a As Integer
    Dim rstAcc As ADODB.Recordset
       
    For Each ctl In Me.Controls
        If IsNull(ctl) Then a = a + 1
    Next ctl
    If a > 0 Then
        MsgBox "Не заполнены обязательные сведения." & vbCr & "Заполните все поля!!!", vbOKOnly + vbCritical, "НЕДОСТАТОЧНО ДАННЫХ"
        GoTo ExitHere
    End If
        
    Set rstAcc = New ADODB.Recordset
    With rstAcc
        .Open "Accounting", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("RegNum") = Me.Registration
        .Fields("RegDate") = Me.RegiDate
        .Fields("OffenceDate") = Me.FOffDate
        .Fields("OffenceTime") = Me.FOffTime
        .Fields("PlaceID") = Me.FOffPlace.Column(0)
        .Fields("TypeID") = Me.FOffType.Column(0)
        .Update
        Me.OffID = .Fields("OffenceID")
    End With
    rstAcc.Close
    
    With rstAcc
        .Open "OffenceSubj", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("OffensID") = Me.OffID
        .Fields("SuspID") = Me.FsuspID
        .Update
    End With
    rstAcc.Close
    
    With rstAcc
        .Open "Process", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("OffenID") = Me.OffID
        .Fields("OfficerID") = Me.FActor.Column(0)
        .Fields("StatusID") = 1
        .Update
        .AddNew
        .Fields("OffenID") = Me.OffID
        .Fields("OfficerID") = Me.FDPNSI.Column(0)
        .Fields("StatusID") = 2
        .Update
    End With
    rstAcc.Close
    
    With rstAcc
        .Open "AnalitycAcc", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("OfID") = Me.OffID
        .Fields("PostsID") = Me.Fpost.Column(0)
        .Fields("ChangeID") = Me.FChg.Column(0)
        .Update
    End With
    rstAcc.Close
    Set rstAcc = Nothing
    
    MsgBox "Запись сохранена", vbOKOnly + vbInformation, ""
    
    Тут надо обновить поля
    
    On Error GoTo 0
    
ExitHere:
    Exit Sub

SaveCmd_Click_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure SaveCmd_Click, line " & Erl & "."

End Sub
18 ноя 18, 16:07    [21737456]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18929
Lekks
Пока только через DoCmd.Close и DoCmd.OpenForm реализовать получилось.

Можно и так. А можно и просто все поля по одному зачистить (лично я бы делал именно так).

Lekks
Me.Undo, Refresh не работают.
Работают... только так, как должны, а не как тебе хочется.
18 ноя 18, 17:29    [21737476]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5868
Akina,
свободная форма...А в этом есть крайняя необходимость? Что на таблице или запросе никак?
18 ноя 18, 17:37    [21737478]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5868
вдогонку: свободные формы я лично принимаю для ввода критериев или выбора объекта(отчета)для вывода на печать или указать формат вывода.Для ввода же данных,лично я, свободные формы использую крайне редко
18 ноя 18, 17:43    [21737481]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5868
Акина,
глыбокоизвинясь прошу прощения-сообщение для ТС
18 ноя 18, 17:46    [21737484]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18929
sdku
Для ввода же данных,лично я, свободные формы использую крайне редко
Я же, наоборот, предпочитаю выполнять ввод только через свободные формы. И к тому в общем много резонов.
Первое - в свободной форме гораздо проще выполнять все необходимые проверки - как в процессе ввода, так и перед записью. При этом, что приятно, без каких-либо пересечений с существующими ограничениями в структуре и наполнении данных. А уж если требования к целостности экзотические, так свободная форма вообще единственный способ выполнить ввод данных без геморроя.
Второе - свободная форма позволяет легко делать черновики ввода или прерывать ввод на середине процесса, с сохранением текущего состояния.
Третье - полное единообразие в работе с данными, требующимися для выполнения контроля. Нравится DAO? ну делаем всё через DAO... не нравится? давай делать всё через ADO... но главное - всё. И не надо оглядываться и вспоминать, что привязанные данные требуют совсем иного подхода для общения с ними... да ещё фокус не потеряй - тьфу...
Ну и ещё всякого по мелочи...
18 ноя 18, 18:28    [21737495]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
vmag
Member

Откуда: MP
Сообщений: 3156
Lekks
Как после всех действий можно обнулить все поля формы для ввода новых данных?


Если форма действительно свободная, пропишите нужные значения в поля, например
Me.Поле1 = ""
Me.Поле2 = 0
........
Me.Флажок38 = False


Если это нужно часто, можно оформить в виде отдельной процедуры формы и вызывать её потом откуда угодно...
Тоже люблю свободные формы, ничем не скован, больше степеней свободы...
18 ноя 18, 22:11    [21737599]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Игортан
Member

Откуда: Беларусь
Сообщений: 873
Akina,

А как поступаете с полями ввода даты?
Календарик то не показывается для свободного поля.
18 ноя 18, 22:57    [21737612]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
vmag
Member

Откуда: MP
Сообщений: 3156
Игортан
А как поступаете с полями ввода даты?


Обычно это = Date()
Если период, то начало и конец месяца
У меня обычно календарик это такая же независимая форма, которая вызывается и используется так же свободно и непринужденно
18 ноя 18, 23:11    [21737619]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Lekks
Member

Откуда:
Сообщений: 147
Игортан
Akina,

А как поступаете с полями ввода даты?
Календарик то не показывается для свободного поля.


Показывается, если формат свободного поля - формат дат

Akina
Lekks
Пока только через DoCmd.Close и DoCmd.OpenForm реализовать получилось.

Можно и так. А можно и просто все поля по одному зачистить (лично я бы делал именно так).


vmag
Если форма действительно свободная, пропишите нужные значения в поля, например
Me.Поле1 = ""
Me.Поле2 = 0
........
Me.Флажок38 = False


Если это нужно часто, можно оформить в виде отдельной процедуры формы и вызывать её потом откуда угодно...
Тоже люблю свободные формы, ничем не скован, больше степеней свободы...


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

vmag
У меня обычно календарик это такая же независимая форма, которая вызывается и используется так же свободно и непринужденно


Заинтересовало. Можно пример, если не жалко?
19 ноя 18, 11:32    [21737926]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 67728
Lekks
Заинтересовало. Можно пример, если не жалко?
Вот вам для примера.
Собственно, вызываете в любой форме.

К сообщению приложен файл (Calendar.rar - 79Kb) cкачать
19 ноя 18, 11:57    [21737984]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Lekks
Member

Откуда:
Сообщений: 147
Прогер_самоучка, спасибо
19 ноя 18, 12:16    [21738018]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Игортан
Member

Откуда: Беларусь
Сообщений: 873
Lekks
Показывается, если формат свободного поля - формат дат
признаюсь, раньше считал, что на свободном поле нельзя показать календарик....
Или это из 2007 у меня тянется.
Как раз когда то, отсутствие календарика меня остановило в работе со свободными.
Есть повод переосмыслить свой принцип работы.
19 ноя 18, 16:11    [21738291]     Ответить | Цитировать Сообщить модератору
 Re: Обновление свободной формы  [new]
Lekks
Member

Откуда:
Сообщений: 147
[quot Игортан]
Lekks
Или это из 2007 у меня тянется.


У меня 2007 )))
19 ноя 18, 16:33    [21738323]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить