vb中datagrid控件的使用方法有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb中datagrid控件的使用方法有哪些?相关的知识,希望对你有一定的参考价值。

For i = 0 To DataGrid1.ApproxCount
If Trim(乡村号.Text) = Trim(DataGrid1.Columns.Item(i).Text) Then
MsgBox "该乡村号已使用,请重新输入"
这是一个添加按钮里面的代码,原意是试图添加乡村号时检测表中已有乡村号是否重复,但失败了。请指正。

这个判断的确不科学,估计你的DataGrid1中显示的数据是从数据库或excel中读出的,那么你操作数据库或excel,使用SQL语句查询,是比较理想的选择。

例如:
SQL1="Select * From 数据表 Where 乡村号='" & 乡村号.Text & "' 'SQL语句字符串
RS.Open SQL1,conn,2,2 ‘使用SQL打开数据表查询
IF Not RS.EOF Then '如果记录不是空
MsgBox "该乡村号已使用,请重新输入"
RS.Close
conn.Close
Exit Sub
End If
在SQL语句中的 Where 后面的“乡村号”是字段名。追问

我还是实在不会,你能留个联系方式,我发一份源码给你帮我作修改吗

追答

百度不容许发QQ或邮箱,在百度HI中聊吧。

追问

我Q号就是百度ID:3 8 1 7 4 7 9 9 7
麻烦加我一下好吗

参考技术A 这个不能这么做?

应该从数据源去进行搜索寻找.
我记得DataGrid控件无法返回数据源的记录总数.

ApproxCount属性并不是记录总数?
参考技术B

是不是应该这样写啊:

If Trim(乡村号.Text) = Trim(DataGrid1.Columns(i).Text) Then

追问

还是不行哦。
我在看别人的程序,乡村号是表中第一列的数据,DataGrid1.ApproxCount不是总行数吗?Columns是列的意思,所以我揣测为默认第一列,然后在item(i)里通过i的变化,逐行比较乡村号是否重复

追答

DataGrid1.ApproxCount这个的确是总行数  一般判断存不存在  用SQL 是正常的思路。如果这要按DataGrid1.Columns.Item(i).Text来判断 可以这样写

Dim sql As String
Dim a As Integer
 rst.CursorLocation = adUseClient
rst.Open "select * from 乡村 ", cnn
For i = 0 To rst.RecordCount - 1
Set DataGrid1.DataSource = rst
If Text1.Text = DataGrid1.Columns.Item(1).Text Then
MsgBox "该乡村号已使用,请重新输入"
Text1.Text = ""
Text1.SetFocus
rst.Close
Exit Sub
Else
rst.MoveNext
End If
Next
rst.Close

这样看起来很鸡肋啊


参考技术C 晕。这样判断会死人的
建议:写个sql直接判断这个张村号是否存在!

VB中dbgrid控件的用法

怎么只有一行 我想要多行多列 该怎么办

1.DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。

2.在运行时,可以在程序中切换 DataSource 来察看不同的表,或者可以修改当前数据库的查询,以返回一个不同的记录集合。

注意 DataGrid 控件与 Visual Basic 5.0中的 DBGrid 是代码兼容的,除了一个例外:DataGrid 控件不支持 DBGrid 的“解除绑定模式”概念。DBGrid 控件包括在 Visual Basic 的 Tools 目录中。

可能的用法
查看和编辑在远程或本地数据库中的数据。

与另一个数据绑定的控件(诸如 DataList 控件)联合使用,使用 DataGrid控件来显示一个表的记录,这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。
3.使用 DataGrid 控件的设计时特性

可以不编写任何代码,只通过使用 DataGrid 控件的设计时特性来创建一个数据库应用程序。下面的说明概要地说明了在实现 DataGrid 控件的典型应用时的一般步骤。完整的循序渐进的指示,请参阅主题“DataGrid 方案1: 使用 DataGrid 控件创建一个简单数据库应用程序”。

要在设计时实现一个 DataGrid 控件

1. 为要访问的数据库创建一个 Microsoft 数据链接 (.MDL) 文件。请参阅“创建 Northwind OLE DB 数据链接”主题,以获得一个示例。

2. 在窗体上放置一个 ADO Data 控件,并将其 ConnectionString 属性设置为在第 1 步中所创建的OLE DB 数据源。

3. 在这个 Ado Data 控件的 RecordSource 属性中输入一条将返回一个记

录集的 SQL 语句。例如,Select * From MyTableName Where CustID = 12

4. 在窗体上放置一个 DataGrid 控件,并将其 DataSource 属性设置为这个 ADO Data 控件。

5. 右键单击该 DataGrid 控件,然后单击“检索字段”。

6. 右键单击该 DataGrid 控件,然后单击“编辑”。

7. 重新设置该网格的大小、删除或添加网格的列。

8. 右键单击该 DataGrid 控件,然后单击“属性”。

9. 使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为。

在运行时更改显示的数据

在创建了一个使用设计时特性的网格后,也可以在运行时动态地更改该网格的数据源。下面介绍实现这一功能的通常方法。

更改 DataSource 的RecordSource

更改所显示的数据的最通常方法是改变该 DataSource 的查询。例如,如果DataGrid 控件使用一个ADO Data控件作为其 DataSource,则重写RecordSource和刷新该ADO Data 控件都将改变所显示的数据。

' ADO Data 控件连接的是 Northwind 数据库的' Products 表。新查询查找所有

' SupplierID = 12 的记录。

Dim strQuery As String

strQuery = "SELECT * FROM Suppliers WHERE SupplierID = 12"

Adodc1.RecordSource = strQuery

Adodc1.Refresh

更改 DataSource

在运行时,可以将 DataSource 属性重新设置为一个不同的数据源。例如,您可能具有若干个 ADO Data 控件,每个控件连接不同的数据库,或设置为不同的 RecordSource 属性。可以简单地将 DataSource 从一个 ADO Data控件重新设置为另一个 ADO Data 控件:

' 将 DataSource 重新设置为一个连接到 Pubs 数据库的、

' 使用 Authors 表的 ADO Data 控件。

Set DataGrid1.DataSource = adoPubsAuthors

重新绑定 DataSource

当将 DataGrid 控件用于一个远程数据库,诸如 SQLServer 时,可以改变表的结构。例如,可以给这个表添加一个字段。在这种情形下,可以调用Rebind 方法根据新的结构来重新创建该网格。注意,如果已经在设计时改变了这个列的布局,DataGrid 控件将会试图重新创建当前的布局,包括任何空的列。不过,通过首先调用 ClearFields 方法,可以强制该网格重新设置所有的列。
从 DataGrid 返回值

在 DataGrid 被连接到一个数据库后,可能想要监视用户单击了哪一个单元。可以使用 RowColChange 事件——而不是 Click 事件。如下所示:

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)

' 显示用户所单击的单元的文字、行和列的信息。

Debug.Print DataGrid1.Text; DataGrid1.Row; DataGrid1.Col

End Sub
使用 CellText 和 CellValue 方法

当一个列使用 NumberFormat 属性设置格式后,CellText 和 CellValue 属性是很有用的。NumberFormat 属性不必更改实际的数据格式就可以更改任何包含数字的列的格式。例如,给定一个网格,其中包含一个名为 ProductID的、包含整数的列。下面的代码将使 DataGrid 以"P-0000" 的格式来显示数据。换句话说,尽管在 ProductID 字段中所包含的实际数值为 "3",但该网格所显示的值将是 "P-0003"。

Private Sub Form_Load()

DataGrid1.Columns("ProductID").NumberFormat = "P-0000"

End Sub

要返回数据库中所包含的实际值,应使用 CellValue 方法,如下所示:

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)

Debug.Print _

DataGrid1.Columns("ProductID").CellValue(DataGrid1.Bookmark)

End Sub
参考技术A RowColChange 事件 在当前单元改变为一个不同的单元时该事件发生。语法Private Sub object_RowColChange ([index As Integer, lastrow As String, lastcol As Integer])RowColChange 事件语法包括下列部分:部分描述object一个对象表达式,其值是“应用于”列表中的一个对象。index一个整数,用来唯一地标识一个在控件数组中的控件。lastrow(用于 DataGrid 控件)是一个字符串表达式,它用来指定前一行的位置。lastcol(用于 DataGrid 控件)是一个整数,它用来指定前一列的位置。
说明无论何时,只要单击当前单元以外的任何一个单元,或在一个选择中用 Col 和 Row 属性有计划地改变当前单元时,此事件都会发生。SelChange 事件也会在单击一个新单元时发生,却不会在不改变当前单元的前提下对所选范围作有计划的改变时发生。对 DataGrid 控件来说,当前单元的位置是由 Bookmark 和 ColIndex 属性提供的。前一个单元位置由 lastrow 和 lastcol 指定。如果对数据进行编辑然后将当前单元位置移动到一个新行,则对原有行的更新事件在另一个单元成为当前单元之前完成。你的QQ留下来.....

以上是关于vb中datagrid控件的使用方法有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

VB中dbgrid控件的用法

在VB里怎么添加DataGrid控件

在VB中如何插入datagrid控件?

vb中datagrid控件怎么更新?

VB datagrid控件怎么设置列宽

vb DataGrid控件 如何加一列CheckBox控件?