Table的双重身份
窗口中的Table具备双重身份,使用不同身份时,类型不同,名称也不同。
作为控件
当作为窗口中的控件时,其类型为WinForm.Table,名称就是设计窗口时赋予的名称。
示例
Dim
t As WinForm.Table = e.Form.Controls("Table1")作为Table
当作为普通的Table使用的时候,其类型自然是Table。
至于名称则要区分两种情况。
如果类型为Normal,且非副本,此时窗口并不会创建新的Table,只是将原来的Table移到窗口中显示,所以其名称自然就等于绑定的Table名称。
例如将订单表移到主窗口后,对其的调用还是和原来一样:
Tables("订单").AllowEdit = True
如果类型为Normal,且为副本,或者类型为SQLTable、SQLQuery,此时窗口会创建一个新的Table,此新Table的名称为:
窗口名称_控件名称
假定这个Table的名称为Table1,且在窗口1中,那么代码中必须使用“窗口1_Table1”的名称来调用此Table:
Tables
("窗口1_Table1").AllowEdit = False获得对应的DataTable
对于Normal型Table,不管是副本还是非副本,其对应的DataTable的名称,就是其绑定的表的名称,例如:
DataTables("订单").AllowEdit = True
对于SQLTable、SQLQuery型Table,对应的DataTable名称为:
窗口名称_控件名称
例如:
DataTables("窗口1_Table1").AllowEdit = False
也可以通过Table的DataTable属性返回其对应的DataTable,例如:
Tables("窗口1_Table1").DataTable.Load()
通过控件的Table属性获得对应的Table和DataTable
Table控件本身有一个Table属性,用于返回其绑定的Table,例如:
Dim
wbl As
WinForm.Table
= e.Form.Controls("Table1")
Dim
tbl As
Table = wbl.Table
tbl.DataTable.Save()
上面的代码用于保存Table控件绑定的表,代码是通用的,和Table控件的类型无关,所以无需为不同类型的Table控件编写不同的代码。