我在搞一个学生的成绩管理系统。我的意图是有listbox显示所有的表,用鼠标点击任意个表的名字,在msflexgrid上显示这个表的内容。我的问题是:
1):msflexgrid可否根据不同的表的内容来,变换行和列的数目,如能的话应怎样实现;
2):如我要对某一表进行添加或删除,msflexgrid里面没有提供如add,delete之类的方法,我是否在data上进行操作;
不胜感激!!!!!!!!
1):msflexgrid可否根据不同的表的内容来,变换行和列的数目,如能的话应怎样实现;
2):如我要对某一表进行添加或删除,msflexgrid里面没有提供如add,delete之类的方法,我是否在data上进行操作;
不胜感激!!!!!!!!
解决方案 »
- 【使用方便的全局热键类】修正了一些错误,并添加了一个多热键的示例工程,欢迎大家使用:)
- 今天开眼了,为何加上几行代码,应能实现xp效果呢?简直不可思议,大家进来看看,可能你还不知道呢!代码如下:
- 有关使用Image和Picture控件实现拖拽和放置效果(类似纸牌游戏)
- DataReport报表问题!为什么报表从第二条记录开始显示、计算!郁闷!
- vb的dll文件都已经知道,做安装包的时候这些dll需要拷贝到哪个目录下面呢?
- 数据库问题(文件)
- 如何在vb中连接远程的access数据库!
- 请教网页读入问题
- 急~!!~VB6.0 问题,不可思议!
- excel表格,不自动更新结果,需要双击单元格,才更新结果,怎么办?
- 在用ado编程时,怎么实现备份
- 如何用VB代码实现对mssql数据库的备份和恢复?
1.用Rst.Fields.Count得到表的字段数目,即可以然后定义表的列数(msflexgrid.cols=Rst.Fields.Count)
用Rst.recordcount的到表的记录条数,来定义表的行数
(msflexgrid.rows=Rst.recordcount)2.第一个实现了,这个就更简单了,先对数据库进行操作,然后用addItem和removeItem方法给表格添加行或删除行。
用datagrid控件,只要设定源就可以了,简单多了
If Not TypeOf rsDataSet Is Recordset And Not TypeOf rsDataSet Is ADODB.Recordset Then Exit Function
If rsDataSet.RecordCount > 0 Then
rsDataSet.MoveLast
rsDataSet.MoveFirst
End If
RecordSum = rsDataSet.RecordCount
End FunctionPublic Sub DrawGrid(rsDataSet As Object, rsGrid As Object)
If Not TypeOf rsDataSet Is Recordset And Not TypeOf rsDataSet Is ADODB.Recordset Then Exit Sub
If Not TypeOf rsGrid Is MSFlexGrid Then Exit Sub
rsGrid.Cols = rsDataSet.Fields.Count
Dim fStr As String
fStr = ""
Dim I As Long
For I = 0 To rsDataSet.Fields.Count - 2
fStr = fStr & "<" & rsDataSet.Fields(I).name & "|"
Next
fStr = fStr & "<" & rsDataSet.Fields(I).name
rsGrid.FormatString = fStr
rsGrid.Rows = RecordSum(rsDataSet) + 1
If rsGrid.Rows > 1 Then
rsGrid.FixedRows = 1
End If
If RecordSum(rsDataSet) = 0 Then Exit Sub
' ///////////////////////////////////
rsDataSet.MoveFirst
Dim J As Long
For J = 0 To RecordSum(rsDataSet) - 1
For I = 0 To rsDataSet.Fields.Count - 1
If I = 1 Or I = 2 Or I = 3 Then
rsGrid.ColWidth(I) = 567 * 5
Else
rsGrid.ColWidth(I) = 567 * 2.4
End If
If rsDataSet.Fields(I).Type = adDate Or rsDataSet.Fields(I).Type = 8 Or rsDataSet.Fields(I).Type = adDBTimeStamp Then
If rsDataSet.Fields(I).Value >= 1 Then
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", Format(rsDataSet.Fields(I).Value, "yyyy-mm-dd"))
Else
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", Format(rsDataSet.Fields(I).Value, "Long Time"))
End If
ElseIf rsDataSet.Fields(I).Type = 5 Then '//货币
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", "¥" & Abs(rsDataSet.Fields(I).Value))
Else
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", rsDataSet.Fields(I).Value)
End If
Next I
rsDataSet.MoveNext
Next J
End Sub