Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_REF_7.pdf
Скачиваний:
25
Добавлен:
13.02.2015
Размер:
2.96 Mб
Скачать

Оператор Fetch

Оператор Fetch

Назначение:

Задание текущей позиции курсора в таблице (т. е. какая строка таблицы должна быть текущей)

Синтаксис:

Fetch { First | Last | Next | Prev | Rec n } From table

где

n – номер записи для чтения; table – имя открытой таблицы.

Описание:

Оператор Fetch используется для позиционирования записи в открытой таблице. Выполняя оператор, Ваша программа помещает курсор на определенную строку таблицы. Это состояние записи в таблице называется “текущим”.

Замечание: Термин "курсор" используется здесь для отражения расположения строки в таблице, и никак не связан с визуальным курсором экрана.

После оператора Fetch приложение MapBasic может извлекать данные из текущей записи, используя выражения:

Синтаксис

Пример

table.column

World.Country

table.col#

World.col1

table.col ( number )

World.col( variable_name )

Оператор Fetch First переводит курсор на первую неудаленную запись таблицы. Оператор Fetch Last переводит курсор на последнюю неудаленную запись таблицы. Оператор Fetch Next переводит курсор на следующую неудаленную запись таблицы. Оператор Fetch Prev переводит курсор на предыдущую неудаленную запись таблицы.

Оператор Fetch Rec n переводит текущую позицию на определенную строку, даже если она удалена. Замечание: если запись удалена, то оператор генерирует ошибку выполнения 404.

Надо учитывать, что многие операторы MapBasic и команды MapInfo сбрасывают текущее положение курсора в таблице (например, оператор Select, оператор Update, перерисовка экрана). Используйте обращение к текущей строке сразу после выполнения оператора Fetch.

Определение конца таблицы

После выполнения оператора Fetch функция EOT( ) возвращает логическую величину (TRUE или FALSE) в зависимости от того, достигнут ли предел таблицы после последней записи.

Если оператор Fetch помещает курсор на действительную запись таблицы, то функция EOT( ) возвращает значение FALSE.

Если оператор Fetch попытается установить текущей запись после последней записи таблицы, то функция EOT( ) вернет значение TRUE.

Справочник MapBasic

241

Оператор Fetch

В следующем примере оператор Fetch Next проходит по циклу по всем строкам таблицы. После каждого применения оператора вызывается функция EOT( ) и, если она вернет истинное значение, то цикл будет прерван.

Dim i As Integer

i = 0

Fetch First From world Do While Not EOT(world)

i = i + 1

Fetch Next From world Loop

Print ”Число неудаленных записей: ” + i

Примеры:

В этом примере показано, как подвести курсор к 3-ей записи в таблице STATES:

Open

Table "states"

 

Fetch Rec 3 From

states

'позиционирование на 3 ю запись

Note

states.abbr

 

'вывод значения колонки Abbr в записи '

Таким же образом можно доставать значения из временных таблиц (например, из таблицы Selection).

Select * From states Where pop90 > pop80 Fetch First From Selection

Note Selection.col1 + " содержит отрицательный прирост населения"

Смотрите также:

EOT( ), Open Table

242

Справочник MapBasic

Функция FileAttr( )

Функция FileAttr( )

Назначение:

Возвращает информацию об открытом файле.

Синтаксис:

FileAttr(filenum, attribute)

где

filenum – номер файла, открытого оператором Open File; attribute – код возвращаемого атрибута.

Величина, полученная в результате:

Целое число. Величина типа Integer или Small Integer.

Описание:

Функция FileAttr( ) используется для получения информации об открытом в MapInfo файле.

Параметр attribute должен принимать одно из следующих значений:

Значение attribute

Результат

FILE _ATTR_MODE

Короткое целое, величина типа Small Integer,

 

соответствующая коду режима, в котором был открыт

 

файл:

 

MODE_INPUT

 

MODE_OUTPUT

 

MODE_APPEND

 

MODE_RANDOM

 

MODE_BINARY

FILE_ATTR_FILESIZE

Целое число, величина типа Integer, размер файла в

 

байтах.

Ошибки:

В результате выполнения функции Вы можете получить код ошибки ERR_FILEMGR_NOTOPEN, если файл не открыт.

Смотрите также:

EOF( ), Get, Open File, Put, TableInfo

Справочник MapBasic

243

Функция FileExists( )

Функция FileExists( )

Назначение:

Возвращает логическую величину (TRUE или FALSE), в зависимости от того, существует файл или нет.

Синтаксис:

FileExists(filespec)

где filespec – строка с полным именем файла, включая DOS-маршрут.

Величина, полученная в результате:

Логическая. Величина типа Logical.

Пример:

If FileExists(”C:\MapInfo\TODO.TXT”) Then

Open File ”C:\MapInfo\TODO.TXT” For INPUT As #1

End If

Смотрите также:

TempFileName$( )

244

Справочник MapBasic

Функция FileOpenDlg( )

Функция FileOpenDlg( )

Назначение:

Вызывает диалоговое окно команды ФАЙЛ > ОТКРЫТЬ ТАБЛИЦУ из меню в MapInfo и возвращает имя файла, выбранное пользователем.

Синтаксис:

FileOpenDlg(path, filename, filetype, prompt)

где

path – строковая величина, определяющая начальное значение выбранного каталога;

filename – строковая величина, определяющая начальное значение выбранного файла в каталоге (в Macintosh этот параметр должен быть пустым (""));

filetype – строковая величина в три символа или меньше, определяющая тип файла; prompt – строковая величина, задающая заголовок диалога.

Величина, полученная в результате:

Строка с именем файла или пустая, если была отмена. Величина типа String.

Описание:

Функция FileOpenDlg( ) открывает диалоговое окно подобно команде MapInfo ФАЙЛ > ОТКРЫТЬ ТАБЛИЦУ.

Чтобы выбрать файл из списка, представленного в диалоге, Вы можете указать на имя файла и нажать на кнопку OK, или просто дважды указать мышкой на имя файла. В этом случае функция возвращает полное имя выбранного файла, включая DOS-маршрут. Если Вы нажали на кнопку "Отмена", то возвращаемая строка будет пуста ("").

Заметим, что функция FileOpenDlg( ) не открывает выбранный файл. Для того, чтобы открыть этот файл, необходимо выполнить оператор Open Table. Если же Вам нужно, чтобы в Вашей программе выбранный файл открывался автоматически, используйте оператор Run Menu Command с

использованием аргумента M_FILE_OPEN или M_FILE_ADD_WORKSPACE.

Параметр path назначает каталог, в котором помещены файлы для выбора. Значение каталога является начальным, и ничто не мешает пользователю выбрать другой каталог в диалоговом окне. Если параметр не задан (пустое значение), то каталогом выбора будет текущий рабочий каталог.

Параметр filename определяет начальное значение имени файла, выбранного в диалоге. Если программа запускается в среде Macintosh, то в этом параметре Вы должны задать пустую строку ("").

Параметр filetype принимает строковые значения обычно длиной в три символа и определяет тип файлов для выбора в диалоговом окне. И если, например, параметр посылает значение "TAB", то диалог покажет список файлов таблиц MapInfo, если посылается значение "WOR", то диалог покажет список файлов с Рабочими Наборами MapInfo.

Существуют и другие трехсимвольные значения. Эти специальные значения параметра filetype приведены в следующей таблице (только из трех символов). Если надо вывести список всех файлов, то в качестве параметра filetype используется маска “*.*”.

Значения type

Типы файлов

"TAB"

Таблицы MapInfo.

Справочник MapBasic

245

Функция FileOpenDlg( )

"WOR"

Рабочие Наборы MapInfo.

"MIF"

Формат обмена данными MapInfo (MapInfo Interchange Format),

 

используется для импорта/экспорта карт в/из ASCII-текстовых файлов.

"DBF"

Формат dBASE или других совместимых баз данных.

"WKS", "WK1"

Табличные файлы Lotus.

"XLS"

Табличные файлы Excel.

"XLS3"

Табличные файлы Excel 3.0 (только для Macintosh).

"DXF"

Формат обмена данными AutoCAD.

"MMI", "MBI"

Формат обмена данными с MapInfo для DOS.

"MB"

Файлы с текстами программ MapBasic.

"MBX"

Файлы с откомпилированными программами MapBasic.

"TXT",

Текстовые файлы.

"TEXT"

Текстовые файлы (только для Macintosh).

"BMP"

Формат растрового образа Windows.

"WMF"

Метафайлы Windows.

"PICT"

Формат растрового образа Macintosh.

В Windows каждому типу соответствует определенное DOS-расширение имени файла. Другими словами, тип файла "WOR" говорит MapBasic, чтобы был показан список файлов с расширением ".WOR", т. к. имена с таким расширением имеют файлы Рабочих Наборов в MapInfo для Windows.

Если Вы хотите, чтобы Вашу программу можно было использовать в любой системе, используйте только трехсимвольную установку параметра filetype. Например, если Вы пишете прикладную программу для работы в MapInfo для Macintosh, которая показывает диалог со списком файлов Рабочих Наборов, созданных в Macintosh, то задайте тип "WOR" (параметр filetype). Файлы Рабочих Наборов в Macintosh могут и не иметь расширения имени ".WOR", но зато каждый такой файл имеет встроенный тип. При вызове функции FileOpenDlg( ) MapBasic автоматически конвертирует трехсимвольный тип filetype в принятый в системе Macintosh код типа файла.

В Windows некоторые специальные значения filetype соответствуют строчке меню в нижнем левом углу диалога. Если в функции FileOpenDlg( ) параметр filetype задает значение не из приведенного списка, то в диалоге в окошке списка типов файлов будет пустое место.

Пример:

Dim s_filename As String

s_filename = FileOpenDlg("","","TAB","Open Table")

Смотрите также:

FileSaveAsDlg( ), Open File, Open Table

246

Справочник MapBasic

Функция FileSaveAsDlg( )

Функция FileSaveAsDlg( )

Назначение:

Вызывает диалоговое окно команды ФАЙЛ > СОЗДАТЬ КОПИЮв MapInfo и возвращает имя файла, введенное пользователем.

Синтаксис:

FileSaveAsDlg(path, filename, filetype, prompt)

где

path – строковая величина, определяющая начальное значение выбранного каталога;

filename – строковая величина, определяющая начальное значение выбранного файла в каталоге; filetype – строковая величина в три символа или меньше, определяющая тип файла (в Macintosh этот параметр должен быть пустым (""));

prompt – строковая величина, задающая заголовок диалога.

Величина, полученная в результате:

Строка с именем файла или пустая строка, если диалог был закрыт кнопкой отмены. Величина типа String.

Описание:

Эта функция, подобно команде ФАЙЛ > СОЗДАТЬ КОПИЮв MapInfo, открывает диалоговое окно.

Пользователь может ввести с клавиатуры имя файла или выбрать файл из списка, представленного в диалоге; для этого Вы можете указать на имя файла и нажать на кнопку OK, или просто дважды указать мышкой на имя файла. Если файл уже существует на диске, MapBasic спросит, действительно ли необходимо заменить старое содержимое файла на новое.

Функция возвращает полное имя введенного или выбранного файла, включая DOS-маршрут после того, как пользователь нажмет на кнопку “OK”. Если Вы нажали на кнопку "Отмена", то возвращаемая строка будет пуста ("").

Параметр path назначает каталог, в котором должен быть сохранен файл. Значение каталога является начальным, и ничто не мешает пользователю изменить каталог в диалоговом окне. Если параметр не задан (пустое значение), то каталогом будет текущий рабочий каталог.

Параметр filename определяет начальное значение имени файла.

Параметр filetype принимает строковые значения обычно длиной в три символа и определяет тип файлов для выбора в диалоговом окне. Значение filetype может быть одним из специальных значений. Например, если параметр посылает значение "TAB", то диалог покажет список файлов таблиц MapInfo, а если – "WOR", то диалог покажет список файлов с Рабочими Наборами MapInfo. Все специальные значения параметра filetype приведены в таблице в описании функции FileOpenDlg( ). Если программа запускается в среде Macintosh, то в этом параметре Вы должны задать пустую строку ("").

Функция FileSaveAsDlg( ) не сохраняет выбранный файл, но использует диалог соответствующей команды для получения полного имени, под которым надо сохранить файл. После этого для сохранения выбранного файла можно выполнить оператор Commit Table.

Смотрите также:

Commit Table, FileOpenDlg( )

Справочник MapBasic

247

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]