关于SPREAD7.0控件的使用
高手请教几个很菜的问题:
1、怎样将数据库中的内容通过spread7.0控件显示出来?
2、spread7.0的注册码有没有?
最好能提供中文使用手册
[解决办法]
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
[解决办法]
楼上的做法效率很低,还不如用绑定来得快。
Private Sub Form_Load()
' 初始化 Spread,当然也可以在Spread设计器里做
With fpSpread1
.MaxRows = 0
.MaxCols = 3
.Col = 1
.DataField = "EmployeeID "
.Col = 2
.DataField = "FirstName "
.Col = 3
.DataField = "LastName "
'...
End With
End Sub
' 绑定到数据源
Private Sub Command1_Click()
Set fpSpread1.DataSource = Adodc1
fpSpread1.MaxRows = fpSpread1.DataRowCnt
End Sub
[解决办法]
我现在用的是6.0,主要这么用:
With spdList
.MaxRows = 0
.MaxCols = 0
.MaxRows = Rs.RecordCount
.MaxCols = Rs.Fields.Count
Do While Not Rs.EOF
pRow = pRow + 1
.Row = pRow
.Col = 1: .Text = " " & Rs(0)
.Col = 2: .Text = " " & Rs(1)
.Col = 3: .Text = " " & Rs(2)
.Col = 4: .Text = " " & Rs(3)
.Col = 5: .Text = " " & Rs(4)
.Col = 6: .Text = " " & Rs(5)
.Col = 7: .Text = " " & Rs(6)
Rs.MoveNext
Loop
.Row = -1
.Col = 1
.Lock = True
.Row = -1
.Col = 7
.Lock = True
End With