一个关于数据库的问题

WANGDATAN 2003-05-20 03:23:41
我用vb6.0+SQL Server 2000 作一个成绩管理系统
在数据库里有个成绩表我是这样设计的依次有这样几项
学号,姓名,课程名,成绩,说明
现在我想在一个控件里显示这样效果:
每一行显示一个学生的“学号”,“姓名”,还有各门功课的成绩
例如:
学号 姓名 大学语文 普通物理 线性代数 ........
2000123 李某 78 89 67 .......
. . . . . .
. . . . . .
用什么控件比较好一点是datagrid 还是Msflexgrid 好一点
那位大哥教教小弟看应该怎么做,最好是详细一点
...全文
72 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bopite 2003-05-21
  • 打赏
  • 举报
回复
这样可以吗?先填加表头,也就是上面的各个字段名
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 Sub

Private 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
有了上面的代码一样也可能在表里面填加删除修改。。。。。。。。。

xiaoxingchi 2003-05-21
  • 打赏
  • 举报
回复
用listview比较直观,看起来比较好看。
用其它的数据库组件也有好处,一般要看你的数据量大不大,如果很大的话,还是用datagrid比较好,比较少的话,用listview比较好看。个人观点!
lgxysl 2003-05-21
  • 打赏
  • 举报
回复
为什么不直接用ADO呢?直接用ADO的优点是:移植性好,不用改代码,只要改数据库的连接就可以改用其他数据库,如access等等。
WANGDATAN 2003-05-21
  • 打赏
  • 举报
回复
谢谢各位提点
该问题已经解决
现在又有个新问题
我已经开贴希望那位仁兄不吝赐教,继续帮助我
http://expert.csdn.net/Expert/topic/1813/1813947.xml?temp=.2555963
sea026 2003-05-21
  • 打赏
  • 举报
回复
错了,
With MSFlexGrid1
i = 2
i = i+ 1
.TextMatrix( 2, i) = mrcData.Fields(成绩)
if not mrcData.Eof then
mrcData.MoveNext
else
exit sub
end if
sea026 2003-05-21
  • 打赏
  • 举报
回复
到这里表头就填加好了。接下来就是往表里填加数据了
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

如果你会写存储过程就更简单了。
reddg 2003-05-20
  • 打赏
  • 举报
回复
sql="select * from table order by student_id"
rst.open sql,conn,1,3
set dtgrid.datasource=rst
dtgrid.refresh

doudoushen 2003-05-20
  • 打赏
  • 举报
回复
在fixedcols 和fixedrows都等于一 martrixtext(0,1)=student-id matrixtext(0,2)=student-name ....

照这样做 不知道对你有用吗
WANGDATAN 2003-05-20
  • 打赏
  • 举报
回复
还没搞懂我的意思
我的意思是我的数据库是这样的:
第一个字段 student_ID
第二个字段 student_name
第三个字段 course_name
第四个字段 chenji
在数据库里是这样显示的:
student_id student_name course_name chenji
2003445 李某 大学语文 78
2003446 王某 大学物理 76



我现在想在一个datagrid或者mshflexgrid显示象我题目所描述的那种效果
请问应该怎么做?????????????????
馮強 2003-05-20
  • 打赏
  • 举报
回复
select xh as 学号,xm as 姓名,Chinese as 大学语文,... from table where...

楼主不就是要显示字段标题吗?用as语句搞定。
WANGDATAN 2003-05-20
  • 打赏
  • 举报
回复
我不是想知道哪个控件功能强大
而是想知道究竟应该怎样用SQL语句来实现
我说的那种效果
可能我开始问问题的时候没说清楚
搞的大家把问题的重心搞错了
现在纠正
hulianchi 2003-05-20
  • 打赏
  • 举报
回复
Msflexgrid 功能强大些

WANGDATAN 2003-05-20
  • 打赏
  • 举报
回复
能不能教我怎样写这一段SQL代码
WANGDATAN 2003-05-20
  • 打赏
  • 举报
回复
用datagrid应该怎么做啊
fraser01 2003-05-20
  • 打赏
  • 举报
回复
两个都可以,就是编辑的时候MSFLEX麻烦点。
如果想更好点的话,建议用其他的表格控件,如SPREAD,或者VASpread可以直接编辑
接受很多额外的功能。
lxcc 2003-05-20
  • 打赏
  • 举报
回复
差不多!个人喜好!
datagrid支持和ado绑定,可以直接修改数据库,也可以在单元格内直接编辑
mshflexgrid也支持与ado绑定,但是不支持直接修改数据库和直接编辑
lihonggen0 2003-05-20
  • 打赏
  • 举报
回复
datagrid

或者

mshflexgrid
龙华 2003-05-20
  • 打赏
  • 举报
回复
选一个图片做窗体背景。表格画在上面。
文字内容从数据库读出来,显示在窗体上特定位置(透明lable上)就可以了。这样比较简单,效果也不错。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧