我现在SPREAD中,使用COMBOBOX进行数据显示,结果总是得不出我要的数据(数据要相应向下移动一条记录,比如应该显示第二条记录的地方显示的第天务记录),而且有时还赋不上值,请高手指教!在此先谢了!

解决方案 »

  1.   

    错误订正;
         我现在SPREAD中,使用COMBOBOX进行数据显示,结果总是得不出我要的数据(数据要相应向下移动一条记录,比如应该显示第二条记录的地方显示的第三条记录),而且有时还赋不上值,请高手指教!在此先谢了!  
      

  2.   

    错误订正;
         我现在SPREAD中,使用COMBOBOX进行数据显示,结果总是得不出我要的数据(数据要相应向下移动一条记录,比如应该显示第二条记录的地方显示的第三条记录),而且有时还赋不上值,请高手指教!在此先谢了!  
      

  3.   

    Public Sub DisPlayDate()
        Dim ADORst As ADODB.Recordset
        Dim ADORst1 As ADODB.Recordset
        Dim ADORst2 As ADODB.Recordset
        Dim ADORst3 As ADODB.Recordset
        Dim strSQL As String
        Dim strSQL1 As String
        Dim Nrow As Integer    On Error GoTo error_Processing        strSQL = ""
            strSQL = strSQL & "SELECT                               " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Assetssubjectcode,    " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Assetssubjectname,    " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Assetsdivisioncode,    " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Redemptioncode,    " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.AccountItemCode    " & vbCrLf
            strSQL = strSQL & "FROM                                 " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject               " & vbCrLf
            strSQL = strSQL & "ORDER BY                             " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Assetssubjectcode,               " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Assetssubjectname,               " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Assetsdivisioncode,               " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.Redemptioncode,               " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject.AccountItemCode               " & vbCrLf
            Set ADORst = Connection.OpenSQL(strSQL, adOpenKeyset, adLockOptimistic)
            Nrow = 0
            ADORst.MoveFirst
            Do Until ADORst.EOF
                Nrow = Nrow + 1
                With sprAssetsitemsMaster
                    .Row = Nrow
                    .Col = 1
                    .Value = ADORst.Fields(0)
                    .Col = 2
                    .Value = ADORst.Fields(1)
                    .Col = 3
                    .Value = ADORst.Fields(2)
                    Dim Adc As Integer
                    Adc = .Value
                    .Col = 4
                    strSQL1 = ""
                    strSQL1 = strSQL1 & "SELECT           Assetsdivision " & vbCrLf
                    strSQL1 = strSQL1 & "FROM                                 " & vbCrLf
                    strSQL1 = strSQL1 & "           T_M_Assetsdivision                " & vbCrLf
                    strSQL1 = strSQL1 & "WHERE                                 " & vbCrLf
                    strSQL1 = strSQL1 & "        Assetsdivisioncode=" & CStr(Adc) & vbCrLf
                    Set ADORst1 = Connection.OpenSQL(strSQL1, adOpenKeyset, adLockOptimistic)
                    .Value = CStr(ADORst1.Fields(0))
                    Call CloseRecordset(ADORst1)
                    .Col = 5
                    ADORst.MovePrevious
                    .Value = ADORst.Fields(3)
                    Dim RC As Integer
                    RC = .Value
                    .Col = 6
                    strSQL1 = ""
                    strSQL1 = strSQL1 & "SELECT           Redemptionname " & vbCrLf
                    strSQL1 = strSQL1 & "FROM                                 " & vbCrLf
                    strSQL1 = strSQL1 & "           T_M_Redemption                " & vbCrLf
                    strSQL1 = strSQL1 & "WHERE                                 " & vbCrLf
                    strSQL1 = strSQL1 & "        Redemptioncode=" & CStr(RC) & vbCrLf
                    Set ADORst2 = Connection.OpenSQL(strSQL1, adOpenKeyset, adLockOptimistic)
                    .Value = CStr(ADORst2.Fields(0))
                    Call CloseRecordset(ADORst2)
                    
                    
                    .Col = 7
                    .Value = ADORst.Fields(4)
                    Dim AIN As Integer
                    AIN = .Value
                    .Col = 8
                    strSQL1 = ""
                    strSQL1 = strSQL1 & "SELECT           AccountItemName " & vbCrLf
                    strSQL1 = strSQL1 & "FROM                                 " & vbCrLf
                    strSQL1 = strSQL1 & "           T_M_AccountItem                " & vbCrLf
                    strSQL1 = strSQL1 & "WHERE                                 " & vbCrLf
                    strSQL1 = strSQL1 & "        AccountItemCode=" & CStr(AIN) & vbCrLf
                    Set ADORst3 = Connection1.OpenSQL(strSQL1, adOpenKeyset, adLockOptimistic)
                    .Value = CStr(ADORst3.Fields(0))
                     Call CloseRecordset(ADORst3)
                    .MaxRows = Nrow + 1
                End With
                If ADORst.EOF = False Then
                    ADORst.MoveNext
                   
                End If
           Loop
    end sub
    这是我的代码,ADORST里面的值是正确的,可是赋值之后就不对了
      

  4.   

    Public Sub DisPlayDate()
        Dim ADORst As ADODB.Recordset
        Dim ADORst1 As ADODB.Recordset
        Dim ADORst2 As ADODB.Recordset
        Dim ADORst3 As ADODB.Recordset
        Dim strSQL As String
        Dim strSQL1 As String
        Dim Nrow As Integer   
            strSQL = ""
            strSQL = strSQL & "SELECT                               " & vbCrLf
            strSQL = strSQL & "       dbo.T_M_Assetssubject.Assetssubjectcode,     " & vbCrLf
            strSQL = strSQL & "       dbo.T_M_Assetssubject.Assetssubjectname,     " & vbCrLf
            strSQL = strSQL & "       dbo.T_M_Assetssubject.Assetsdivisioncode,    " & vbCrLf
            strSQL = strSQL & "       dbo.T_M_Assetssubject.Redemptioncode,        " & vbCrLf
            strSQL = strSQL & "       dbo.T_M_Assetssubject.AccountItemCode        " & vbCrLf
            strSQL = strSQL & "FROM                                                " & vbCrLf
            strSQL = strSQL & "           dbo.T_M_Assetssubject                    " & vbCrLf
            strSQL = strSQL & "ORDER BY                                            " & vbCrLf
            strSQL = strSQL & "  dbo.T_M_Assetssubject.Assetssubjectcode,          " & vbCrLf
            strSQL = strSQL & "  dbo.T_M_Assetssubject.Assetssubjectname,          " & vbCrLf
            strSQL = strSQL & "  dbo.T_M_Assetssubject.Assetsdivisioncode,         " & vbCrLf
            strSQL = strSQL & "  dbo.T_M_Assetssubject.Redemptioncode,             " & vbCrLf
            strSQL = strSQL & "  dbo.T_M_Assetssubject.AccountItemCode             " & vbCrLf
            Set ADORst = Connection.OpenSQL(strSQL, adOpenKeyset, adLockOptimistic)
            Nrow = 0
            ADORst.MoveFirst
            Do Until ADORst.EOF
                Nrow = Nrow + 1
                With sprAssetsitemsMaster
                    .Row = Nrow
                    .Col = 1
                    .Value = ADORst.Fields(0)
                    .Col = 2
                    .Value = ADORst.Fields(1)
                    .Col = 3    '第三列是COMBOBOX单元格,我在给其初始赋值时有两个字段(
          ' CODE,NAME),最终显示时想只显示CODE,NAME在他后面的单元格里显示
                    .Value = ADORst.Fields(2)
                    Dim Adc As Integer
                    Adc = .Value
                    .Col = 4  '第四列要显示的NAME
                    strSQL1 = ""
                    strSQL1 = strSQL1 & "SELECT           Assetsdivision " & vbCrLf
                    strSQL1 = strSQL1 & "FROM                                 " & vbCrLf
                    strSQL1 = strSQL1 & "           T_M_Assetsdivision                " & vbCrLf
                    strSQL1 = strSQL1 & "WHERE                                 " & vbCrLf
                    strSQL1 = strSQL1 & "        Assetsdivisioncode=" & CStr(Adc) & vbCrLf
                    Set ADORst1 = Connection.OpenSQL(strSQL1, adOpenKeyset, adLockOptimistic)
                    .Value = CStr(ADORst1.Fields(0))
                    Call CloseRecordset(ADORst1)
                    .Col = 5
                    ADORst.MovePrevious
                    .Value = ADORst.Fields(3)
                    Dim RC As Integer
                    RC = .Value
                    .Col = 6
                    strSQL1 = ""
                    strSQL1 = strSQL1 & "SELECT          Redemptionname       " & vbCrLf
                    strSQL1 = strSQL1 & "FROM                                 " & vbCrLf
                    strSQL1 = strSQL1 & "           T_M_Redemption            " & vbCrLf
                    strSQL1 = strSQL1 & "WHERE                                 " & vbCrLf
                    strSQL1 = strSQL1 & "        Redemptioncode=" & CStr(RC)   & vbCrLf
                    Set ADORst2 = Connection.OpenSQL(strSQL1, adOpenKeyset, adLockOptimistic)
                    .Value = CStr(ADORst2.Fields(0))
                    Call CloseRecordset(ADORst2)
                    
                    
                    .Col = 7
                    .Value = ADORst.Fields(4)
                    Dim AIN As Integer
                    AIN = .Value
                    .Col = 8
                    strSQL1 = ""
                    strSQL1 = strSQL1 & "SELECT           AccountItemName          " & vbCrLf
                    strSQL1 = strSQL1 & "FROM                                      " & vbCrLf
                    strSQL1 = strSQL1 & "           T_M_AccountItem                " & vbCrLf
                    strSQL1 = strSQL1 & "WHERE                                     " & vbCrLf
                    strSQL1 = strSQL1 & "        AccountItemCode=" & CStr(AIN)       & vbCrLf
                    Set ADORst3 = Connection1.OpenSQL(strSQL1, adOpenKeyset, adLockOptimistic)
                    .Value = CStr(ADORst3.Fields(0))
                     Call CloseRecordset(ADORst3)
                    .MaxRows = Nrow + 1
                End With
                If ADORst.EOF = False Then
                    ADORst.MoveNext
                   
                End If
           Loop
    end sub
    上面太乱了,做了一下整理,和说明,3,4列是一组要显示的数据,5,6和7,8是一组,在体实现是一致的,谢了,急用!
      

  5.   

    你运行程序时不慢吗?把sql文写到循环里好像不大好哎。
      

  6.   

    数据要想下移一行,把Nrow的初始值加1,应该就可以了吧。
      

  7.   

    .Col = 3    '第三列是COMBOBOX单元格,我在给其初始赋值时有两个字段(
          ' CODE,NAME),最终显示时想只显示CODE,NAME在他后面的单元格里显示
                    .Value = ADORst.Fields(2)
    此式当中的具体形式是:
    COMBOBOX中的数据:
    1   定额
    2   定率
    ...
    后面的定额,定率是根据前面的CODE取出的,但是在.Value = ADORst.Fields(2)中,ADORst.Fields(2)的值为了时赋给.VALUE的值也是1,但是显示时却是下一条记录的值:2, 且后面单元格里的NAME却是第一条记录的值 :定额 ,麻烦各位了,帮一下忙!
      

  8.   

    对于程序的效率问题,我觉得你后面的两个sql文改写一下可以不用放在循环里。直接用前面的语句查出的结果作为题条件。SELECT           Assetsdivision 
     FROM            T_M_Assetsdivision                
    WHERE            Assetsdivisioncode in(
    SELECT    dbo.T_M_Assetssubject.Assetsdivisioncode             
    FROM   dbo.T_M_Assetssubject             
    ORDER BY    dbo.T_M_Assetssubject.Assetsdivisioncode  )
    自己调试一下,这种方法可行,速度要快很多,sql文还可以优化。
             
      

  9.   

    感动! 感谢大家在此的帮助,由于这几天一直在忙其它的事情,一直没过来, 我用的是SPREAD 6.0 ,现在旧的问题没解决新的问题又产生了,
     .TypeComboBoxList = .TypeComboBoxList & Trim(ADORst.Fields(0)) 动行时是可以赋值的,但是到了窗体显示时,COMBOBOX里面不显示数据,不知是哪个属性的原因,还是...?
      

  10.   

    我的MSN:[email protected] 可不可以在线回答呢,因为我不懂的太多,实在没有头绪:(,谢谢各位了!