Office中国论坛/Access中国论坛

标题: Access可不可以做到? [打印本页]

作者: jeeren    时间: 2009-5-6 13:29
标题: Access可不可以做到?
access

从文件1:
35475453876546354
89645634565487654
78965346784564559
2222
53278547687564657
75698245825468546
37546874598654962
5555
78932459354686547
45687654983543542
78545687549549862
1111
45873246345645657
45686547895354985
74598354584589353
7777

导到到表1后自动排序成:
1111
2222
35475453876546354
37546874598654962
45686547895354985
45687654983543542
45873246345645657
53278547687564657
5555
74598354584589353
75698245825468546
7777
78545687549549862
78932459354686547
78965346784564559
89645634565487654

然后再从文件2:
5555
2222
7777
1111

导入数据生成一张新表:
45873246345645657    7777
53278547687564657    5555
74598354584589353    7777
75698245825468546    5555
78545687549549862    1111
78932459354686547    1111
78965346784564559    2222
89645634565487654    2222

请问这个怎么实现啊,对应关系没有别的表和视图
作者: todaynew    时间: 2009-5-6 13:43
新表的两列之间的关系不清晰。如果没有什么规律可言的话,直接拷贝粘贴就可以了。如果有规律的话,可以在查询中用两个IIF将一列数据分成两列,然后生成表即可。
作者: jeeren    时间: 2009-5-6 13:54
想了N久,看不出一点名堂。
是再生成一张表吗?我也想过,可不知道怎么做。
作者: todaynew    时间: 2009-5-6 14:02
本帖最后由 todaynew 于 2009-5-6 14:04 编辑

问题的关键不在于生成表,而在于两列数据之间的关系是否有规律。比如说1111、2222、3333等分别对应的是首数字是1、2、3的长数据,这是一种规律。你现在给出的排列看不出规律来。呵呵

如果这是一道试题的话,多半不是考怎么做查询。而是考最后一张表的数据规律分析和归纳。
作者: ACMAIN_CHM    时间: 2009-5-6 22:44
很久不见todaynew了。还在继续猜问题。 强。
作者: jeeren    时间: 2009-5-7 15:00
是,没有规律。
我是在一个程序里生成的这样一系列数据,我就想弄明白作者他是用什么方式做到这一点的。
作者: jeeren    时间: 2009-5-7 15:04
在导入文本2时有一个比例1:3,就是文本1里的3长1短对应的数据。可就是看不出这表2的记录是怎么形成的。
作者: jeeren    时间: 2009-5-8 17:37
无人知晓吗?都看看,都想想,帮小弟出出招,妖术也行。
作者: jeeren    时间: 2009-5-8 17:39
如果坛友看不太明白的话,那我要不再贴一次我要表述的意思???
作者: jeeren    时间: 2009-5-8 17:40
文本1内容:

35475453876546354
89645634565487654
78965346784564559
2222
53278547687564657
75698245825468546
37546874598654962
5555
78932459354686547
45687654983543542
78545687549549862
1111
45873246345645657
45686547895354985
74598354584589353
7777


==>


文本2内容:

5555
2222
7777
1111


==>


表1:

ID
1111
2222
35475453876546354
37546874598654962
45686547895354985
45687654983543542
45873246345645657
53278547687564657
5555
74598354584589353
75698245825468546
7777
78545687549549862
78932459354686547
78965346784564559
89645634565487654


==>


表2:

glm                                        tm                        rq
35475453876546354           2222                        2009-4-29 22:22:04
37546874598654962           5555                        2009-4-29 22:22:04
45686547895354985           7777                        2009-4-29 22:22:04
45687654983543542           1111                        2009-4-29 22:22:04
45873246345645657           7777                        2009-4-29 22:22:04
53278547687564657           5555                        2009-4-29 22:22:04
74598354584589353           7777                        2009-4-29 22:22:04
75698245825468546           5555                        2009-4-29 22:22:04
78545687549549862           1111                        2009-4-29 22:22:04
78932459354686547           1111                        2009-4-29 22:22:04
78965346784564559           2222                        2009-4-29 22:22:04
89645634565487654           2222                        2009-4-29 22:22:04


数据演变过程:

文本1内容写入到数据表1并自动排序  <表1>

导入文本2时结合数据表1生成数据表2写入内容并自动排序  <表2>

***数据库为Access2003***
作者: todaynew    时间: 2009-5-9 11:28
本帖最后由 todaynew 于 2009-5-9 13:58 编辑
很久不见todaynew了。还在继续猜问题。 强。
ACMAIN_CHM 发表于 2009-5-6 22:44

呵呵,没办法,还是帮他分析了一下。规律是按4位数分组,分组规律为长数据至向下遇到的第一个短数据为一组。由此查询就很好写了:
SELECT 表1.数据 AS glm, IIf(Len([数据])=4,[数据],DFirst("数据","表1","ID>" & 表1.ID & " and len(数据)=4")) AS tm
FROM 表1
WHERE (((Len([表1].[数据]))>4))
ORDER BY 表1.数据;

[attach]37924[/attach]

[attach]37925[/attach]


[attach]37923[/attach]
作者: todaynew    时间: 2009-5-9 11:40
是,没有规律。
我是在一个程序里生成的这样一系列数据,我就想弄明白作者他是用什么方式做到这一点的。
jeeren 发表于 2009-5-7 15:00

实际上是有规律的,只是你没看出规律,或者不知道怎么表述而已。
作者: jeeren    时间: 2009-5-12 12:31
言之有理。
作者: jeeren    时间: 2009-5-12 12:38
兄弟索性送佛送到西,我把那个程序呈上来你给看一下,看不能不能找出点破绽来。
作者: guankee    时间: 2009-5-12 16:18
应该是表1中的三长属于后面紧接着的那一短那一类的
作者: todaynew    时间: 2009-5-13 11:16
本帖最后由 todaynew 于 2009-5-13 17:29 编辑

DataSource不是原始表,而是排序后的结果。因此这张表与结果表之间已经看不出规律来了。
实际上分析时不用DataSource表,而是直接看原始表和结果表就可以了,原始表到结果表的算法过程可以分为激流三部曲---分组---排序---筛选:

1、原始数据
数据
35475453876546354
89645634565487654
78965346784564559
2222
53278547687564657
75698245825468546
37546874598654962
5555
78932459354686547
45687654983543542
78545687549549862
1111
45873246345645657
45686547895354985
74598354584589353
7777
2、分组
数据分组
354754538765463542222
896456345654876542222
789653467845645592222
22222222
532785476875646575555
756982458254685465555
375468745986549625555
55555555
789324593546865471111
456876549835435421111
785456875495498621111
11111111
458732463456456577777
456865478953549857777
745983545845893537777
77777777
3、排序
数据分组
11111111
22222222
354754538765463542222
375468745986549625555
456865478953549857777
456876549835435421111
458732463456456577777
532785476875646575555
55555555
745983545845893537777
756982458254685465555
77777777
785456875495498621111
789324593546865471111
789653467845645592222
896456345654876542222
4、筛选
数据分组
354754538765463542222
375468745986549625555
456865478953549857777
456876549835435421111
458732463456456577777
532785476875646575555
745983545845893537777
756982458254685465555
785456875495498621111
789324593546865471111
789653467845645592222
896456345654876542222

作者: jeeren    时间: 2009-5-15 09:46
原来是这个一个过程啊,真是太谢谢了。

兄弟,你真牛。
作者: jeeren    时间: 2009-5-15 09:53
那要是这样的话,是不是在导入数据时生成一张临时表,然后再进行分组排序和筛选,写出另一张新表,最后删除那张临时表?

不知这样可行否
作者: todaynew    时间: 2009-5-15 11:53
那要是这样的话,是不是在导入数据时生成一张临时表,然后再进行分组排序和筛选,写出另一张新表,最后删除那张临时表?

不知这样可行否
jeeren 发表于 2009-5-15 09:53

具体实现的方法多种多样,可以在Excel表中加工后导入Access,也可在Access中直接加工,在Access中又可以分为用子查询实现、用dfirst函数实现,还可用记录集实现。所以实现的手段和方法全然都不重要,重要的只是明白原始表与结果表之间的关系,仅此而已。
作者: jeeren    时间: 2009-5-15 14:29
看来还得再去学学数据库基础。




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