第十六章表、图层与工作空间 下载本文

内容发布更新时间 : 2024/6/26 14:53:17星期一 下面是文章的全部内容请认真阅读。

第十六章 表、图层与工作空间

表的管理可分为对表结构的管理和对表中数据的管理。有关表、图层与工作空间,前面章节已有所述。本章重点介绍怎样使用MapBasic语句和函数打开、创建、修改、维护和管理表、图层和工作空间。

16.1 表的打开、创建与维护

16.1.1 打开表

MapBasic应用程序在进行许多操作之前,首先必须打开表以获取数据,如建立地图窗口、浏览窗口等。MapBasic提供Open Table语句来打开一个已经存在的表。下例表示以别名AllCapital打开表worldcap。

Open Table \:\\MapInfo Professional \\ Data \\ World \\ worldcap\

在Open Table语句中可以包含As、Hide、ReadOnly、Interactive等关键字。As子句表示以一个别名打开这个表,当As子句缺省时,MapBasic以表不带扩展名的文件名作为别名;Hide表示这个表对于任意一个打开表对话框是隐藏的;ReadOnly设置该表为只读的;可选的Interactive子句表示当打开的表在指定目录中找不到时,MapInfo Professional会显示一对话框,让用户定位该表,否则,当指定表在指定目录中无法定位时,就会出现出错信息。

当用户以缺省别名方式打开两个同名的表时,MapInfo Professional会为第二个表重新创建一个别名,而不能用缺省别名。如当打开表\:\\ 1993 \\ SITES.TAB\和表\:\\ 1994 \\ SITES.TAB\时,MapInfo Professional为表\:\\ 1993 \\ SITES.TAB\创建别名\,为表\:\\ 1994 \\ SITES.TAB\创建别名\以示区别。如果Open Table语句中包含Interactive子句,MapInfo Professional提醒用户为第二个表选择一个名字。

以别名打开一个表时,并不能改变这个表真正的名字,当关闭以别名命名的表时,这个别名随之注销。若要更改表的名字,应该使用Rename Table语句。执行下面语句,将表CASANFRA重新命名为C:\\ MAPINFO PROFESSIONAL文件夹下的表SF_HIWAY。

Open Table \:\\DATA\\CASANFRA.TAB\

Rename Table CASANFRA As \:\\MAPINFO PROFESSIONAL\\SF_HIWAY\

表打开后,可用TableInfo()函数获得已打开的表的信息,函数可根据获得信息的类

型返回相应的逻辑、整型、字符串型等值。TableInfo()函数可以获取表的多种信息,信息类型由函数的第二个参数表示。如下面语句表示获取表“CASANFRA”的字段数。

Dim infor As Integer

Open Table \:\\DATA\\CASANFRA.TAB\

infor = TableInfo(\)

MapBasic也可打开其它文件格式的表,如Dbase、Foxbase、Excel、Lotus文件及文本文件,但在打开这些文件之前必须把它们转换为MapInfo表(.tab文件),这种转换在MapBasic中称为“注册”。非MapInfo表格式的文件只有在注册后,才能当作MapInfo表。MapBasic提供Register语句对非MapInfo表格式的文件进行注册。下例是将一个Excle文件注册为名字为\的表,并打开这个表。

Register Table \:\\MapInfo Professional\\data\\rpt23.xls\ Type \ Into \

Open Table \:\\MapInfo Professional\\data\\Report23\

使用完一个表后,可以用Close Table 语句关闭表。如果一个表用于多个统计窗口或浏览窗口,关闭时这些窗口会自动关闭,如果关闭地图窗口中仅有的一个表,则这个地图窗口也会关闭,Close All语句可以关闭所有正在使用的表。如下例:

Open Table \ ?? Close Table world

16.1.2 创建表

MapBasic提供Create Table语句来创建一个新表,表最多只能有250个字段。Create Index语句为表创建索引,Create Map语句使表可以显示在地图窗口中,但不能打开地图窗口,若要打开地图窗口应该用Map语句。在程序示例16-1中,创建了一个DBF类型的新表Towns。

程序示例16-1

Create Table Towns

(townname Char(30), ?第一个字段的字段名为townname, 数据类型为字符串数组

population SmallInt, ?第二个字段的字段名为population, 数据类型为SmallInt

median_income Decimal(9, 2))?第三个字段的字段名为median_income, 数据类型为Decimal(9, 2)

File \:\\MAPINFO PROFESSIONAL\\DATA\\TOWNS\ ?表的存放目录 Type DBF ?表为DBF型文件

Create Map For Towns ?使表Towns可以地图化 Create Index On Towns(townname) ?为字段townname创建索引

Drop Table语句用于删除一个已经打开的表,这里的删除是指将表从磁盘上完全删除,不仅可以删除MapInfo Professional中的表,而且可以删除已经注册为MapInfo Professional格式的数据库源文件或电子表格源文件。用Drop Table语句删除的表不能用“撤消”命令恢复,同样,MapBasic也不能用Rollback语句撤消该命令,所以,使用Drop Table语句时要谨慎。

Open Table \ ‘打开表clients ??

Drop Table clients ‘删除表clients

16.1.3 修改表结构

表结构是指对表和构成表的字段的定义等。在MapInfo Professional中用户可以使用“表 > 维护 > 表结构”命令来改变表的结构,MapBasic提供了相应的一些语句如Alter Table、Create Index等来修改表的结构,但MapBasic语句不能修改由电子表格或ASCII文件注册生成的表,也不能修改由Select语句生成的临时表的结构。如程序示例16-2所示。

程序示例16-2

Open Table \ ?打开表gcpop

Alter Table gcpop