vb6.0中怎样使data所在记录是DataGrid光标所在行记录?
谢谢了告送我怎么读取datagrid光标所在行的记录,或者datagrid的用法也是可以的呀!谢谢了!!!!!我着急呀!谢谢zly271的回答,您给的好像不是vb吧?有点...
谢谢了
告送我怎么读取datagrid光标所在行的记录,或者datagrid的用法也是可以的呀!
谢谢了!!!!!我着急呀!
谢谢zly271的回答,您给的好像不是vb吧?有点像c++,加到vb里就没一句是对的!
就是"ZHRX"的意思了,那要怎么作呢?
好象这个控件是不能用CLICK事件读取的吧? 展开
告送我怎么读取datagrid光标所在行的记录,或者datagrid的用法也是可以的呀!
谢谢了!!!!!我着急呀!
谢谢zly271的回答,您给的好像不是vb吧?有点像c++,加到vb里就没一句是对的!
就是"ZHRX"的意思了,那要怎么作呢?
好象这个控件是不能用CLICK事件读取的吧? 展开
3个回答
展开全部
DataGrid控件在读取数据的时候,会发生读取数据不正确的情况,这是由于控件本身决定的,一般是用控件的DataGrid1_Click事件读取数据,为什么呢?经过昨天一天的探讨,知道了DataGrid控件的Row和Col值是不确定的,我读取过记录的Row和Col值,发现在控件拉动滚动条时,控件的Row和Col值的确是在发生变化的。
后来资料介绍,可以用控件的DataGrid1_RowColChange事件读取数据,但是这种读取数据的方法只能读取被点击的记录的字段值,而不能读取整个DataGrid控件显示的所有字段:
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Text1(0).Text = DataGrid1.Text
End Sub
在Text1(0).Text文本框显示的是你刚刚点击的记录字段值(注意只是一个字段的值),如果你认为用控件的Row和Col属性来读取,上面说过由于它的Row和Col值不确定,因此控件是不能支持这种读取方法。
那么有没有可以读取DataGrid控件的方法呢?有的:
方法1:用DataGrid控件的DataGrid1_Click事件单击事件读取,但是必须对读取记录进行双击:
Private Sub DataGrid1_Click()
Text1(0).Text = Adodc1.Recordset.Fields(0)
Text1(1).Text = Adodc1.Recordset.Fields(1)
Text1(2).Text = Adodc1.Recordset.Fields(2)
Text1(3).Text = Adodc1.Recordset.Fields(3)
Text1(4).Text = Adodc1.Recordset.Fields(4)
End Sub
方法2:用按钮的Command1_Click单击事件读取,方法是首先点击DataGrid控件的记录,然后再点击按钮:
Private Sub Command1_Click()
'判断是否选择了表中的一行
If Adodc1.Recordset.EOF = True Or Adodc1.Recordset.BOF = True Then
MsgBox "请选择要显示的行"
Exit Sub
End If
'读取数据
Text1(0).Text = Adodc1.Recordset.Fields(0)
Text1(1).Text = Adodc1.Recordset.Fields(1)
Text1(2).Text = Adodc1.Recordset.Fields(2)
Text1(3).Text = Adodc1.Recordset.Fields(3)
Text1(4).Text = Adodc1.Recordset.Fields(4)
End Sub
后来想到MSFlexGrid控件,既然DataGrid控件的Row和Col值是不确定的,那么MSFlexGrid控件的Row和Col值呢,这个不要我说,大家都清楚,它的Row和Col值是唯一的确定值,那么何不用MSFlexGrid控件?,因此我在一个窗体中加载了DataGrid和MSFlexGrid控件,添加了Adodc控件,链接了数据库和数据表,由于MSFlexGrid控件不支持Adodc数据源,必须添加Data数据源,这个想来大家都比我熟悉,好了闲话少说,窗体名称取作“DataGrid和MSFlexGrid控件读取数据的比较”添加了二组TextBox控件数组,分别是Text1(0).Text到Text1(4).Text和Text2(0).Text到Text2(4).Text,共同链接同样的数据源,然后添加了MSFlexGrid控件的MSFlexGrid1_Click事件,发现MSFlexGrid控件读取数据的能力比DataGrid控件强,而且MSFlexGrid控件能够修改控件的外观属性,制作出比较美观的控件外表,因此我认为如果仅仅是显示和读取数据用MSFlexGrid控件比较合理,下面是MSFlexGrid控件MSFlexGrid1_Click事件的代码:
Private Sub MSFlexGrid1_Click()
If Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6))) <> 0 Then
SID = Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6)))
Text2(0).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1))
Text2(1).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2))
Text2(2).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3))
Text2(3).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4))
Text2(4).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5))
End If
End Sub
注意:MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6)是数据表值的ID字段值。
对了,在将MSFlexGrid控件和Data数据源绑定后在窗体的Form_Load事件中必须设定MSFlexGrid控件列的显示大小:
Private Sub Form_Load()
MSFlexGrid1.Cols = 7
With MSFlexGrid1
.ColWidth(0) = 0
.ColWidth(1) = 1500
.ColWidth(2) = 1500
.ColWidth(3) = 800
.ColWidth(4) = 800
.ColWidth(5) = 2200
.ColWidth(6) = 0
End With
End Sub
.ColWidth(0) = 0是不显示这个列,现在列一共定义了7个列。
其实我比较喜欢用MSFlexGrid控件,因为这个控件在随时可以更新控件显示内容,你可以通过编程的方法加载不同数据源的显示方法,同样你也可以用ADO通过代码来显示数据表中的数据。
后来资料介绍,可以用控件的DataGrid1_RowColChange事件读取数据,但是这种读取数据的方法只能读取被点击的记录的字段值,而不能读取整个DataGrid控件显示的所有字段:
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Text1(0).Text = DataGrid1.Text
End Sub
在Text1(0).Text文本框显示的是你刚刚点击的记录字段值(注意只是一个字段的值),如果你认为用控件的Row和Col属性来读取,上面说过由于它的Row和Col值不确定,因此控件是不能支持这种读取方法。
那么有没有可以读取DataGrid控件的方法呢?有的:
方法1:用DataGrid控件的DataGrid1_Click事件单击事件读取,但是必须对读取记录进行双击:
Private Sub DataGrid1_Click()
Text1(0).Text = Adodc1.Recordset.Fields(0)
Text1(1).Text = Adodc1.Recordset.Fields(1)
Text1(2).Text = Adodc1.Recordset.Fields(2)
Text1(3).Text = Adodc1.Recordset.Fields(3)
Text1(4).Text = Adodc1.Recordset.Fields(4)
End Sub
方法2:用按钮的Command1_Click单击事件读取,方法是首先点击DataGrid控件的记录,然后再点击按钮:
Private Sub Command1_Click()
'判断是否选择了表中的一行
If Adodc1.Recordset.EOF = True Or Adodc1.Recordset.BOF = True Then
MsgBox "请选择要显示的行"
Exit Sub
End If
'读取数据
Text1(0).Text = Adodc1.Recordset.Fields(0)
Text1(1).Text = Adodc1.Recordset.Fields(1)
Text1(2).Text = Adodc1.Recordset.Fields(2)
Text1(3).Text = Adodc1.Recordset.Fields(3)
Text1(4).Text = Adodc1.Recordset.Fields(4)
End Sub
后来想到MSFlexGrid控件,既然DataGrid控件的Row和Col值是不确定的,那么MSFlexGrid控件的Row和Col值呢,这个不要我说,大家都清楚,它的Row和Col值是唯一的确定值,那么何不用MSFlexGrid控件?,因此我在一个窗体中加载了DataGrid和MSFlexGrid控件,添加了Adodc控件,链接了数据库和数据表,由于MSFlexGrid控件不支持Adodc数据源,必须添加Data数据源,这个想来大家都比我熟悉,好了闲话少说,窗体名称取作“DataGrid和MSFlexGrid控件读取数据的比较”添加了二组TextBox控件数组,分别是Text1(0).Text到Text1(4).Text和Text2(0).Text到Text2(4).Text,共同链接同样的数据源,然后添加了MSFlexGrid控件的MSFlexGrid1_Click事件,发现MSFlexGrid控件读取数据的能力比DataGrid控件强,而且MSFlexGrid控件能够修改控件的外观属性,制作出比较美观的控件外表,因此我认为如果仅仅是显示和读取数据用MSFlexGrid控件比较合理,下面是MSFlexGrid控件MSFlexGrid1_Click事件的代码:
Private Sub MSFlexGrid1_Click()
If Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6))) <> 0 Then
SID = Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6)))
Text2(0).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1))
Text2(1).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2))
Text2(2).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3))
Text2(3).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4))
Text2(4).Text = Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5))
End If
End Sub
注意:MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6)是数据表值的ID字段值。
对了,在将MSFlexGrid控件和Data数据源绑定后在窗体的Form_Load事件中必须设定MSFlexGrid控件列的显示大小:
Private Sub Form_Load()
MSFlexGrid1.Cols = 7
With MSFlexGrid1
.ColWidth(0) = 0
.ColWidth(1) = 1500
.ColWidth(2) = 1500
.ColWidth(3) = 800
.ColWidth(4) = 800
.ColWidth(5) = 2200
.ColWidth(6) = 0
End With
End Sub
.ColWidth(0) = 0是不显示这个列,现在列一共定义了7个列。
其实我比较喜欢用MSFlexGrid控件,因为这个控件在随时可以更新控件显示内容,你可以通过编程的方法加载不同数据源的显示方法,同样你也可以用ADO通过代码来显示数据表中的数据。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CString CDataGrid::GetItem(int ColNum)
{
CColumns cols = GetColumns();
VARIANT v_ColNum, v_Value;
//设置列编号
v_ColNum.vt = VT_I2;
v_ColNum.iVal = ColNum;
//根据列编号返回CColumn对象
CColumn col = cols.GetItem(v_ColNum);
//读取列的
v_Value = col.GetValue();
return v_Value.bstrVal;
}
{
CColumns cols = GetColumns();
VARIANT v_ColNum, v_Value;
//设置列编号
v_ColNum.vt = VT_I2;
v_ColNum.iVal = ColNum;
//根据列编号返回CColumn对象
CColumn col = cols.GetItem(v_ColNum);
//读取列的
v_Value = col.GetValue();
return v_Value.bstrVal;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub DataGrid1_Click()
Text1 = DataGrid1.Columns(0)
Text2 = DataGrid1.Columns(1)
'...
Text9 = DataGrid1.Columns(9)
frmXianshi.Show
End Sub
Text1 = DataGrid1.Columns(0)
Text2 = DataGrid1.Columns(1)
'...
Text9 = DataGrid1.Columns(9)
frmXianshi.Show
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询