Office中国论坛/Access中国论坛

标题: 导入Execl示例,碰到困难,请教如何设置子窗体中文本框的数据源? [打印本页]

作者: heqing3000    时间: 2009-12-31 16:05
标题: 导入Execl示例,碰到困难,请教如何设置子窗体中文本框的数据源?
要求与遍历得到的查询字段名称一一对应。不可直接将文本框绑定,因为我想做成一个活动的。
见附件![attach]41046[/attach]
作者: todaynew    时间: 2009-12-31 16:18
实例没看明白想解决什么问题。
控件来源用me.text1.ControlSource设置;
控件值用me.text1.value设置。
作者: heqing3000    时间: 2009-12-31 16:36
思路是:
   1。 查询一个EXCEL表格内容,QryExcel导入
   2。 子窗体的来源为该查询
   3。 将子窗体中的文本控件分别与查询中的字段名相对应。方便查看。
   4。 。。。。。。。接下来就可做成活动的导入工具。
作者: heqing3000    时间: 2009-12-31 16:48
Dim rs As DAO.Recordset
Dim Flt As Field
Dim Flt1 As Field
'定义返回对象实例
Set rs = CurrentDb.OpenRecordset("QryExcel导入")

'遍历字段集合,列出所有字段
For Each Flt In rs.Fields
     
                        
            Dim ctl As Control
           '遍历子窗体上的控件,并将Flt依次指定给其做为来源,这里搞不定???????
            For Each ctl In Me.子窗体.Form.Controls
                If ctl.ControlType = acTextBox Then
                        Me.子窗体.Form.ctl.ControlSource = Flt.Name
                End If
            Next ctl
     
Next Flt

'关闭记录集并释放对象占用空间
rs.Close
Set rs = Nothing
作者: todaynew    时间: 2009-12-31 17:11
本帖最后由 todaynew 于 2009-12-31 17:16 编辑

试试:
Dim rs As DAO.Recordset
Dim Flt As Field
Dim ctls As Controls
Dim ctl As Control
Set rs = CurrentDb.OpenRecordset("QryExcel导入")
set ctls=Me.子窗体.Form.Controls
For Each Flt In rs.Fields
            For Each ctl In ctls
                If ctl.ControlType = acTextBox Then
                     ctl.ControlSource = Flt.Name
                End If
            Next ctl
Next Flt
rs.Close
Set rs = Nothing

如果子窗体数据源没有设置还应该加一句设置窗体数据源的语句
作者: heqing3000    时间: 2009-12-31 17:44
这样还是不行,子窗体中的所有文本来源全是最后一个字段。我再想想。

上面一个按钮就是将左边的EXCEL文件指定的范围作为查询来源的。

我就想这样比较灵活,方便检查导入的EXCEL数据与需要的数据是不是存在结构上的不对。
作者: todaynew    时间: 2009-12-31 18:30
本帖最后由 todaynew 于 2009-12-31 18:44 编辑
这样还是不行,子窗体中的所有文本来源全是最后一个字段。我再想想。

上面一个按钮就是将左边的EXCEL文件指定的范围作为查询来源的。

我就想这样比较灵活,方便检查导入的EXCEL数据与需要的数据是不是存在结构 ...
heqing3000 发表于 2009-12-31 17:44

呵呵,看了看代码,应该如此。内层循环应该取消。

试试:
Dim rs As DAO.Recordset
Dim Flt As Field
Dim ctls As Controls
Dim i As long
Set rs = CurrentDb.OpenRecordset("QryExcel导入")
set ctls=Me.子窗体.Form.Controls
i=0
For Each Flt In rs.Fields
      i=i+1
     If ctl.ControlType = acTextBox Then
             clts(i).contrsource= Flt.Name
     End If
Next Flt
rs.Close
Set rs = Nothing
作者: heqing3000    时间: 2009-12-31 18:47
本帖最后由 heqing3000 于 2009-12-31 18:48 编辑

呵呵,老样子,我改了一下子窗体数据源,这样就能发现问题了。[attach]41050[/attach]
作者: heqing3000    时间: 2009-12-31 20:30
todaynew  的方法还是不行, 我现在搞好了,上传上来分享一下。多谢论坛上的大哥大姐们。[attach]41051[/attach]
作者: todaynew    时间: 2009-12-31 20:37
todaynew  的方法还是不行, 我现在搞好了,上传上来分享一下。多谢论坛上的大哥大姐们。41051
heqing3000 发表于 2009-12-31 20:30

自己解决得来更深刻,呵呵。
作者: heqing3000    时间: 2009-12-31 20:39
特别感谢todaynew !!!
作者: asklove    时间: 2010-1-8 13:41
选择不同日期后,点生成查询就可以看到效果

flexForm窗体里面,已经有255个文本框控件(可以根据需要相应减少文本框)

Module1模块是创建flexForm窗体里的文本框控件个数

(原例:ACMAIN_CHM动态数据表窗体显示 ”)




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3