Office中国论坛/Access中国论坛

标题: 求助,如何筛选符合条件的字段名 [打印本页]

作者: dsz5142    时间: 2014-12-19 10:17
标题: 求助,如何筛选符合条件的字段名
ACCESS中如何可以筛选出字段名符合设定条件的字段
比如,我有表A,有10个字段,其中有6个字段的字段名包含Total,我如何将这6个字段选择出来,不用查询视图,谢谢
作者: roych    时间: 2014-12-19 10:54
本帖最后由 roych 于 2014-12-19 13:07 编辑

查询视图也解决不了。代码还差不多:
  1. Sub test()
  2. Dim rst As DAO.Recordset
  3. Dim i As Long
  4. Dim fn As String
  5. Set rst = CurrentDb.OpenRecordset(你的表)
  6. For i = 0 To rst.Fields.Count - 1
  7.     If rst(i).Name Like "*" & 你的条件 & "*" Then
  8.         fn = fn & ":" & rst(i).Name
  9.     End If
  10. Next
  11. Msgbox Right(fn,Len(fn) - 1)
  12. End Sub
复制代码

作者: dsz5142    时间: 2014-12-19 11:19
不好意思,SQL很弱
我将代码加入窗体按键的事件过程中,运行报错[attach]55254[/attach]


作者: dsz5142    时间: 2014-12-19 12:10
本帖最后由 roych 于 2014-12-19 13:09 编辑
roych 发表于 2014-12-19 10:54
查询视图也解决不了。代码还差不多:

不好意思,SQL很弱
我将代码加入窗体按键的事件过程中,运行报错[attach]55255[/attach]

作者: roych    时间: 2014-12-19 13:09
dsz5142 发表于 2014-12-19 12:10
不好意思,SQL很弱
我将代码加入窗体按键的事件过程中,运行报错

不好意思,写代码时输错了,麻烦把里面的点号(.)改为逗号(,)。——代码已更新。
作者: dsz5142    时间: 2014-12-19 13:41
roych 发表于 2014-12-19 13:09
不好意思,写代码时输错了,麻烦把里面的点号(.)改为逗号(,)。——代码已更新。

非常感谢,如果要将这些字段筛选出来,组成一张新表,要如何操作呢?
另外,Set rst = CurrentDb.OpenRecordset("套帐临时") 这句表名是加""吗,不加的话不成功
作者: roych    时间: 2014-12-19 13:49
dsz5142 发表于 2014-12-19 13:41
非常感谢,如果要将这些字段筛选出来,组成一张新表,要如何操作呢?
另外,Set rst = CurrentDb.OpenRe ...

创建表需要另写代码。建议你还是直接用查询视图把那几个字段抽出来建立“生成表查询”好了。
作者: dsz5142    时间: 2014-12-19 13:53
roych 发表于 2014-12-19 13:49
创建表需要另写代码。建议你还是直接用查询视图把那几个字段抽出来建立“生成表查询”好了。

不好意思,抽取出来做生成表查询?这个要怎么做,之前代码运行后得到的是一个弹窗,[attach]55256[/attach]

作者: roych    时间: 2014-12-19 14:19
这里只是列出表字段而已。而且有个问题是,如果真的要创建一个表的话,由于里面有不少特殊字符,写起来挺麻烦的。
你的表设计本身就存在问题……
作者: dsz5142    时间: 2014-12-19 14:21
roych 发表于 2014-12-19 14:19
这里只是列出表字段而已。而且有个问题是,如果真的要创建一个表的话,由于里面有不少特殊字符,写起来挺麻 ...

那我是否可以将符合条件的字段名,做到一个选择查询中?不考虑特殊符号的情况下,怎么做?
作者: roych    时间: 2014-12-19 14:38
本帖最后由 roych 于 2014-12-19 14:39 编辑
  1. Sub test()
  2. Dim rst As DAO.Recordset
  3. Dim i As Long
  4. Dim fn As String
  5. Dim qry As DAO.QueryDef

  6. On Error Resume Next
  7. Set qry = CurrentDb.CreateQueryDef("你的查询")
  8. Set rst = CurrentDb.OpenRecordset("你的表")
  9. For i = 0 To rst.Fields.Count - 1
  10.     If rst(i).Name Like "*" & "你的条件" & "*" Then
  11.         fn = fn & ",[" & rst(i).Name & "]"
  12.     End If
  13. Next
  14. qry.SQL = "select " & Right(fn, Len(fn) - 1) & " from 你的表"
  15. End Sub
复制代码

试试吧。这种事情是由于表设置本身的问题,应该从源头上解决问题,而不是靠代码来完成。而且,作为新手,建议不要膜拜代码,而是脚踏实地地从表、字段设置等等开始。代码只是正常情况下做不到时才采用的补充手段。

作者: dsz5142    时间: 2014-12-19 15:00
roych 发表于 2014-12-19 14:38
试试吧。这种事情是由于表设置本身的问题,应该从源头上解决问题,而不是靠代码来完成。而且,作为新手, ...

基础的我都没有问题,现在这个问题的原因是表的结构不受我控制,没有办法
谢谢解答




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