设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1830|回复: 7
打印 上一主题 下一主题

[ADO/DAO] 数据拆分提取,难度有点大请大家帮忙

[复制链接]
跳转到指定楼层
1#
发表于 2021-8-2 19:27:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 GOODWIN 于 2021-8-3 07:50 编辑

整理前数据:
MV站别
料号
规格
用量
零件位置
零件类型
料架类型
S
Z-01
0341-012-306
1/10W  10ohm F 0603
3
R816,R861,R897
    <0341012315(1/10W 10ohm F 0603)>
    <0341012332(1/11W 10ohm F 0603)>
    <0341012333(1/12W 10ohm F 0603)>
    <0341012334(1/13W 10ohm F 0603)>
    <0341012335(1/14W 10ohm F 0603)>
1608R
8*4P

Z-04
0341-041-306
1/10W  1Kohm F 0603
11
R638,R742,R746,R785
    <0341041332(1/10W 11Kohm F 0603)>
    <0341041333(1/10W 1Kohm F 0603)
1608R
8*4P

Z-85
2610-049-742
M24C02-WMN6TP
1
IC603<2610-049-755(M24C02-WMN8TP)>
SOIC-8P
12*8E

Z-86
2610-894-137
PIC18F26K22T-I/SS
1
IC803
SOIC-28P
16*12E

Z-87
2610-756-437
DSPIC33FJ64GS606T-I/PT
1
IC703
QFP-64P
24*16E

整理后数据:
料号
规格
用量
零件位置
S
0341-012-306
1/10W  10ohm F 0603
3
R816,R861,R897

0341012315
1/10W  10ohm F 0603
3
R816,R861,R897
S
0341012332
1/10W  11ohm F 0603
3
R816,R861,R897
S
0341012333
1/10W  12ohm F 0603
3
R816,R861,R897
S
0341012334
1/10W  13ohm F 0603
3
R816,R861,R897
S
0341012335
1/10W  14ohm F 0603
3
R816,R861,R897
S
0341-041-306
1/10W  1Kohm F 0603
11
R638,R742,R746,R785

0341041332
1/10W  11Kohm F 0603)
11
R638,R742,R746,R785
S
0341041333
1/10W  1Kohm F 0603
11
R638,R742,R746,R785
S
2610-049-742
M24C02-WMN6TP
1
IC603

2610-049-755
M24C02-WMN8TP
1
IC603
S
2610-894-137
PIC18F26K22T-I/SS
1
IC803

2610-756-437
DSPIC33FJ64GS606T-I/PT
1
IC703

需要将替代的物料与原物料一起提取出来显示,并对提取的物料在S列进行标注S,表示该物料为替代料

位置说明R816,R861,R897
<0341012315(1/10W 10ohm F 0603)>
<0341012332(1/11W 10ohm F 0603)>
<0341012333(1/12W 10ohm F 0603)>
<0341012334(1/13W 10ohm F 0603)>
<0341012335(1/14W 10ohm F 0603)>
表示0341-012-306有5个替代物料,红色代表第一个替代料,蓝色代表第一替代料的规格,依照<()>来区分一共有几个,对替代物料进行分解显示,并在分解后的替代物料S栏用S表示己分解的替代料

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2021-8-2 19:29:20 | 只看该作者

    Dim strsql1 As String
    strsql1 = "SELECT Mid([零件位置],InStr([零件位置],'<')+1,(InStr([零件位置],'(')-1)-(InStr([零件位置],'<'))) " _
    & "AS 料号, Mid([零件位置],InStr([零件位置],'(')+1,(InStr([零件位置],')')-1)-(InStr([零件位置],'('))) " _
    & "AS 规格, 整理前.用量, Mid([零件位置],1,InStr([零件位置],'<')-2) " _
    & "AS 整理后零件位置 INTO 整理后 " _
    & "FROM 整理前 " _
    & "WHERE (((InStr([零件位置],'<'))>0))"
    DoCmd.RunSQL strsql1
这样执行只能处理一个<()>内的数据,当有多个时就只能保留第一个

麻烦各位老师帮忙解决,谢谢
3#
 楼主| 发表于 2021-8-3 07:49:42 | 只看该作者
Sub test()
    Dim i%, j%, k%, arr, arr1
    arr = Sheet1.[a1].CurrentRegion
    j = 2
    For i = 2 To UBound(arr)
        With Sheets(2)
            Sheets(1).Activate
            Range(Cells(i, 2), Cells(i, 4)).Copy .Cells(j, 1)
            If InStr(arr(i, 5), "<") Then
                arr1 = Split(arr(i, 5), "<")
                .Cells(j, 4) = arr1(0): j = j + 1

                For k = 1 To UBound(arr1)
                    .Cells(j, 1) = Split(arr1(k), "(")(0)
                    .Cells(j, 2) = Split(Replace(arr1(k), ")", "("), "(")(1)
                    .Range(.Cells(j - 1, 3), .Cells(j - 1, 4)).Copy .Cells(j, 3)
                    j = j + 1
                    
                    Next
            Else
               Sheet1.Cells(i, 5).Copy .Cells(j, 4)
               j = j + 1
            End If
        End With
    Next
End Sub

这个怎么样改成ACCESS的代码?
4#
发表于 2021-8-3 10:51:16 | 只看该作者
看不懂
回复

使用道具 举报

点击这里给我发消息

5#
发表于 2021-8-12 14:00:43 | 只看该作者
给你一个例子,供参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
 楼主| 发表于 2021-8-12 16:40:45 | 只看该作者
accessir 发表于 2021-8-12 14:00
给你一个例子,供参考。

谢谢大神的指导,己完美解决!感谢
7#
发表于 2021-8-13 21:57:27 | 只看该作者
学习
回复

使用道具 举报

8#
发表于 2021-9-8 07:58:32 | 只看该作者
收到
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 21:53 , Processed in 0.093105 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表