我用vb6.0+SQL Server 2000 作一个成绩管理系统
在数据库里有个成绩表我是这样设计的依次有这样几项
学号,姓名,课程名,成绩,说明
现在我想在一个控件里显示这样效果:
每一行显示一个学生的“学号”,“姓名”,还有各门功课的成绩
例如:
学号 姓名 大学语文 普通物理 线性代数 ........
2000123 李某 78 89 67 .......
. . . . . .
. . . . . .
用什么控件比较好一点是datagrid 还是Msflexgrid 好一点
那位大哥教教小弟看应该怎么做,最好是详细一点
在数据库里有个成绩表我是这样设计的依次有这样几项
学号,姓名,课程名,成绩,说明
现在我想在一个控件里显示这样效果:
每一行显示一个学生的“学号”,“姓名”,还有各门功课的成绩
例如:
学号 姓名 大学语文 普通物理 线性代数 ........
2000123 李某 78 89 67 .......
. . . . . .
. . . . . .
用什么控件比较好一点是datagrid 还是Msflexgrid 好一点
那位大哥教教小弟看应该怎么做,最好是详细一点
文字内容从数据库读出来,显示在窗体上特定位置(透明lable上)就可以了。这样比较简单,效果也不错。
datagrid支持和ado绑定,可以直接修改数据库,也可以在单元格内直接编辑
mshflexgrid也支持与ado绑定,但是不支持直接修改数据库和直接编辑
如果想更好点的话,建议用其他的表格控件,如SPREAD,或者VASpread可以直接编辑
接受很多额外的功能。
而是想知道究竟应该怎样用SQL语句来实现
我说的那种效果
可能我开始问问题的时候没说清楚
搞的大家把问题的重心搞错了
现在纠正
我的意思是我的数据库是这样的:
第一个字段 student_ID
第二个字段 student_name
第三个字段 course_name
第四个字段 chenji
在数据库里是这样显示的:
student_id student_name course_name chenji
2003445 李某 大学语文 78
2003446 王某 大学物理 76我现在想在一个datagrid或者mshflexgrid显示象我题目所描述的那种效果
请问应该怎么做?????????????????
rst.open sql,conn,1,3
set dtgrid.datasource=rst
dtgrid.refresh
dim cnn as adodb.connection
cnn.open".........数据库"
dim mrc as adodb.recordset
mrc.open"select ......",cnn
MSFlexGrid1.Rows = mrc.RecordCount + 1
If mrc.RecordCount = 0 Then
MSFlexGrid1.Rows = 2
End If
MSFlexGrid1.Cols = mrc.Fields.Count
MSFlexGrid1.FixedRows = 1
For i = 0 To mrc.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, i) = mrc.Fields(i).Name
Next i
到这里表头就填加好了。接下来就是往表里填加数据了
If mrc.EOF = False Then
With MSFlexGrid1
.Rows = 1
Do While Not mrc.EOF
.Rows = .Rows + 1
For i = 0 To mrc.Fields.Count - 1
.TextMatrix(.Rows - 1, i) = mrc.Fields(i) & ""
Next i
mrc.MoveNext
Loop
End With
End If
这下你该满足了吧
再有问题我帮你顶
MSFLEXGRID不能个性的问题也好办你只需加上以下代码就OK
先在通用里面声明如下两下变量
dim wgridcol%,wgridrow%
Private Sub msflexgrid1_RowColChange()
WgridCol% = MSFlexGrid1.Col
WgridRow% = MSFlexGrid1.Row
End SubPrivate Sub msflexgrid1_KeyPress(KeyAscii As Integer)
MSFlexGrid1.Col = WgridCol%
MSFlexGrid1.Row = WgridRow%
If KeyAscii = 8 Then 'keyascii=8为退格删除键
If MSFlexGrid1.Text <> "" Then MSFlexGrid1.Text = Mid$(MSFlexGrid1.Text, 1, Len(MSFlexGrid1.Text) - 1) '除最后一个字符
Else
MSFlexGrid1.Text = MSFlexGrid1.Text + Chr$(KeyAscii)
End If
End Sub
有了上面的代码一样也可能在表里面填加删除修改
dim mrcData as adodb.recordset
mrcData.open"select ......where name=@name",cnn
If not mrcData.EOF Then
With MSFlexGrid1
.Rows = 1
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, i) = mrcData.Fields(i) & ""
if not mrcData.Eof then
mrcData.MoveNext
else
exit sub
end if
End With
End If如果你会写存储过程就更简单了。
With MSFlexGrid1
i = 2
i = i+ 1
.TextMatrix( 2, i) = mrcData.Fields(成绩)
if not mrcData.Eof then
mrcData.MoveNext
else
exit sub
end if
用其它的数据库组件也有好处,一般要看你的数据量大不大,如果很大的话,还是用datagrid比较好,比较少的话,用listview比较好看。个人观点!
该问题已经解决
现在又有个新问题
我已经开贴希望那位仁兄不吝赐教,继续帮助我
http://expert.csdn.net/Expert/topic/1813/1813947.xml?temp=.2555963