MS Access 2003 - 从表单输出到文本文件的信息

时间:2009-10-02 10:03:40

标签: ms-access vba automation access-vba

所以我有这个有大量文本框,组合框等的表单。表单模块中有VB检查是否有重复项,然后运行一些更新查询将信息保存到表中。一切都很好。

我的问题是我可以在此表单模块中使用什么VB方法从所有这些对象(txt,cmb等)中获取信息并将其输出/保存到文本文件中?

我只是使用以下三个文本框作为示例:

Text1 - String
Text2 - Date
Text3 - True/False

我知道将vb添加到数据库表中的vb,但我希望能够将信息保存在文本文件中,然后使用SendObject方法允许这些文本文件通过电子邮件从字段发送到hq,然后放在一个更大的数据库中。

outlook sendobject我认为我对这一部分有一个很好的处理,只需要弄清楚如何用其中的数据创建一个文本文件。谢谢你的帮助!

3 个答案:

答案 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值,或将其另存为某个文件。