RT
解决方案 »
- VB排版excel错误
- MDI父窗口用PictureBox来进行布局,如何控制picturebox的布局方式呢?
- 100分求救:如何在VB里面调用API(CreateFile,ReadFile,GetCommState...),用多线程收发串口的数据
- 客户端和服务器端问题,红色警报,在线等.请各位帮忙谢了!
- 用什么方法可以实现两个喇叭同时为左声道,或两个喇叭同时为右声道.
- 关于发送邮件
- 请问软件科技成果报告怎样写??
- 各位大哥!请问那里可以找到拼图小游戏的源程序,是一张张往起贴的那种拼图,谢谢!!
- 怎样让C盘成为共享盘?还要设置进入密码!
- 大家看看,这个sql语句速度快不快?
- IIF()的用法
- 如何用printer自定义纸张大小
VSHFLEXGRID才是连接ADO的表格显示控件
两者的操作基本相同,VSHFLEXGRID在VB6中有些BUG,需要到相关网站下载SP5
连接如下(先引用ADO):
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Set cn = New ADODB.Connection
cn.Open "driver={SQL Server};server=127.0.0.1;uid=sa;pwd=;database=DBname"
Set rs = New ADODB.Recordset
sql = "select * from tablename"
rs.Open sql, cn, adOpenStatic, adLockBatchOptimistic
Set Me.MSHFLEXGrid.DataSource = rs
MSHFLEXGrid.Refresh
Private Sub CategoryProductsGrid()
'Purpose: 定义一个MSFlexGrid控件,并在里面显示数据 '声明变量
Dim rstMPS As New ADODB.Recordset
Dim strSQL As String
Dim intCol As Integer
Dim intRow As Integer '返回一个记录集
strSQL = "TRANSFORM Sum(Sales) AS SumOfSales " & _
"SELECT ProductID, ProductName " & _
"FROM tblProductRollupMonth " & _
"WHERE CategoryID = '1' " & _
"GROUP BY ProductID, ProductName " & _
"PIVOT Month In ('01','02','03','04','05','06','07','08','09','10','11','12')"
With rstMPS
.ActiveConnection = cnnDecSupt
.Source = strSQL
.LockType = adLockReadOnly
.CursorLocation = adUseClient
.Open
End With
With grdMPS
'设置表格单元的垂直尺寸
.Rows = rstMPS.RecordCount + 1
.Height = .RowHeight(0) * .Rows + 460
'表格高度不能超过表单的高度
If .Height > 4095 Then
.Height = 4095
End If
'设置水平尺寸
.Cols = rstMPS.Fields.Count
'增加列头 (Product ID, Product Name, and months)
.Row = 0
For intCol = 0 To 13
.Col = intCol
If intCol = 0 Then
'Product ID column
.Text = "ID"
.ColWidth(intCol) = 300
.FixedAlignment(intCol) = flexAlignCenterCenter
ElseIf intCol = 1 Then
'Product Name column
.Text = "Product Name"
.ColWidth(intCol) = 2000
.FixedAlignment(intCol) = flexAlignLeftCenter
Else
'12 monthly data columns
.Text = strMonths(intCol - 1, 1)
.ColWidth(intCol) = 742
.FixedAlignment(intCol) = 2
.ColAlignment(intCol) = flexAlignRightCenter
End If
Next intCol '从记录集中导入数据
intRow = 1
rstMPS.MoveFirst
Do Until rstMPS.EOF
'Process one record at a time
For intCol = 0 To 13
'The table data is arranged in rows of columns
.Row = intRow
.Col = intCol
If Not IsNull(rstMPS.Fields(intCol)) Then
'Attempting to insert Null values causes an error
If intCol > 1 Then
If intRow = 1 Then
.Text = Format(CCur(rstMPS.Fields(intCol)), "$#,##0")
Else
.Text = Format(CCur(rstMPS.Fields(intCol)), "#,##0")
End If
Else
.Text = rstMPS.Fields(intCol)
End If
End If
Next intCol
rstMPS.MoveNext
intRow = intRow + 1
DoEvents
Loop
'锁定头两列
.FixedCols = 2
End With
DoEvents
'释放空间
Set rstMPS = Nothing
End Sub如果查询返回给MSFlexGrid控件的几率相对较少(少于100行),则VB6应用程序的性能要比采用MSHFlexGrid或DBGrid绑定数据达到同样目的的应用程序性能好一些。随着返回行数的增长,绑定控件的优势就得以展现。