我现在SPREAD中,使用COMBOBOX进行数据显示,结果总是得不出我要的数据(数据要相应向下移动一条记录,比如应该显示第二条记录的地方显示的第天务记录),而且有时还赋不上值,请高手指教!在此先谢了!
解决方案 »
- 100分求助(分数不够可另行开贴送分)!activereport 控件的使用
- 如何在类中给窗体上的进度条赋值??
- 如何获取登录网站时的验证码?
- 水晶报表中如何实现货币转换成汉字大写的功能呢?高分求教
- 在VB中操控EXCEL?
- 求助!2010 Microsoft excl 的VBA中 Range.Find的使用方法。
- (急!在线求解)怎么样以二进制的方式向文件尾部追加数据?
- 请问如果将控件数组的index参数传递给另一个窗体?
- 在vb中用扫描获取的图像存进数据库后,取出不能在picture控件中显示,为什么?
- 通过DOS获取FTP一个目录的文件列表
- 关于dataGrid的问题 和 显示列表数据用什么控件比较好??
- 老问题了,关于注册码!
我现在SPREAD中,使用COMBOBOX进行数据显示,结果总是得不出我要的数据(数据要相应向下移动一条记录,比如应该显示第二条记录的地方显示的第三条记录),而且有时还赋不上值,请高手指教!在此先谢了!
我现在SPREAD中,使用COMBOBOX进行数据显示,结果总是得不出我要的数据(数据要相应向下移动一条记录,比如应该显示第二条记录的地方显示的第三条记录),而且有时还赋不上值,请高手指教!在此先谢了!
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里面的值是正确的,可是赋值之后就不对了
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是一组,在体实现是一致的,谢了,急用!
' CODE,NAME),最终显示时想只显示CODE,NAME在他后面的单元格里显示
.Value = ADORst.Fields(2)
此式当中的具体形式是:
COMBOBOX中的数据:
1 定额
2 定率
...
后面的定额,定率是根据前面的CODE取出的,但是在.Value = ADORst.Fields(2)中,ADORst.Fields(2)的值为了时赋给.VALUE的值也是1,但是显示时却是下一条记录的值:2, 且后面单元格里的NAME却是第一条记录的值 :定额 ,麻烦各位了,帮一下忙!
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文还可以优化。
.TypeComboBoxList = .TypeComboBoxList & Trim(ADORst.Fields(0)) 动行时是可以赋值的,但是到了窗体显示时,COMBOBOX里面不显示数据,不知是哪个属性的原因,还是...?