2009-10-02 21 views
1

所以我有这种形式有吨的文本框,组合框等。有VB窗体模块在检查,看看是否有重复,然后运行一些更新查询以将信息保存到表中。所有这一切都很好。MS Access 2003中 - 从形式输出到一个文本文件中的信息

我的问题是什么VB方法我可以使用此形成模块从所有这些对象需要的信息(TXT,招商银行等)和输出/保存到一个文本文件?

我只是作为一个例子使用具有以下三个文本框形式:

Text1 - String 
Text2 - Date 
Text3 - True/False 

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

前景使用SendObject我觉得我有这部分相当不错的手感,只需要弄清楚如何创建一个含有数据的文本文件。谢谢您的帮助!

+1

表单用于输入数据,不用于发送到另一个数据库。 – Fionnuala 2009-10-02 10:38:57

+0

通常这是真的,并且毫无疑问,这很奇怪,但情况就是这样。我知道这是可以做到的(尽管这是一个虚假的trange方法),但是由于需求和资源的关系,这是我必须完成的最好方法。实际上有另一个Access工具就像这个,但我没有创建它。所以我只是想弄清楚如何以一种奇怪但必要的方式完成这件事。 – Justin 2009-10-03 15:10:51

回答

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值之一或将其保存为文件的某处。

+0

这很复杂。这必须是一个简单的远程MDE,与表或网络没有真正的联系......只需在同伴笔记本电脑中。所以这是可能的,因为我已经看到了,实际上已经有一个类似的MS Access工具在不同的部门使用。 所以没有这些文本框,combotexts等将被绑定到记录集......我必须用代码来做这一切我猜?我知道所有的代码(并且它是很多的!),用于我正在尝试做的ppt自动化方面,并且我假设如果我可以将所有这些信息和代码用于ppt工作。 – Justin 2009-10-03 15:02:42

+0

...那么我应该能够把所有这些值,并将它们输入到一个txt文件。我知道发送电子邮件的一些自动化功能......只是不知道如何在中间工作附件。 如果我在远程工具的代码中创建一条select语句而不执行.....我可以将UPDATE SQL语句保存为WORD文档,xls文件,记事本等等......什么是VB? ?认为这将工作 – Justin 2009-10-03 15:05:25

+0

我同意这是奇怪的....它只是情况。我真的不能等到这些员工回到现场后才提取信息,因为我需要大约10组不同的数据(总体流程),而且这些人一般都会出现相当长的时间 – Justin 2009-10-03 15:08:00

2

您可以通过控件的窗体上的collecton迭代, 获得控件的名称&使用选择的情况下得到控制&的类型,从它那里得到相应的价值。

这些对你可以写,然后可以制作成邮件正文的字符串/文本文件。

或者使用Access DoCmd.SendObject

DoCmd.SendObject acSendQuery, QueryName, acFormatXLS, emailAddress, "", "", "Form Data", "", 0 

凡QueryName是提取所有您需要的信息的查询。 这会将其作为附加的XLS文件发送到电子邮件。

+0

+1或者其他数据库人员可能就像表格一样。 – Fionnuala 2009-10-02 10:39:41

2

要打开一个文本文件,请使用写#或#打印报表。进入Access VBA并搜索写入帮助。你会发现Write#语句,它会给你必要的示例代码。您可能需要打印#声明取决于您的要求。

相关问题