vb中mshflexgrid和datagrid的区别.doc_第1页
vb中mshflexgrid和datagrid的区别.doc_第2页
vb中mshflexgrid和datagrid的区别.doc_第3页
vb中mshflexgrid和datagrid的区别.doc_第4页
vb中mshflexgrid和datagrid的区别.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

vb中mshflexgrid和datagrid的区别msflexgrid 是老版本的,不能用ADOmshflexgrid是新版本的,可以用ADO,而且还能做合并单元格之类的,功能强,但非常复杂,datagrid 可以实现普通的表格,而且几乎不用编程,最简单,当然功能没有上一个强.mshflexgrid 是一个纯 sheet 的表格DataGrid和另外两个控件最大的区别在于DataGrid允许用户修改数据,而另外两个不允许。如果你要用户修改数据,你应该使用DataGrid。如果只是显示数据,应该使用MSFlexGrid 或者 MSHFlexGrid,因为这两个控件显示的选项更多,更好看。而MSFlexGrid和MSHFlexGrid之间的区别,主要是MSHFlexGrid支持绑定ADODC控件,而MSFlexGrid只支持Data控件。MSFlexGrid引用方法:工程-部件-Microsoft FlexGrid Control 6.0MSHFlexGrid引用方法:工程-部件-Microsoft Hierarchical FlexGrid Control 6.0MSHFlexGrid 控件的一个主要特性是它能显示层次结构记录集以层次结构方式显示的关系表。创建层次结构记录集的最容易的方法是使用数据环境设计器并把 MSHFlexGrid 控件的 DataSource 属性赋给数据环境。您也可以用 Shape 命令作为 ADO Data Control 的 RecordSource 在代码中创建层次结构记录,如下面的示例: 创建 ConnectionString.Dim strCn As StringstrCn = Provider=MSDataShape.1;Data Source=Nwind; & _Connect Timeout=15;Data Provider=MSDASQL 创建 Shape 命令.Dim strSh As StringstrSh = SHAPE SELECT * FROM Customers AS Customers & _APPEND (SELECT * FROM Orders AS Orders RELATE & _CustomerID TO CustomerID) AS Orders 把 ConnectionString 赋给 ADO Data Control 的 ConnectionString 属性, Shape 命令以及 控件的 RecordSource 属性.With Adodc1 .ConnectionString = strCn .RecordSource = strShEnd With 把 HflexGrid 控件的 DataSource 属性设置到 ADO Data 控件。Set HFlexGrid1.DataSource = Adodc1DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了 DataGrid 控件的 DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。在运行时,可以在程序中切换 DataSource 来察看不同的表,或者可以修改当前数据库的查询,以返回一个不同的记录集合。注意 DataGrid 控件与 Visual Basic 5.0中的 DBGrid 是代码兼容的,除了一个例外:DataGrid 控件不支持 DBGrid 的“解除绑定模式”概念。DBGrid 控件包括在 Visual Basic 98 的 Tools 目录中。可能的用法查看和编辑在远程或本地数据库中的数据。与另一个数据绑定的控件(诸如 DataList 控件)联合使用,使用 DataGrid 控件来显示一个表的记录,这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。 使用 DataGrid 控件的设计时特性可以不编写任何代码,只通过使用 DataGrid 控件的设计时特性来创建一个数据库应用程序。下面的说明概要地说明了在实现 DataGrid 控件的典型应用时的一般步骤。完整的循序渐进的指示,请参阅主题“DataGrid 方案1: 使用 DataGrid 控件创建一个简单数据库应用程序”。要在设计时实现一个 DataGrid 控件 为您希望访问的数据库创建一个 Microsoft 数据链接 (.UDL) 文件。请参阅“创建 Northwind OLE DB 数据链接”主题,以获得一个示例。在窗体上放置一个 ADO Data 控件,并将其 ConnectionString 属性设置为在第 1 步中所创建的OLE DB 数据源。在这个 Ado Data 控件的 RecordSource 属性中输入一条将返回一个记录集的 SQL 语句。例如, Select * From MyTableName Where CustID = 12在窗体上放置一个 DataGrid 控件,并将其 DataSource 属性设置为这个 ADO Data 控件。右键单击该 DataGrid 控件,然后单击“检索字段”。右键单击该 DataGrid 控件,然后单击“编辑”。重新设置该网格的大小、删除、或添加网格的列。右键单击该 DataGrid 控件,然后单击“属性”。使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为。 在运行时更改显示的数据在创建了一个使用设计时特性的网格后,也可以在运行时动态地更改该网格的数据源。下面介绍实现这一功能的通常方法。更改 DataSource 的RecordSource更改所显示的数据的最通常的方法是改变该 DataSource 的查询。例如,如果 DataGrid 控件使用一个 ADO Data 控件作为其 DataSource,则重写 RecordSource、刷新该 ADO Data 控件、都将改变所显示的数据。 ADO Data 控件连接的是 Northwind 数据库的 Products 表。新查询查找所有 SupplierID = 12 的记录。Dim strQuery As StringstrQuery = SELECT * FROM Suppliers WHERE SupplierID = 12Adodc1.RecordSource = strQueryAdodc1.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.ColEnd Sub使用 CellText 和 CellValue 方法当一个列使用 NumberFormat 属性设置格式后,CellText 和 CellValue 属性是很有用的。NumberFormat 属性不必更改实际的数据的格式就可以更改任何包含数字的列的格式。例如,给定一个网格,其中包含一个名为 ProductID 的、包含整数的列。下面的代码将使 DataGrid 以P-0000 的格式来显示数据。换句话说,尽管在 ProductID 字段中所包含的实际数值为 3,但该网格所显示的值将是 P-0003。Private Sub Form_Load() DataGrid1.Columns(ProductID).NumberFormat = P-0000End Sub要返回数据库中所包含的实际值,应使用 CellValue 方法,如下所示:Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) Debug.Print _ DataGrid1.Columns(ProductID).CellValue(DataGrid1.Bookmark)End Sub注意 上面所用的 CellValue 和下面所用的 CellText 值,都需要将 bookmark 属性作为一个参数,功能才正确。相反地,如果要返回该字段的格式化的值,应使用 CellText 方法:Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) Debug.Print _ DataGrid1.Columns(ProductID).CellText(DataGrid1.Bookmark)End Sub注意 上面的 CellText 方法等价于使用 DataGrid 控件的 Texr 属性。现成本系统已用DataGrid显示数据了.我想只从DataGrid取数据就可以了.发现不是那么简单了.Rows笔据取不到. 用 grid .VisibleRows 只能取显示的行数.行不通. 又想到分页.方法如下: if Kgrid .VisibleRows then grid.Scroll 0, grid .VisibleRows K=0 end if grid.row=k这样存在一个问量,每下一页,就grid .VisibleRows+1的数据取不到,不知道什么原因,也不去研究了.后来就用以下的方法了.增加一个类模块:clsComm 代码如下:Public Function ExpFromGrid(ByVal grid As DataGrid, ByVal adors As ADODB.Recordset, ByVal path As String, ByVal title As String) As Boolean 'On Error Resume Next Dim exlApp As Excel.Application Dim ExlBook As Excel.Workbook Dim ExlSheet As Excel.Worksheet Dim tRow, tCol As Integer '-保存文件' On Error GoTo OnErr Set exlApp = New Excel.Application With exlApp .Visible = False .SheetsInNewWorkbook = 1 End With Set ExlBook = exlApp.Workbooks.Add Set ExlSheet = ExlBook.Worksheets(1) With ExlSheet .Name = title .Cells(1, 1) = title .Cells(2, 1) = 序号 For tCol = 0 To grid.Columns.Count - 1 .Cells(2, 2 + tCol) = grid.Columns.Item(tCol).Caption Next tCol adors.MoveFirst tRow = 0 Do While Not adors.EOF .Cells(2 + tRow + 1, 1) = tRow + 1 For tCol = 0 To grid.Columns.Count - 1 .Cells(2 + tRow + 1, 2 + tCol) = adors(grid.Columns.Item(tCol).DataField) Next tCol' k = k + 1' If k grid.VisibleRows + 1 Then' grid.Scroll 0, grid.VisibleRows' k = 0' End If tRow = tRow + 1 adors.MoveNext Loop .Columns.AutoFit .Range(.Cells(1, 1), .Cells(1, tCol + 1).MergeCells = True .rows(1).RowHeight = 30 .rows(1).Font.Bold = True .rows(2).Font.Bold = True .Range(.Cells(2, 1), .Cells(2, tCol + 1).Interior.ColorIndex = 34 .Range(.Cells(1, 1), .Cells(tRow + 2, tCol + 1).HorizontalAlignment = xlCenter .Range(.Cells(1, 1), .Cells(tRow + 2, tCol + 1).Borders.LineStyle = xlContinuous End With exlApp.ActiveWorkbook.SaveAs path exlApp.ActiveWorkbook.Saved = True exlApp.Quit MsgBox 导出完成!, vbInformation, 提示 ExpFromGrid = True Exit Function OnErr: exlApp.ActiveWorkbook.Saved = True exlApp.Quit MsgBox 导出失败!, vbCritical, 错误 ExpFromGrid = False End FunctionPublic Function ExportFromMSFlex(ByVal MsFlex As MSHFlexGrid, ByVal path As String, ByVal title As String)On Error Resume Next Dim exlApp As Excel.Application Dim ExlBook As Excel.Workbook Dim ExlSheet As Excel.Worksheet Dim tRow, tCol As Integer '-保存文件On Error GoTo OnErr Set exlApp = New Excel.Application With exlApp .Visible = False .SheetsInNewWorkbook = 1 End With Set ExlBook = exlApp.Workbooks.Add Set ExlSheet = ExlBook.Worksheets(1) With ExlSheet .Name = title .Cells(1, 1) = title For tRow = 0 To MsFlex.rows - 1 If tRow = 0 Then .Cells(2, 1) = 序号 Else .Cells(2 + tRow, 1) = tRow End If For tCol = 0 To MsFlex.Cols - 1 .Cells(2 + tRow, 2 + tCol) = MsFlex.TextMatrix(tRow, tCol) Next tCol Next tRow .Columns.AutoFit .Range(.Cells(1, 1), .Cells(1, tCol + 1).MergeCells = True .rows(1).RowHeight = 30 .rows(1).Font.Bold = True .rows(2).Font.Bold = True .Range(.Cells(2, 1), .Cells(2, tCol + 1).Interior.ColorIndex = 34 .Range(.Cells(1, 1), .Cells(tRow + 1, tCol + 1).HorizontalAlignment = xlCenter .Range(.Cells(1, 1), .Cells(tRow + 1, tCol + 1).Borders.LineStyle = xlContinuous End With exlApp.ActiveWorkbook.SaveAs path exlApp.ActiveWorkbook.Saved = True exlApp.Quit MsgBox 导出完成!, vbInformation, 提示 Exit Function OnErr: exlApp.ActiveWorkbook.Saved = True exlApp.Quit MsgBox 导出失败!, vbCritical, 错误End Function然后用以下方法调用: On Error Resume Next Dim clsExport As New clsComm Dim adors As New ADODB.Recordset Dim path As String Dim title As String title = 差异数据( & Format(Me.DtpOptDate, YYYYMM) & ) With Me.CommonDialog1 .CancelError = True .DialogTitle = 保存文件 .FileName = title & Format(Date, YYYY-MM-DD) .Filter = Xls(*.Xls)|*.xls .Flags = cdlOFNCreatePrompt + cdlOFNHideReadOnly .ShowSave End With If Err = cdlCancel Then Exit Sub End If Me.cmdExport.Enabled = False path = Me.CommonDialog1.FileName Set adors = Me.AdoErrBalance.Recordset Call clsExport.ExpFromGrid(Me.dgdErrExpData, adors, path, title) adors.Close Me.cmdExport.Enabled = True 标签: VB 、 DataGrid 、 MSHFlexGrid 、 导出Excel 分类: VB 应用心得1)MSHFlexGrid控件与MSFlexGrid控件的异同MSHFlexGrid控件与Adodc控件绑定,MSFlexGrid控件与Data控件绑定。2)MSHFlexGrid控件的应用如果记录集已经在程序中产生,则可以不与Adodc控件绑定,直接在MSHFlexGrid控件中显示数据,并且可以根据需要设置控件中行的颜色,Public Function DataGrid_Update() As Boolean On Error GoTo DataGrid_Update_Err Dim orarsRecordset As Object Dim adorsRecordset As New ADODB.Recordset Dim lngDateDiff As Long Call gGetData(CONST_GENERALTABLE_TIMEOUT_INFO, orarsRecordset) If Not ADO_DataBaseOpen(dskAttr, 1) Then DataGrid_Update = False Exit Function End If adorsRecordset.CursorLocation = adUseClient Call adorsRecordset.Open(CONST_VEHICLETABLE_RECORDSET_QUERIED, _ mobjDataSource.ConnectionString, , , adCmdText) frmShowNewData.grdSaiShin.ColWidth(0) = 800 frmShowNewData.grdSaiShin.ColWidth(1) = 2000 frmShowNewData.grdSaiShin.AllowUserResizing = flexResizeColumns Set frmShowNewData.grdSaiShin.DataSource = adorsRecordset Dim i As Integer i = 0 i = i + 1 While Not adorsRecordset.EOF lngDateDiff = DateDiff(n, adorsRecordset.Fields(?位日?), Now) If lngDateDiff orarsRecordset.Fields(GEN_V_NUM).Value Then frmShowNewData.grdSaiShin.Row = i Dim j As Integer For j = 0 To frmShowNewData.grdSaiShin.Cols - 1 frmShowNewData.grdSaiShin.Col = j frmShowNewData.grdSaiShin.CellBackColor = &H80FFFF Next End If i = i + 1 adorsRecordset.MoveNext Wend Call ADO_DataBaseClose DataGrid_Update = True Exit FunctionDataGrid_Update_Err: Call ADO_DataBaseClose DataGrid_Update = FalseEnd Functiondatagrid因为和数据库直接进行了绑定,如果频繁修改数据,用它比较好。MSHFlexGrid主要用来浏览数据,可灵活的设置数据显示的格式。其它两个我就很少用了。在分页显示记录中需要显示当前记录也数据,而显示记录页数据有两种方法: 方法一:使用DataGrid控件;DataGrid控件可显示记录集中的全部数据,所以不能直接将分页的记录集绑定到DataGrid控件,需要先将当前记录页中的记录复制到一个新的记录集中,再将其绑定到DataGrid控件,便可显示当前记录也数据。 方法二:使用MSFlexGrid控件;其可在设计时将其绑定到Data控件,在运行时,则可通过设置控件的TextMatrix属性来显示数据。 那么它们到底有什么区别呢? 1,MSFlexGrid控件比较灵活 因为其有TextMatrix属性(设置和返回控件任意单元格的文本内容),所以在做显示数据时,直接可通过循环在其中填充数据(数据有灵活性,可填充一部分,也可全部填充,所以分页显示效果较容易实现)。 下面是它在分页中的代码: MSFlexGrid1.Clear 清除原有数据 通过循环在TextMatrix属性中填充数据 For I = 0 To objRs.Fields.Count - 1 MSFlexGrid1.TextMatrix(0, I) = objRs.Fields(I).Name Next For I = 1 To objRs.PageSize For J = 0 To objRs.Fields.Count - 1 MSFlexGrid1.TextMatrix(I, J) = objRs.Fields(J) Next objRs.MoveNext If objRs.EOF Then Exit For Next 而DataGrid控件是显示记录集中的全部数据,所以在做分页显示时,需要先将需要显示的部分拷贝到一个新的记录集中,然后再通过DataGrid控件显示该(新)记录集中的全部数据,所以做法较为死板。 例如它在分页显示时的代码: 创建一个新的空记录集 For intRecord = 0 To objRs.Fields.Count - 1 objDataSource.Fields.Append objRs.Fields(intRecord).Name, adVarChar, objRs.Fields(intRecord).DefinedSize Next将需要显示的部分拷贝到一个新的记录集中 For intRecord = 1 To objRs.PageSize 将objRs当前记录页中数据写入objDataSource objDataSource.AddNew objDataSource!用户名 = objRs!用户名 objDataSource!口令 = objRs!口令 objDataSource!身份 = objRs!身份 objRs.MoveNext If objRs.EOF Then Exit For Next 通过DataGrid控件显示该(新)记录集中的全部数据 Set DataGrid1.DataSource = objDataSource 2,MSFlexGrid控件显示效果好 MSFlexGrid控件的网格中可以包含字符串和图片,并且它提供了高度灵活的网格排序、合并和格式设置功能,因此它可以设计出非常漂亮且实用的界面。 而DataGrid只有基本的显示数据的功能,相对MSFlexGrid来说就比较乏味。DataGrid控件:显示并允许对Recordset对象中代表记录和字段的一系列行和列进行数据操纵。MSFlexGrid控件:MicrosoftFlexGrid(MSFlexGrid)控件可以显示网格数据,也可以对其进行操作。它提供了高度灵活的网格排序、合并和格式设置功能,网格中可以包含字符串和图片。如果将它绑定到一个Data控件上,那么MSFlexGrid显示的将是只读的数据。DataGrid控件对于查询出来的数据集进行显示。如果需要一些比如合并单元格经行显示的时候,就不太好实现了。MSFlexGrid控件比较灵活,可以实现一些DataGrid不能变现出的样式。MSFlexGrid控件,可以通过行列的方式,操作每一个单元格显示的内容。 DBGrid是专用来操作数据库的网格控件,可以绑定到Data控件,几乎不用写代码就可方便地对数据进行显示,增加、删除或修改记录,DBGrid具有OnAddNew、BeforeDelete等事件,可在增加新记录或删除修改时对数据进行有效性检验,来实现事务处理功能。DBGrid也可以在设计时编辑网格格式,指定显示字段等,由于它提供了Column、Split、SelBookmarks等对象,更增强了显示和操作数据的能力。 由于具有良好的可靠性,灵活性和直观性,所以DBGrid控件现在被广泛使用。但不足之处在于DBGrid直接操作数据库,对数据库的正确性有一定的威胁。改进方法是,在修改数据库时,加入提示信息。DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了 DataGrid 控件的 DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。在运行时,可以在程序中切换 DataSource 来察看不同的表,或者可以修改当前数据库的查询,以返回一个不同的记录集合。注意 DataGrid 控件与 Visual Basic 5.0中的 DBGrid 是代码兼容的,除了一个例外:DataGrid 控件不支持 DBGrid 的“解除绑定模式”概念。DBGrid 控件包括在 Visual Basic 98 的 Tools 目录中。在vb中adodc控件和data控件有什么区别?ADO Data 控件ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLEDB 规范的数据源。使用 Visual Basic 的类模块也可以很方便地创建子集的数据提供者。尽管可以在应用程序中直接使用 ActiveX 数据对象,但 ADO Data 控件有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使您可以用最少的代码创建数据库应用程序。图 7.4 ADO Data 控件在 Visual Basic 的“工具箱”中不少控件都可以作为数据绑定的控件,包括复选框、组合框、图像、标签、列表框、图片框、以及文本框控件等。此外,Visual Basic 还包括了若干种数据绑定的 ActiveX 控件,诸如 DataGrid、DataCombo、Chart、以及 DataList 控件等。用户也可以创建自己的数据绑定的 ActiveX 控件,或从其他开发商购买控件。Visual Basic以前的版本提供了内在的 Data 控件和 Remote Data 控件 (RDC) 来进行数据访问。这两种控件仍包括在 Visual Basic 中,以提供向后兼容。不过,因为 ADO 的适应性更广,因此建议用户使用 ADO Data 控件来创建新的数据库应用程序。详细信息 关于数据绑定的控件的完整列表位于“绑定到 ADO Data 控件的控件”中。要了解如何使用这些内在的Data 控件或 Remote Data 控件,请参阅“使用 Data 控件”或“使用 Remote Data 控件”。关于创建数据提供者的详细信息,请参阅“创建数据识别类”。可能的用法连接一个本地数据库或远程数据库。打开一个指定的数据库表,或定义一个基于结构化查询语言 (SQL) 的查询、或存储过程、或该数据库中的表的视图的记录集合。将数据字段的数值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值。添加新的记录,或根据对显示在绑定的控件中的数据的任何更改来更新一个数据库。 要创建一个客户、或前端数据库应用程序,应在窗体中添加 ADO Data 控件,以及其它所需要的任何 Visual Basic 控件。可以根据您的需要在窗体中放置多个 ADO Data 控件。不过,请注意,这种控件是一种相当“昂贵”的创建连接的方法,应在第一个控件至少有两个连接,且以后的每个控件至少多一个连接时使用。 用最少的代码创建一个前端数据库应用程序通过在设计时设置一些属性,可以用最少的代码来创建一个数据库应用程序。如果正在使用OLE DB 数据源,则相应的Microsoft 数据链接名称(Data Link Name)(.MDL) 必须是在您的机器上创建的。请参阅“创建 Northwind 的OLE DB Data Link”,以获得一个循序渐进的示例。要创建一个简单的前端数据库应用程序 窗体上放置一个 ADO Data 控件。(该图标的工具提示为 ADODC。) 如果该控件不在“工具箱”中,请按 CTRL+T 键,显示“部件”对话框。在这个“部件”对话框中,单击“Microsoft ADO Data Control”。 在“工具箱”中,单击选定“ADO 数据控件”。然后按 F4 键显示“属性”窗口。在“属性”窗口中,单击“ConnectionString”显示“ConnectionString”对话框。如果您已经创建了一个 Microsoft 数据链接文件(Data Link file)(.UDL),请选择“使用 OLE DB 文件”并单击“浏览”,以找到计算机上的文件。如果使用 DSN,则单击“使用 ODBC 数据源名”,并从框中选择一个 DSN,或单击“新建”创建一个。如果想创建一个连接字符串,请选择“使用 ConnectionString”,单击“生成”,然后使用“数据链接属性”对话框创建一个连接字符串。在创建连接字符串后,单击“确定”。ConnectionString 属性将使用一个类似于下面这一行的字符串来填充: driver=SQL Server;server=bigsmile;uid=sa;pwd=pwd;database=pubs在“属性”窗口中,将“记录源”属性设置为一个 SQL 语句。例如: SELECT * FROM Titles WHERE AuthorID = 72在访问一个表时,应始终包括一个 WHERE 子句。如果这样做失败,则会锁定整个表,这样对其他用户将是一个严重的障碍。在窗体上再放置一个“文本框”控件,用来显示数据库信息。在其“属性”窗口中,将 Text1 的“数据源”属性设为 ADO Data 控件的名称 (ADODC1)。这样就将这个文本框和 ADO Data 控件绑定在一起。在其“属性”窗口中,单击“数据字段”将下拉得到一个可用的字段列表。单击所要显示的字段的名称。对希望访问的其它每个字段重复第 6、7、8 步。 按 F5 键运行该应用程序。用户可以在 ADO Data 控件使用四个箭头按钮,从而允许用户地到达数据的开始、记录的末尾、或在数据内从记录移动到另一个记录。 在程序中设置 ConnectionString、Source、DataSource、以及 DataField 下面的代码演示了如何在程序中设置这四个属性。注意设置 DataSource 属性要使用 Set 语句。 Private Sub Form_Load() With ADODC1 .ConnectionString = driver=SQL Server; & _ server=bigsmile;uid=sa;pwd=pwd;database=pubs . RecordSource = Select * From Titles Where AuthorID = 7 End With Set Text1.DataSource = ADODC1 Text1.DataField = TitleEnd SubADO Data 控件的事件ADO Data 控件提供了若干个可以编程的事件。下表说明了这些事件及其何时产生,不过这个表不是一个关于这些事件何时发生的所有条件的完整列表。更完整的信息,请参阅各个事件的参考主题。详细信息 如果试图循序渐进地使用 ADO Data 控件,请参阅“使用 DataGrid 和 ADO 数据控件创建一个简单的数据库应用程序”,“ 创建一个简单的 DataCombo 应用程序”,以及“创建一个连接 DataList 控件的 DataGrid”。Data 控件 使用三种类型的 Recordset 对象中的任何一种来提供对存储在数据库中数据的访问。Data 控件允许从一个记录移动到另一个记录,并显示和操纵来自被连结的控件的记录的数据。如果没有 Data 控件或等价的数据源控件,比如 RemoteData 控件,窗体上的被连结数据觉察控件不能自动访问数据。语法Data说明可以使用 Data 控件来执行大部分数据访问操作,而根本不用编写代码。与 Data 控件相连结的数据觉察控件自动显示来自当前记录的一个或多个字段的数据,或者,在某些情况下,显示来自当前记录旁边的一个记录集合中的一个或者多个字段中的数据。Data 控件在当前记录上执行所有操作。 如果 Data 控件被指示移动到一个不同的记录,则所有被连结的控件自动把当前记录的任何改变传递给 Data 控件以保存在数据库中。Data 控件移动到被指定的记录,同时把当前记录中的数据传回被连结的控件,并在那里显示。Data 控件自动处理一些意外事件包括空记录集,添加新记录,编辑和更新现有记录,处理某些类型的错误。然而,在更复杂的应用程序里,则需要捕获 Data 控件不能处理的某些错误类型。例如,当 Microsoft Jet 数据库引擎访问数据文件有问题、没有权限或不能按照代码执行查询

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论