当前位置:编程学习 > VB >>

关于DATACOMBO控件中与数据相关的各个属性的用法的问题。

--------------------编程问答--------------------
引用楼主 pcbxiao 的回复:
如上图,DATACOMBO中各个与数据相关的属性,可否给个明确的说明。谢谢大家。

补充一下问题:
1、databindings和boundcolumn 不重复吗?
2、rowmember 和 datamember 有什么用,可否给两个具体的用法的例子。

谢谢大家。 --------------------编程问答-------------------- 看不到图

贴图方法 --------------------编程问答-------------------- 使用 DataCombo 和 DataList 控件

    DataCombo 和 DataList 控件与标准列表框和组合框控件极为相似,但有一些重要的不同之处,这种不同使这两个控件在数据库应用程序中具有极大的适应性和用武之地。这两个控件都可以被这些控件所绑定的数据库字段自动填充。此外,它们还能有选择地将一个选定的字段传递给第二个数据控件,从而适合用于创建“查找表”应用程序。
    可能的用法
    1.在一个关系数据库中,使用一个表的数据来提供要输入给第二个(相关的)表值。例如,在一个存货清单数据库中,供应商的名称存储在一个表中,每个供应商都有一个唯一的标识符。另一个显示产品的表则使用这些标识符来表明是哪个供应商供应的该产品。可以使用 DataList 控件来显示供应商的名称,而(不可见地)将供应商的标识符提供给产品表。
    2.允许用户通过从一个下拉列表中选择一种标准来缩小搜索范围。例如,一个销售报告的数据库应用程序可以使用一个 DataList 控件让用户选择一个州 (State) 或一个销售区域。一旦作出选择,则该选择项将自动传递给第二个数据控件,这个控件负责查找选定区域的销售记录。
    与它们对应的内在控件一样,DataList 和 DataCombo 控件之间的主要不同在于 DataCombo 控件提供了一个可以在其中编辑内容的文本框。
    详细信息 有关 DataList 和 DataCombo 控件连接数据库表能力的说明,请参阅“使用 DataCombo 和 DataList 控件连接两个表”。 要创建一个简单的使用链接表的数据库应用程序,请参阅“创建一个简单的 DataCombo 应用程序”。

    值得注意的控件属性
    DataList 和 DataCombo 控件的一些重要属性包括:
 
    注意 DataCombo 控件的 DataFormat 属性是一个 Extender 属性。因此在属性表上它总是可见的,并且可以在代码中设置。然而,DataCombo 控件仅对其列表中最上端的项格式化。对于看到已格式化的顶端项的最终用户来说,这一点可能不太重要,只要从未格式化的列表中选择即可。已格式化的项可能也会误导最终用户,使他们以为项目要在格式化之后再输入数据库。由于这些原因,建议在使用 DataCombo 控件时不要设置 DataFormat 属性。
    详细信息 如果要使用一个演示 BoundText 属性用法的循序渐进教程,请参阅“创建一个连接 DataList 控件的 DataGrid”。关于这些控件的属性和方法的完整列表,请参阅“DataList 控件”和“DataCombo 控件”。

    使用 DataCombo 和 DataList 控件连接两个表
    DataCombo 和 DataList 控件与众不同的特性是具有访问两个不同的表,并且将第一个表的数据链接到第二个表的某个字段的能力。这是通过使用两个数据源完成的(诸如 ADO Data 控件或Data环境)。

    关系表和“不友好的”值
    在一个关系数据库中,对于重复使用的信息并不是在多个地方都保存其全部的信息。大多数这种信息都保存在由多个字段组成的一个记录集中;在这些字段中有一个“标识符”字段来唯一地标识这个记录集。例如,VisualBasic 提供的 Biblio 数据库在一个名为 "Publishers" 的表中存储了若干个出版公司的名称。这个表包括很多字段,诸如地址、城市、邮政编码以及电话号码等。但是为了简单起见,只考虑这个表的两个本质字段 Name 和PubID 字段。Name 字段存储一个出版商的名称,而 PubID 字段则存储一个相对“不友好的”值,如一个数或代码。但这个不友好的值是很重要的,因为这个值唯一地标识该出版商,并且可以作为一种链接整个记录集的手段。此外,这个值会存储在第二个表中的多个记录集中。
    第二个表的名称为 "Titles",其每个记录集包含的信息包括标题、出版年份、国际标准书号 ISBN 等。在这些字段中有一个字段的名称就是 "PubID"。这个字段的名称与 Publishers 表中的相应字段的名称相同,因为这个字段存储了将该标题和一个特定的出版商链接在一起的值。
    这种可行方案提出了一个小问题:给定一个允许用户插入新标题的数据库应用程序,用户必须用某种方法输入标识出版商的整数。如果用户能记住每个出版商的唯一标识符,那么也还是可行的,不过如果一方面用户能看到出版商的名称,另一方面存入应用程序的又是数据库中相应的值,则会显得更加方便。而 DataList 和 DataCombo 控件就可以轻松地解决这个问题。

    两个数据源、三个字段、无编码
    DataList 和 DataCombo 控件使用两个数据源来解决这个问题。在只显示出版商的名称(来自 Publishers 表)的同时,DataList 或 DataCombo 控件只将 PubID 字段的值写入到 Titles 表。通过“属性”窗口,将 RowSource设置为提供要写入的数据的数据源(即 Publishers 表)。然后将 DataSource属性设置为要写入数据的数据源(即 Titles 表)。最后,设置 DataField、ListField以及 BoundColumn 属性。下图演示了如何将两个数据源(以两个Data 控件的形式)以及三个字段指定给一个 DataCombo 控件:
 
简要而言,ListField 属性决定该控件所显示的是哪一个字段。在本例中就是出版商的名称。另一方面,BoundColumn 属性则决定 Publishers 表中由哪一个字段向 Title 表供应实际所需的值。注意 Publishers 表中的 PubID字段不能(也不应该)被编辑。相反,在 PubID 字段中的值将写入到由DataField 属性所指定的字段。在本例中,这个属性就是 Titles 表中的 PubID字段。
    下表概要地介绍这些属性及其使用方法。

    注意 DataList 和 DataCombo 控件也可以与单个数据控件一起使用。要实现这一点,可以将 DataSource 和 RowSource 属性设置为同一个数据控件,并且将 DataField 和 BoundColumn 属性设置为该数据控件的记录集中的同一个字段。在这种情形下,将使用 ListField 的值来填充该列表,且这些值来自于被更新的同一个记录集。如果指定了一个 ListField 属性,但没有设置 BoundColumn 属性,则 BoundColumn将自动被设置为 ListField 字段。

    详细信息 如果想使用 DataCombo 控件循序渐进地创建一个简单的数据库应用程序,请参阅“创建一个简单的 DataCombo 应用程序”。 

创建一个简单的 DataCombo 应用程序
    下面的示例使用 DataCombo 控件为 Northwind.mdb 示例数据库的 Titles表创建一个数据输入界面。这个输入界面使用户可以输入新的产品,并通过提供一个包括所有供应商名称的查找表将这些新产品指定到已有的供应商。当用户在输入窗体中要输入供应商字段的值时,他们可以从一个列表框中选择一个供应商。当他们选定一个供应商后,该供应商的 SupplierID 字段值就复制到 Products 表的 SupplierID 字段。
    要使用 DataCombo 控件来创建一个查找表
    1. 给 Northwind 数据库创建一个OLEDB 数据源。如果还没有创建数据源,请按照“创建 Northwind 的OLEDB 数据源”中的步骤进行。
    2. 在Visual Basic 中创建一个新的标准的 EXE 工程。如果DataGrid、DataCombo或ADO Data控件不在“工具箱”中,则右键单击“工具箱”,然后使用“部件”对话框来添加控件。
    3. 添加一个 DataCombo 控件、两个 ADO Data 控件以及一个 DataGrid 控件到窗体中。4. 在“属性”窗口中,如下表所示设置第一个数据控件 (Adodc1) 的属性。
    4. 在“属性”窗口中,如下表所示设置第一个数据控件 (Adodc1) 的属性。 
 
    5. 在“属性”窗口中,如下表所示设置第二个数据控件 (Adodc2) 的属性。
 
    6. 在“属性”窗口中,如下表所示设置 DataGrid 控件的属性。

    7. 在“属性”窗口中,如下表所示设置 DataCombo 控件的属性。
 
    8. 最后,将下述代码添加到该窗体的代码模块中: 
     Private Sub Form_Load()
       ' 在 DataGrid 控件中隐藏 SupplierID 字段,使用户
       ' 不会混淆到底该更改哪一个值。
     grdProducts.Columns("SupplierID").Visible = False
     End Sub
    9. 运行该工程。
    可以通过单击可视的 ADO Data 控件上的箭头来浏览记录集。如果这样做,DataCombo 控件将更新和显示每一个产品的供应商的名称。如果要编辑SupplierID 字段,则单击 DataCombo 控件的箭头来显示一个下拉列表,然后再单击一个不同的供应商,来改变写入到 SupplierID 字段的值。

http://www.qudong.com/soft/program/VB/vbjiaocheng/20080317/1236.html --------------------编程问答-------------------- 打酱油的~~~~~~~~`` --------------------编程问答-------------------- 操作数据库的一些实例之DataCombo控件的使用方法 --------------------编程问答-------------------- 请关键回答以下两个问题:

1、databindings和boundcolumn 不重复吗? 
2、rowmember 和 datamember 有什么用,可否给两个具体的用法的例子。  --------------------编程问答--------------------     
  下面的示例使用  DataCombo  控件为  Northwind.mdb  示例数据库的  Titles  表创建一个数据输入界面。这个输入界面使用户可以输入新的产品,并通过提供一个包括所有供应商名称的查找表将这些新产品指定到已有的供应商。当用户在输入窗体中要输入供应商字段的值时,他们可以从一个列表框中选择一个供应商。当他们选定一个供应商后,该供应商的  SupplierID  字段值就复制到  Products  表的  SupplierID  字段。  
    
  要使用  DataCombo  控件来创建一个查找表    
    
  给  Northwind  数据库创建一个OLEDB  数据源。    
  如果还没有创建数据源,请按照“创建  Northwind  的OLEDB  数据源”中的步骤进行。  
    
  在Visual  Basic  中创建一个新的标准的  EXE  工程。    
  如果“DataGrid”、“DataCombo”、或“ADO  Data”控件不在“工具箱”中,则右键单击“工具箱”,然后使用“部件”对话框来添加控件。  
    
  添加一个  DataCombo  控件、两个  ADO  Data  控件、以及一个  DataGrid  控件到窗体中。  
    
    
  在“属性”窗口中,如下表所示设置第一个数据控件  (Adodc1)  的属性。  属性  设置值    
  Name  AdoDataSource    
  ConnectionString  Northwind.udl    
  RecordSource  Select  *  From  Products;    
  Caption  Products    
    
    
  在“属性”窗口中,如下表所示设置第二个数据控件  (Adodc2)  的属性。  属性  设置值    
  Name  AdoRowSource    
  ConnectionString  Northwind.udl    
  RecordSource  Select  CompanyName,  SupplierID  From  Suppliers;    
  Caption  Suppliers    
  Visible  False    
    
    
  在“属性”窗口中,如下表所示设置  DataGrid  控件的属性。  属性  设置值    
  Name  GrdProducts    
  DataSource  AdoDataSource    
  Caption  Products    
    
    
  在“属性”窗口中,如下表所示设置  DataCombo  控件的属性。  属性  设置值    
  Name  DcbSuppliers    
  DataSource  AdoDataSource    
  DataField  SupplierID    
  RowSource  AdoRowSource    
  ListField  CompanyName    
  BoundColumn  SupplierID    
    
    
  最后,将下述代码添加到该窗体的代码模块中:    
  Private  Sub  Form_Load()  
  '  在  DataGrid  控件中隐藏  SupplierID  字段,使用户  
  '  不会混淆到底该更改哪一个值。  
  grdProducts.Columns("SupplierID").Visible  =  False  
  End  Sub  
    
  运行该工程。 --------------------编程问答-------------------- 谢谢,jhone99。但是,你能不能直接告诉我:

1、databindings和boundcolumn 不重复吗? 
2、rowmember 和 datamember 有什么用,他们和DATASOURCE ROWSOURCE不重复吗? --------------------编程问答-------------------- DATASOURCE 和 datamember 是一对
ROWSOURCE 和 rowmember 是一对

DATASOURCE、ROWSOURCE 对应记录集,datamember、rowmember 对应字段 --------------------编程问答-------------------- 9楼错误

用DataEnvironment绑定时

datasource\datamember\datafield  这是一个系列
DataEnvironment1\Command1\field1

rowsource\rowmember\listfield  这是一个系列
DataEnvironment1\Command2\field2

看这个对应关系能明白吗?



--------------------编程问答-------------------- boundcolumn 是rowmember决定

databindings可随意选定,甚至其他数据源,比如还有一个adodc,也可以选用

--------------------编程问答--------------------
引用 1 楼 pcbxiao 的回复:
1、databindings和boundcolumn 不重复吗?
2、rowmember 和 datamember 有什么用,可否给两个具体的用法的例子。

1)完全不一样的。
a)BoundColumn 表示 DataCombo 在 RowSource 提供的数据源(表格)中,用哪个字段作为绑定值的源(看下面的例子)。
'成绩表编辑画面,用 DataCombo 来选择学生。
Private Sub Form_Load()
    Adodc1.RecordSource = "SELECT 日期,课程,学生学号,成绩 FROM 成绩表"
    Adodc2.RecordSource = "SELECT 学号,姓名 FROM 学生表"
    
    Set DTPicker1.DataSource = Adodc1
    DTPicker1.DataField = "日期"
    
    Set Text1.DataSource = Adodc1
    Text1.DataField = "课程"
    
    Set DataCombo1.DataSource = Adodc1
    DataCombo1.DataField = "学生学号"   '成绩表的被编辑字段'
    Set DataCombo1.RowSource = Adodc2
    DataCombo1.ListField = "姓名"       '学生表的显示字段'
    DataCombo1.BoundColumn = "学号"     '学生表用来关联更新成绩表的字段'
    
    Set Text2.DataSource = Adodc1
    Text2.DataField = "成绩"
End Sub

b)数据源的记录用 DataField、BoundColumn 等指出记录集中哪个字段进行了绑定,但是控件不可能都象 TextBox 一样总是用 Text 属性进行绑定,这就需要用 DataBindings 来指出绑定的目标(比如 DataPicker.Value、DataCombo.BoundText)。

2)在数据对象模型中,除了象 ADODC 这类只提供一个记录集的对象可以作为数据源,还可以将包含多个记录集的对象作为数据库,那么用这个对象中的哪个记录集,就需要用 RowMember、DataMember 来指明了,可以看 MSDN 中的“BindingCollection对象、DataMembers集合示例”。
--------------------编程问答-------------------- 2、rowmember 和 datamember 有什么用,他们和DATASOURCE ROWSOURCE不重复吗?
***********************************************************************

lz新建一个工程,
添加DataEnvironment,
同时也添加adodc(这样比较更能看出差别),
添加datacombo

设置好DataEnvironment(设置Connection,添加两个Command,便于看出member的意义),
设置好adodc

从datacombo连接DataEnvironment
1。datasource选择DataEnvironment1
2。这时就能看到datamember里下拉有两项(Command1、Command2),选择一个(这个选择看出datamember的意义)
3。datafield就可以选择字段

adodc对比
1。datasource选择adodc1
2。这时就能看到datamember里下拉没有项目(重点,差别就在这里,这个差别看出datamember的意义)
3。datafield可以选择字段
补充:VB ,  网络编程
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,