For i = 1 To ListView2.ListItems.Count        If ListView2.ListItems(i).Selected = True Then
        
            If ListView2.ListItems(i).Text = "1" Then
            
               MsgBox "This Item has been ordered"
               Exit Sub
            Else
               Set oRs = New ADODB.Recordset
               
               STx = "Select B.price,B.MenuID,B.ItemID from TableBookTrans A inner join TableBookDetail B on A.MenuID=B.MenuID Where A.Manualkey='" & mcID.Text & "' and B.Barcode='" & Sk & "'"
            
               Set oRs = oCmn.ExecRS(STx, DCN)
               
               Sm = CCur(Sm + oRs.Fields("Price"))
               
               St = oRs.Fields("MenuID")
               
               Sg = oRs.Fields("ItemID")
               
            End If
            
        End If
    Next问题:我如何临时存储ListView2.ListItems(i).Selected = True时的数据st与sg? 我class modules中要处理这些数据。
需要建一个临时表存储吗?

解决方案 »

  1.   

    我是从2个表中选择我要的数据ListView2.ListItems(i).Selected = True。进行处理
      

  2.   

     With rst快速显示纪录集
        .Source = str数据源
        .ActiveConnection = cn连接
        .CursorType = 前向光标
        .LockType = 读锁定
        .Open
       .Save App.Path & str缓冲目录 & "\" & str缓冲文件名 & ".rst"End With
    关闭纪录集 rst快速显示纪录集
    基本汉语,应该能看明白吧?
      

  3.   

    放到 ListView2.ListItems(i).Tag 里不就可以了
      

  4.   

    存在数组里吧
    Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
    Dim ArrTmp() As Integer
    '……
    '……
    '……
    st = oRs.Fields("MenuID")
    If SafeArrayGetDim(ArrTmp) > 0 Then
        ReDim Preserve ArrTmp(UBound(ArrTmp) + 1)
    Else
        ReDim ArrTmp(0)
    End If
    ArrTmp(UBound(ArrTmp)) = st
      

  5.   

    在class modules中调用的时候可以这样吗? Transfer Sf, DCN, Sm,ArrTmp(UBound(ArrTmp)),ATp(UBound(ATp)),取出来的时候能一一对应吗?
      

  6.   


       For i = 1 To ListView2.ListItems.Count
          If ListView2.ListItems(i).Selected = True Then
             If ListView2.ListItems(i).Text = "1" Then
                MsgBox "This Item has been ordered"
                Exit Sub
             Else
                Set oRs = New ADODB.Recordset
                STx = "Select B.price,B.MenuID,B.ItemID from TableBookTrans A " & _
                       "inner join TableBookDetail B on A.MenuID=B.MenuID Where A.Manualkey='" & _
                       mcID.Text & "' and B.Barcode='" & Sk & "'"
                Set oRs = oCmn.ExecRS(STx, DCN)
                Sm = CCur(Sm + oRs.Fields("Price"))
                St = oRs.Fields("MenuID")
                Sg = oRs.Fields("ItemID")
                '注意这里可以这样保存
                ListView2.ListItems(i).Tag = Sm & "|" & St & "|" & Sg
             End If
          End If
       Next
       '这里是把全部的读出来
       Dim StrArray() As String
       For i = 1 To ListView2.ListItems.Count
          If ListView2.ListItems(i).Selected = True Then
             If ListView2.ListItems(i).Text <> "1" Then
                MsgBox "This Item has been ordered"
                StrArray = Split(ListView2.ListItems(i).Tag, "|")
                Sm = CCur(StrArray(0))
                St = StrArray(1)
                Sg = StrArray(2)
                MsgBox "Sm:" & Sm & "  St:" & St & "  Sg:" & Sg
             End If
          End If
       Next
      

  7.   

       Dim StrArray() As String
       For i = 1 To ListView2.ListItems.Count
          If ListView2.ListItems(i).Selected = True Then
             If ListView2.ListItems(i).Text <> "1" Then
                MsgBox "This Item has been ordered"
                StrArray = Split(ListView2.ListItems(i).Tag, "|")
                Sm = CCur(StrArray(0))
                St = StrArray(1)
                Sg = StrArray(2)
                MsgBox "Sm:" & Sm & "  St:" & St & "  Sg:" & Sg
             End If
          End If
       Next我要把存储的数据传送到别的模块去,我要在别的模块对这些存储数据进行加工。
    Transfer Sf, DCN, Sm,ArrTmp(UBound(ArrTmp)),ATp(UBound(ATp)),
      

  8.   

    主要看你想对应什么?
    如果要跟ListView2的次序对应,那么不用上面那么麻烦,直接可以这样
    ReDim ArrTmp(ListView2.ListItems.Count -1)
    ArrTmp(i)=St 
      

  9.   

    我想你是想与这个Sm对应,
    那可以定义3个数组分别存放sm,st,sg 
    Transfer 是个函数名吧?sf,dcn我不知道你表示的是什么,如果是固定的
    for i=0 to ubound(arrtmp)
         Transfer Sf, DCN, ArrTmp1(i),ArrTmp2(i),ArrTmp3(i)
    next
    这样能看明白吧
      

  10.   

    推荐采用8楼的方法,存在Tag中
      

  11.   

    如果在不退出程序使用,不用存储到数据库或文件,如果该窗体不退出可以存到tag中,这样方便对应,
    也可以定义全局变量存储