| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1232 人关注过本帖
标题:在VB里面如何对数据进行比较,并给出比较结果
取消只看楼主 加入收藏
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
结帖率:75%
收藏
 问题点数:0 回复次数:14 
在VB里面如何对数据进行比较,并给出比较结果
需要对数据库里面的数据进行比较并给出比较结果,数据库里面的数据是这样的:
文件号 排号 架号 层号 道号
1          P     017    B     09
1          P     017    B     10
1          P     018    B     02
1          P     018   B     03
需要对同一文件号所对应的数据进行比较,排号架号层号道号之间的规律是这样的:一排有40个架,一架有ABC三层,一层有10个道。如果连续就用-连接,如果不连续就用/连接。研究了好长时间,没个好的办法,请教高手指点。
排号架号层号相同道号相邻表示连续,比如P017B09和P017B10,比较结果为P017B09_10;
排号架号相同层号不同,比如P017B10和P017C01也表示连续,比较结果为P017B10_C01;
除此之外表示不连续,不连续的表示方法是:
比如P017B07和P017B10,比较结果应为:P017B07/10
比如P017B07和P017C01,比较结果应为:P017B07/C01
比如P017B07和P018B10,比较结果应为:P017B07/P018B10
搜索更多相关主题的帖子: 数据库 如何 
2014-12-26 14:28
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
急!!!!!!!!!
2014-12-26 14:48
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
线架导线索引表.rar (153.86 KB)

这是excel数据库,里面有比较方法,你看一下,如果可以的话请联系我45262121,在此深表感谢
2014-12-30 11:14
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
回复 5楼 lianyicq
你能否说的详细些,最好有代码。我也写了程序进行两两比较,但是结果还是不全对,要不我把代码贴上来你给我看看??
2014-12-30 15:20
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
rs.Open "select * from Wirerack where 文件号='" & Trim(Text1(0).text) & "' order by 排号,架号,层号,道号", cnn, adOpenKeyset, adLockOptimistic
   If rs.RecordCount > 0 Then
      If rs.RecordCount = 1 Then '一条记录直接读
         rs.MoveFirst
         a = rs.Fields("排号")
         b = rs.Fields("架号")
         c = rs.Fields("层号")
         d = rs.Fields("道号")
         Text1(5).text = a & b & c & d
      End If
      If rs.RecordCount = 2 Then '两条记录直接比
         rs.MoveFirst
         a = rs.Fields("排号")
         b = rs.Fields("架号")
         c = rs.Fields("层号")
         d = rs.Fields("道号")
         Text1(5).text = a & b & c & d
         rs.MoveNext
         a1 = rs.Fields("排号")
         b1 = rs.Fields("架号")
         c1 = rs.Fields("层号")
         d1 = rs.Fields("道号")
         If (a = a1) And (b = b1) And (c = c1) And (d <> d1) Then '仅道号不一样
            If Val(d1 - d) = 1 Then
               Text1(5) = Text1(5) & "_" & d1
            Else
               Text1(5).text = Text1(5) & "/" & c1 & d1
            End If
         ElseIf (a = a1) And (b = b1) And (c <> c1) Then '层号不一样
            If Asc(c1) - Asc(c) = 1 And Val(d - d1) = 9 Then
               Text1(5).text = Text1(5) & "_" & c1 & d1
            Else
               Text1(5).text = Text1(5) & "/" & c1 & d1
            End If
         ElseIf (b <> b1) Then '架号不一样
            Text1(5).text = Text1(5) & "/" & a1 & b1 & c1 & d1
         End If
      End If
      If rs.RecordCount > 2 Then '三条以上记录,第一条与第二条比较的结果在于第二条与第三条记录比较的结果比较
         For i = 0 To rs.RecordCount - 2
            a = rs.Fields("排号")
            b = rs.Fields("架号")
            c = rs.Fields("层号")
            d = rs.Fields("道号")
            rs.MoveNext
            a1 = rs.Fields("排号")
            b1 = rs.Fields("架号")
            c1 = rs.Fields("层号")
            d1 = rs.Fields("道号")
            If (a = a1) And (b = b1) And (c = c1) And (d <> d1) Then '仅道号不一样
                If Val(d1 - d) = 1 Then
                   If i = 0 Then
                      Text1(5) = a & b & c & d & "_" & d1
                   Else
                      Text1(5) = left(Text1(5), Len(Text1(5)) - 3) & "_" & d1
                   End If
                Else
                   If i = 0 Then
                      Text1(5).text = a & b & c & d & "/" & c1 & d1
                   Else
                      Text1(5).text = Text1(5).text & "/" & c1 & d1
                   End If
                End If
            ElseIf (a = a1) And (b = b1) And (c <> c1) Then '层号不一样
               If Asc(c1) - Asc(c) = 1 And Val(d - d1) = 9 Then
                   If i = 0 Then
                      Text1(5).text = a & b & c & d & "_" & c1 & d1
                   Else
                      Text1(5).text = Text1(5) & "_" & c1 & d1
                   End If
               Else
                  If i = 0 Then
                     Text1(5).text = a & b & c & d & "/" & c1 & d1
                  Else
                     Text1(5).text = Text1(5).text & "/" & c1 & d1
                  End If
               End If
            ElseIf (b <> b1) Then '架号不一样
               If i = 0 Then
                  Text1(5).text = a & b & c & d & "/" & a1 & b1 & c1 & d1
               Else
                  Text1(5).text = Text1(5).text & "/" & a1 & b1 & c1 & d1
               End If
            End If
         Next i
       End If
    Else
       Text1(5).text = ""
       MsgBox "在导线缓冲架中没发现此文件相关数据,请核查数据!", , "提示"
    End If
    rs.Close
2014-12-30 15:29
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
多于两个的就不好比较了,道号的数据是数值,可以直接Val(d1 - d) = 1这样比较,层号的数据是字符,只能这样比Asc(c1) - Asc(c) = 1。
你能否给一个自定义的比较函数?
2014-12-30 16:14
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
call compare()调用该函数时,括号里面该怎么写?
2014-12-30 16:55
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
你是对一个文件的6条记录进行了几比较,得出5个结果,这5个结果还要进行比较啊,最后只能得出一个结果,对结果的比较是关键
2014-12-30 17:09
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
关键是对每次比较结果的比较,这是我的难点
2014-12-31 09:45
beijiquan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-12-25
收藏
得分:0 
文件号           排号    架号  层号    道号      比较结果
C-02-03500    P    017    B    09   
C-02-03500    P    017    B    10   
C-02-03500    P    018    B    02    P017B09-10/P018B02-04
C-02-03500    P    018    B    03   
C-02-03500    P    018    B    04   
                    
C-03-05300    A    042    C    08   
C-03-05300    A    042    C    09   
C-03-05300    A    042    C    10    A042C08-10/A043A01
C-03-05300    A    043    A    01   
                    
C-05-00200    P    016    B    10    P016B10/P017A01
C-05-00200    P    017    A    01   
                    
C-07-00300    A    014    C    04    A014C04-05/A016A01-02
C-07-00300    A    014    C    05   
C-07-00300    A    016    A    01   
C-07-00300    A    016    A    02   
                    
C-07-02600A    A    018    A    10    A018A10/A019B07
C-07-02600A    A    019    B    07   
这是客户要求达到的比较结果,你看一下
2014-12-31 09:59
快速回复:在VB里面如何对数据进行比较,并给出比较结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040196 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved