В качестве отправной точки попробуйте Google по «несвязанной форме в Access». Не отвлекайтесь на PacMan! ;)
В любом случае основная идея несвязанной формы - загрузить данные в несвязанные элементы управления из набора записей, а затем сохранить их обратно, когда будут сделаны изменения. Это означает, что вам нужны эти вещи:
элементы управления для выбора необходимой записи, какой-либо функции поиска.
код, чтобы открыть набор записей и записать данные из полей в соответствующие элементы управления формы.
элементы управления, чтобы сохранить запись в базу данных, которая будет использовать обновление SQL для записи значений в несвязанных элементах управления обратно в базу данных. Я предпочитаю не обновлять поля, которые не изменились (потому что у меня много реплицированных приложений Jet, а несколько обновлений могут привести к ненужным конфликтам репликации). Вы можете сравнить данные в управляющих элементах с данными в исходном наборе записей (если вы откроете его как набор записей типа моментального снимка, он не будет отображать какие-либо обновления с момента его открытия) и напишите свой SQL UPDATE только для полей, где значения не совпадают. Вам придется учитывать Nulls.
Общая практика назвать элементы управления точно такие же, как поля они соотносятся с так что вы можете цикл сбора полей в Recordset и загрузить данные в систему управления:
For Each fld In rs.Fields
Me.Controls(fld.Name) = fld.Value
Next fld
Вы можете сделать аналогично для сохранения данных и проверки контрольных значений по отношению к исходным значениям записей.
Я не знаю, работает ли это с полями SQL Server VarChar() или нет, но вы также можете попробовать, что я называю «полу-связанной» формой, где вы загружаете набор записей с помощью свойства RecordSource формы, но не 't привязать поля к элементам управления. Таким образом, форма привязана, но элементы управления не являются. Я очень часто делаю это с полностью связанной формой, где я делаю поля memo несвязанными (чтобы избежать опасности повреждения указателя поля memo в кончиках Jet/ACE). В этом случае, с связанной формой записями и несвязанным текстовым полем для редактирования, вы могли бы сделать это:
в OnCurrent событиях формы, загрузите несвязанное поле (я) данные в соответствующем несвязанное текстовое поле (эс).
в событиях (-ях) AfterUpdate несвязанного элемента управления, записать данные в несвязанные текстовые поля обратно в источник записей.
Эти два шага будут в основном выглядеть примерно так:
Private Sub Form_Current()
Me!txtMemo = Me!Memo
End Sub
Private Sub txtMemo_AfterUpdate()
Me!Memo = Me!txtMemo
Me.Dirty = False
End Sub
С Jet/ACE заднего конца, вы хотите сохранить запись сразу после записи значения мемо поля, так как в противном случае вы не избегаете опасности развращения указателя поля памятки. С задней частью SQL Server вам может понадобиться или нет, так как проблемы полностью разные. Сохранение освободит блокировку записи, но вам может и не нужно этого избегать.
Кроме того, я предполагаю, что данные VarChar() могут быть прочитаны из базового источника записи формы и записаны в текстовое поле. Вам нужно будет посмотреть, работает ли это.
Мне нравится идея полу-связанной формы. Давайте посмотрим, получилось ли я правильно. в событии OnCurrent я открываю свой набор записей и заполняю несвязанное поле в форме, затем закрываю набор записей. В AfterUpdate моего несвязанного поля я открываю набор записей и обновляю его, а затем закрываю его. Если я настроил его таким образом, как мне обрабатывать добавление записей через форму? Прямо сейчас, я планирую иметь только одно несвязанное поле в форме. – DoubleJ92
С формой «полу-привязка» вы вообще не открываете набор записей - поле загружается в базовый источник записей формы. Что касается добавления записей в эту «полу-связанную» форму, вы бы сделали это так же, как и в полностью связанной форме. –