所以我有这个有大量文本框,组合框等的表单。表单模块中有VB检查是否有重复项,然后运行一些更新查询将信息保存到表中。一切都很好。
我的问题是我可以在此表单模块中使用什么VB方法从所有这些对象(txt,cmb等)中获取信息并将其输出/保存到文本文件中?
我只是使用以下三个文本框作为示例:
Text1 - String
Text2 - Date
Text3 - True/False
我知道将vb添加到数据库表中的vb,但我希望能够将信息保存在文本文件中,然后使用SendObject方法允许这些文本文件通过电子邮件从字段发送到hq,然后放在一个更大的数据库中。
outlook sendobject我认为我对这一部分有一个很好的处理,只需要弄清楚如何用其中的数据创建一个文本文件。谢谢你的帮助!
答案 0 :(得分:2)
你可以遍历表单上的控件集合, 得到控件的名称&使用select case获取控件的类型&从中获取适当的值。
这些对可以写入字符串/文本文件,然后可以将其写入邮件正文中。
或者使用Access DoCmd.SendObject
DoCmd.SendObject acSendQuery, QueryName, acFormatXLS, emailAddress, "", "", "Form Data", "", 0
QueryName是一个提取所需信息的查询。 这会将其作为附加的XLS文件发送到电子邮件。
答案 1 :(得分:2)
您想要打开文本文件并使用write#或print#语句。进入Access VBA并在写入时搜索帮助。您将找到Write#语句,它将为您提供必要的示例代码。您可能需要print#语句,具体取决于您的要求。
答案 2 :(得分:1)
您的控件,文本框,组合框等是否与记录集绑定?在这种情况下,您不希望将相关的表记录发送给任何关注的人,而不是通过文本文件收集控制的值吗?我的意思是这可以做到,但我真的觉得很奇怪!
编辑:关注@galleySlave评论后,一个想法就是编写与此类似的代码:
Dim m_dataInForm as string, _
m_control as control
m_dataInForm = "Page Header"
for each m_control in screen.activeForm.section(1)
m_dataInForm = m_dataInForm & m_control.caption & ": " & m_control.value & vbCr & vbLf
Next m_control
m_dataInForm = "Details"
for each m_control in screen.activeForm.section(o)
m_dataInForm = m_dataInForm & m_control.caption & ": " & m_control.value & vbCr & vbLf
Next m_control
m_dataInForm = "Page footer"
for each m_control in screen.activeForm.section(2)
m_dataInForm = m_dataInForm & m_control.caption & ": " & m_control.value & vbCr & vbLf
Next m_control
m_dataInForm
将包含所有数据标题(.caption)和值(.value)。您可能需要一些额外的代码来避免没有标题(如行)或值(如标签)的控件上的错误和/或以预期格式获取值(“是”而不是-1)。这将花费您一些额外的说明,例如
SELECT CASE m_control.controlType
然后,您就可以在短信中发送m_dataInForm
值,或将其另存为某个文件。