表DGMOCSM  字段:試模類型SM002,模號SM003,生產批次SM006
SM002      SM003     SM006      
A          a123      a123T0
A          a123      a123T1
B          a123      a123T1-1
B          a123      a123T1-2批次規則如下
當SM002='A'時從0開始,後面加1。T0 T1 T2……
當SM002='B'時以A(同SM003)的最後次數,後面-流水號。T1-1 T1-2 T2-1……strRST_SQL = "Select sm002,sm003,max(sm006) from dgmocsm where sm003='a123' and sm002='A' group by sm002,sm003 "
         Call SetRSTReadOnly(strRST_SQL)
         If rst.RecordCount > 0 Then
當SM002='A',SM003='a123',新增第三筆,結果是:a123T2
            Text1(5).Text =  該怎么寫?
         Else
            Text1(5).Text = Trim(Text1(2).Text) & "T0"
         End If
當SM002='A',SM003='a123'時候  
 
strRST_SQL = "Select sm002,sm003,max(sm006) from dgmocsm where sm003='a123' and sm002='A' group by sm002,sm003 "
         Call SetRSTReadOnly(strRST_SQL)
         If rst.RecordCount > 0 Then
當SM002='B',SM003='a123',新增第三筆,結果是:a123T1-3
            Text1(5).Text =注意規則是:當SM002='B'時以A(同SM003)的最後次數,後面-流水號。T1-1 T1-2 T2-1...
         End If請教下該怎么寫?如有不清楚的地方請指出我補充!

解决方案 »

  1.   

    Text1(5).Text =val(mid(rst.fields(2).value,6))+1
    Text1(5).Text =val(mid(rst.fields(2).value,8))+1
      

  2.   

    不行的!  第一段需要判斷新增的是否為第一筆,如果是則sm002後面+T0
    如果不是則在max(sm006)最後以為自動+1第二段新增先判斷SM002=A' SM003='a123'時 已經存在一筆或者多筆,
    就獲取最後一個批次max(sm006),然後在判斷當SM1002='B SM003='a123'
    是否已經存在一筆或者多筆,如果是就在max(sm006)後面+1
    如果不存在則批次為SM002=A' SM003='a123'時候max(sm006)後面加-1
      

  3.   

    strRST_SQL = "Select sm002,sm003,max(sm006) from dgmocsm where sm003='a123' and sm002='A' group by sm002,sm003 "
    Call SetRSTReadOnly(strRST_SQL)
    If rst.RecordCount > 0 Then
        Text1(5).Text = rst.fields("sm003").Value & "T" & CStr(Val(Mid(rst.fields(2).Value, 6)) + 1)
    Else
        Text1(5).Text = Trim(Text1(2).Text) & "T0"
    End If'--------------------------strRST_SQL = "Select sm002,sm003,max(sm006) from dgmocsm where sm003='a123' and sm002='A' group by sm002,sm003 "
    Call SetRSTReadOnly(strRST_SQL)
    If rstA.RecordCount > 0 Then
        
        strRST_SQL = "Select sm002,sm003,max(sm006) from dgmocsm where sm003='a123' and sm002='B' group by sm002,sm003 "
        Call SetRSTReadOnly(strRST_SQL)
        If rstB.RecordCount > 0 Then
            Text1(5).Text = rstA.fields(2).Value & "+" & CStr(Val(Mid(rstB.fields(2).Value, 8)) + 1)
        Else
            Text1(5).Text = rstA.fields(2).Value & "-" & CStr(Val(Mid(rstB.fields(2).Value, 8)) + 1)
        End If
    End If
      

  4.   

    還有一點問題!就是CStr(Val(Mid(rst.fields(2).Value, 6)) + 1)
    你是直接指定的位數,但是實際上數據是不確定的,我用的是:
    Text1(5).Text = rst.Fields(1).Value & "T" & CStr(Val(Right(rst.Fields(2).Value, Len(rst.Fields(2).Value) - Len(rst.Fields(1).Value))) + 1)
    參照你的思路,寫出來好像沒錯!
    謝謝了!分送給你了