RUS  ENG 

Запись данных в таблицы слоя

Алексей Аширов , 2 ноября 2020

Запись данных в таблицы слоя

    Изучаем способы записи данных в таблицы слоя с точки зрения быстродействия.
    Рассмотрены варианты простой (по одной записи) и буферизованной записи данных в базу.
  • Пример подробно разобран в видеоролике Урок 6. Запись данных в таблицы слоя


  • ' ActiveX enumeration values definitions start (do not change!) Const eNetworkArcs = 2 Const ForWriting = 2 Const TristateTrue = -1 ' ActiveX enumeration values definitions end '************************************************************************** 'Процедура обновления записей поодиночке '************************************************************************** Sub BeginEndSingle 'Объект для вывода в окно сообщений Set Out = Zulu.OpenOutputChannel("") 'Очищаем окно сообщений Out.Clear 'Фиксируем начало процесса Out.Put "Start" + CHR(10) 'Получаем активный слой текущей карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Создаем объект для базы данных Set db = CreateObject("Zb.ZbDatabase") 'Открываем базыу данных для типа с ID=2 db.Open L.ObjectTypes.Item(2).BaseName 'Получаем линейные объекты сети Set NWObjects = L.NetworkObjects(eNetworkArcs) 'По всем участкам сети For i = 1 To NWObjects.Count 'Получаем i-й участок Set NWObject = NWObjects.Item(i) 'Записываем для текущего участка в два поля значения ID начального и конечного узлов db.UpdateBaseRecord NWObject.Key, "Begin_uch" + CHR(10) + "End_uch", CStr(NWObject.KeyBegin) + CHR(10) + Cstr(NWObject.KeyEnd) Next 'Фиксируем завершение процесса Out.Put "Finish" + CHR(10) MsgBox "Finish" End Sub '************************************************************************** 'Процедура пакетного обновления записей через ASCII файл '************************************************************************** Sub BeginEndFromASCII 'Объект для вывода в окно сообщений Set Out = Zulu.OpenOutputChannel("") 'Очищаем окно сообщений Out.Clear 'Фиксируем начало процесса Out.Put "Start" + CHR(10) 'Создаем объект для работы с файлами Set fc = CreateObject("Scripting.FileSystemObject") 'Открываем (создаем) файл на запись в формате UNICODE Set File = fc.OpenTextFile("c:\temp\BeginEndFromASCII.tmp",ForWriting, true, TristateTrue) 'Получаем активный слой текущей карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Создаем объект для базы данных Set db = CreateObject("Zb.ZbDatabase") 'Открываем базыу данных для типа с ID=2 db.Open L.ObjectTypes.Item(2).BaseName 'Получаем линейные объекты сети Set NWObjects = L.NetworkObjects(eNetworkArcs) 'По всем участкам сети For i = 1 To NWObjects.Count 'Получаем i-й участок Set NWObject = NWObjects.Item(i) 'Создаем строку для текущего участка через запятую ID участка, ID начального и ID конечного узла S = Cstr(NWObject.Key) + ",""" + CStr(NWObject.KeyBegin) + "人民共和"",""" + CStr(NWObject.KeyEnd) + "고려""" 'Записываем строку в файл File.WriteLine(S) Next 'Закрываем файл File.Close 'Записываем данные ASCII файла в указанные поля базы данных для указанных в файле ID L.UpdateFromAscii db, "c:\temp\BeginEndFromASCII.tmp", "Begin_uch" + CHR(10) + "End_Uch" 'Фиксируем завершение процесс процесса Out.Put "Finish" + CHR(10) MsgBox "Finish" End Sub

    Скачать пример (3.74 КБ)


    Возврат к списку

    Последнее обновление — 02.11.2020 14:10:37