问题:
用户应该能够在Access 2010中使用Textfieldcontroll编辑RTF格式化文本,RTF应该更新为具有varbinary(max)列的表,(Sql Server 2008 R2
我的解决方案:
首先:用户点击"编辑条目"按钮,触发以下代码:
...
DoCmd.OpenForm "theRtfEditForm", , , stLinkCriteria, , , args
...
第二:激活表单,执行以下代码(onload-event):
Private Sub Form_Load()
Dim TheRowiWantToEdit As String
If (Me.OpenArgs <> "" And Not IsNull(Me.OpenArgs)) Then
TheRowiWantToEdit = OpenArgs
End If
Dim query As String
query = "select top 1 theColumnIWantToEdit from TableFoo where id = " & TheRowiWantToEdit
Me.recordsource = query
Me.Requery
End Sub
现在我可以键入文本,甚至可以格式化它,虽然我无法设置文本对齐(但这是一个不同的故事)。它也会更新到我的sql数据库,一切正常,
但有一个问题:
在表格的左下角有记录选择器,说:1 of 1,当我在编辑我的rtf时按Enter键时,它将跳转到2的记录。现在,当我输入内容然后点击时输入,它会说:
无法将值NULL插入列&#39; AColumnINeverselectedInMyQuery&#39;,table&#39; TableFoo&#39 ;; colmn不允许空值。 INSERT失败。
现在我在Stackoverflow上做了一些研究,并发现了这个帖子: VBA-manipulate field with subform
我也在microsoft.com上考虑了this网站。
但我的问题是:我希望我的用户能够编辑现有记录,而不是添加新记录。而且我也仔细预选了一个记录,所以记录选择器在我的情况下是完全无用的,是的,我试图设置Formproperties-&gt;记录选择到&#34; no&#34;,但它不起作用。
除此之外,编辑工作,如果用户没有按回车,但是当你不能制作段落时,有什么意思吗?
我的本质问题:
如何显示/编辑这一条记录?
答案 0 :(得分:1)
尝试添加声明
Me.AllowAdditions = False
到Form_Load()
代码。这应该可以防止用户无意中转移到“新记录”。