首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环记录存取

循环记录存取
EN

Stack Overflow用户
提问于 2015-05-19 20:54:18
回答 1查看 41关注 0票数 0

我有五站

我原表行程中有三列,我想根据逻辑对方向进行编码。

如果我的车从A到E,或者在那个方向(B,the )的任何一站,方向是南边。

如果我的车从E到A,或在那个方向(E-C,D-A)的任何一站,方向是北。

代码语言:javascript
复制
Trip    CarID   Stops
1      1000      A      
1      1000      B     
1      1000      C     
2      1001      C     
2      1001      D     
2      1001      E     
3      1002      D     
3      1002      C      
3      1002      B      

我希望得到以下结果:

代码语言:javascript
复制
Trip    CarID   Stops   Direction
1      1000      A      South
1      1000      B      South
1      1000      C      South
2      1001      C      South
2      1001      D      South
2      1001      E      South
3      1002      D      North
3      1002      C      North
3      1002      B      North

有人知道如何在access、vba或query中对其进行编码吗?真正的桌子有超过5站。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 09:12:08

我想这会给你一些想法

代码语言:javascript
复制
 Private Sub Command0_Click()
 On Error Resume Next
 Dim rst As DAO.Recordset
 Dim PreviousStop As String
 Dim Direction As String
 Dim PreviousDirection As String
 Dim rstCounter As Integer
 Dim currentCar As String
 Set rst = CurrentDb.OpenRecordset("Trip")
 With rst
    rstCounter = rst.RecordCount
    .MoveFirst
    Do Until .EOF
        If rstCounter = 1 Then
            Direction = calculatedDirection(PreviousStop, .Fields("Stops"))
            .Edit
            .Fields("Direction") = Direction
            .Update
            Exit Do
        Else
            PreviousStop = .Fields("Stops")
            currentCar = .Fields("CarID")
            .MoveNext
            If currentCar <> .Fields("CarID") Then
                PreviousDirection = ""
            Else
                If Len(PreviousDirection) > 0 Then
                    Direction = PreviousDirection
                Else
                    Direction = calculatedDirection(PreviousStop,     .Fields("Stops"))
                    PreviousDirection = Direction
                End If
            End If
            .MovePrevious
            If Len(Direction) > 0 Then
                .Edit
                .Fields("Direction") = Direction
                .Update
            End If
            .MoveNext
        End If
        rstCounter = rstCounter - 1
      Loop
  End With
End Sub  

Private Function calculatedDirection(PreviousStop As String, CurrentStop As String) As String
If PreviousStop > CurrentStop Then
            calculatedDirection = "North"
        Else
            calculatedDirection = "South"
        End If
End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30335956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档