Сохранение выборок(Select) в рабочем наборе
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 17 дек 2008, 16:57
- Репутация: 0
Сохранение выборок(Select) в рабочем наборе
Здравствуйте.
Пожалейте мою уже полу-лысую голову ) Подскажите с советом.
Пишу программку на Мапбейсике, столкнулся с проблемой: во время работы приложения если были сделаны выборки и добавлены в карту то при попытке сохранения рабочего набора выскакивает «Не удалось сохранить рабочий набор» и «Нераспознанная ошибка» с указанием на строчку с вызовом сохранения рабочего набора.Причем рабочий набор сохраняется не полностью, в нем есть только строчки с Open Table.
Рабочий набор сохраняю вызовом «Save workspace as» + абсолютный путь и имя рабочего набора.
Если выборок нет, рабочий набор сохраняется на ура.
Перепробовал разные версии Мапинфо - результат один.
Вызов диалога с сохранением раб.наб. (Run Menu Command 109) - таже ошибка.
P.S. Что заметил, если сохранять вручную то в рабочем наборе версия Мапинфо пишется правильно (при сохранении из Мапинфо 7.8 - имеем !Version 780 ) а при попытке сохранения из приложения имеем !Version 400 .
Может кто сталкивался с подобным, как обойти?
Сохранение выборок в отдельные таблицы - не выход.
Заранее спасибо ....
Пожалейте мою уже полу-лысую голову ) Подскажите с советом.
Пишу программку на Мапбейсике, столкнулся с проблемой: во время работы приложения если были сделаны выборки и добавлены в карту то при попытке сохранения рабочего набора выскакивает «Не удалось сохранить рабочий набор» и «Нераспознанная ошибка» с указанием на строчку с вызовом сохранения рабочего набора.Причем рабочий набор сохраняется не полностью, в нем есть только строчки с Open Table.
Рабочий набор сохраняю вызовом «Save workspace as» + абсолютный путь и имя рабочего набора.
Если выборок нет, рабочий набор сохраняется на ура.
Перепробовал разные версии Мапинфо - результат один.
Вызов диалога с сохранением раб.наб. (Run Menu Command 109) - таже ошибка.
P.S. Что заметил, если сохранять вручную то в рабочем наборе версия Мапинфо пишется правильно (при сохранении из Мапинфо 7.8 - имеем !Version 780 ) а при попытке сохранения из приложения имеем !Version 400 .
Может кто сталкивался с подобным, как обойти?
Сохранение выборок в отдельные таблицы - не выход.
Заранее спасибо ....
- Parlament
- Интересующийся
- Сообщения: 30
- Зарегистрирован: 11 сен 2008, 14:51
- Репутация: 0
- Контактная информация:
Re: Сохранение выборок(Select) в рабочем наборе
Это само собой.. что вы рассчитывали увидеть новое?Перепробовал разные версии Мапинфо - результат один.
Если можно листинг в студию...
P.S. Как говорит мой начальник мистики и фантастики в программировании нет.. =))))
nf_path - путь
n_wor - имя файла (имя + .WOR)
Сохранение рабочего набора
Код: Выделить всё
Sub Save_Wor_Files
Dim tm_st As String
tm_st = nf_path + "\" + n_wor
Save Workspace As tm_st
End Sub 'Save_Wor_Files
И мне не очень понятно что значит выборка.. я не совсем ас в MapBasic если можно покажите в коде =))))
Последний раз редактировалось Parlament 18 дек 2008, 12:00, всего редактировалось 1 раз.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
- Parlament
- Интересующийся
- Сообщения: 30
- Зарегистрирован: 11 сен 2008, 14:51
- Репутация: 0
- Контактная информация:
Re: Сохранение выборок(Select) в рабочем наборе
Код: Выделить всё
If NumTables()>i_open Then
Close Table Tableinfo(0, TAB_INFO_NAME)
Могу предположить еще
Define M_FILE_SAVE_COPY_AS 106
Так можно сохранить объекты Select
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 17 дек 2008, 16:57
- Репутация: 0
Re: Сохранение выборок(Select) в рабочем наборе
Выборка - это выделение какой либо информации из начальной таблицы во временную, на основе какого-либо условия.И мне не очень понятно что значит выборка.
Или вручную - выделением объектов в окне карты или записей в списке, или "Запрос"-"SQL-запрос" (или просто "Выбрать").
) Вручную выбрать несколько объектов, добавить Selection в окно карты у получившегося Query сменить стиль оформления.Если можно листинг в студию...
А теперь попробовать применить ваш-же код
Голову на отсечение даю что не получится(Может сохранить, если в мапинфо, в "Настройки"-"Режимы"-"Стартовые" -- "Сохранять запросы в рабочем наборе" не стоит галки.Но тогда и выборки не сохраняются)Sub Save_Wor_Files
Dim tm_st As String
tm_st = nf_path + "\" + n_wor
Save Workspace As tm_st
End Sub 'Save_Wor_Files
Эээээх, жаль (Если вы работаете с таблицей Selection и после работы ее не закрываете WOR фаил то же может не сохранять ее... у меня у самого косяки такие были..
- Parlament
- Интересующийся
- Сообщения: 30
- Зарегистрирован: 11 сен 2008, 14:51
- Репутация: 0
- Контактная информация:
Re: Сохранение выборок(Select) в рабочем наборе
Код: Выделить всё
Dim i_opens As SmallInt
i_opens = NumTables()
'***********************************
'Проверка выбран обьект на карте или нет
Set Handler SelChangedHandler On
If SelectionInfo(SEL_INFO_NROWS) = 0 Then
Note "Объект на карте не выбран"
Exit Sub
End If
************************************
Dim i As SmallInt
'************* Узнаем имя файла
Dim tmp_string As String
tmp_string = SelectionInfo(SEL_INFO_TABLENAME)
***************************************************
Dim kol_col, kol_row As SmallInt
'************* **************************
'Узнаем колличество столбцов всего в таблице
kol_col = TableInfo(tmp_string, TAB_INFO_NCOLS)
'************* ******** ******** ********
Узнаем количество выделеных строк
kol_row = SelectionInfo(SEL_INFO_NROWS)
'Note "kol_col = " + kol_col
'Note "kol_row = " + kol_row
If kol_col < 8 Then
Note "Внимание! Версия программы не поддерживает загруженую таблицу."
Call SK_Exit
End If
Dim protect_it As String
Fetch First From Selection
Dim object_name As String
object_name = Str$(Selection.obj)
For i = 1 to kol_row
protect_it = ColumnInfo(Selection, "COL1", COL_INFO_NAME)
If protect_it = "N_абриса" Then
N_Abris = Selection.N_абриса
End If
protect_it = ColumnInfo(Selection, "COL2", COL_INFO_NAME)
If protect_it = "Наименование_пункта" Then
Name_point = Selection.Наименование_пункта
End If
protect_it = ColumnInfo(Selection, "COL3", COL_INFO_NAME)
If protect_it = "Тип_центра" Then
Type_central = Selection.Тип_центра
End If
protect_it = ColumnInfo(Selection, "COL4", COL_INFO_NAME)
If protect_it = "Местоположение" Then
Name_position = Selection.Местоположение
End If
protect_it = ColumnInfo(Selection, "COL5", COL_INFO_NAME)
If protect_it = "X" Then
Cord_X = Selection.X
End If
protect_it = ColumnInfo(Selection, "COL6", COL_INFO_NAME)
If protect_it = "Y" Then
Cord_Y = Selection.Y
End If
protect_it = ColumnInfo(Selection, "COL7", COL_INFO_NAME)
If protect_it = "Высота" Then
Height_point = Selection.Высота
End If
protect_it = ColumnInfo(Selection, "COL8", COL_INFO_NAME)
If protect_it = "Примечание" Then
Commit_point = Selection.Примечание
End If
Next
Закрываем за собой таблицу.. чтобы можно было в последующем работать с другими элементами...
If NumTables()>i_opens Then
Close Table Tableinfo(0, TAB_INFO_NAME)
End If
Здесь идет считывание информации из таблицы и ее обратока данных именно тех объектов которые выделины на карте....
После чего... закрыв все таблицы правильно...
мы можем написать вот такую штуку...
Код: Выделить всё
Sub Save_Wor_Files
Dim Full_save_wor As String
Dim name_wor_files As String
Dim full_path As String
name_wor_files = name (имя файла... скорее всего это глобальная переменная или должна передаваться в качестве параметра в процедуру) + ".WOR"
full_path = "C:\test"
Full_save_wor = full_path + "\" + name_wor_files
Save Workspace As tm_st
End Sub 'Save_Wor_Files
По любому работать будет....
Последний раз редактировалось Parlament 18 дек 2008, 16:48, всего редактировалось 1 раз.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
- Parlament
- Интересующийся
- Сообщения: 30
- Зарегистрирован: 11 сен 2008, 14:51
- Репутация: 0
- Контактная информация:
Re: Сохранение выборок(Select) в рабочем наборе
Lexaa читайте код внимательно... не обязательно копировать весь код просто посмотрите описание функций которые я использую.. и приблизительно поймете нужны ли они вам....
Если надо могу дать Хелпу.. по MapBasic на Русском языке.. =))))
Если надо могу дать Хелпу.. по MapBasic на Русском языке.. =))))
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 17 дек 2008, 16:57
- Репутация: 0
Re: Сохранение выборок(Select) в рабочем наборе
) За хелп конечно спасибо ...
Ну а по сути, просмотрел код и не нашел там ничего что мне может пригодится.
Т.е. давайте я попробую на словах обрисовать ситуацию.
Есть сохраненный пользователем рабочий набор вида:
Нюанс в том что временные таблицы участвуют в окне карты - задается оформление для каждого слоя с выборкой, потому просто взять и закрыть все селекты я не могу.Сохранять каждый селект отдельно в каждую таблицу - это пока единственный вариант похоже.НО, у меня возникает вопрос - почему пользователь, непосредственно при работе в мапинфо может сохранить рабочий набор(и этот рабочий набор будет содержать селекты) а приложение написанное на мапбейсике - не может.
Вы писали уже что
Если у меня будут какие-то успехи то я здесь напишу.
Ну а по сути, просмотрел код и не нашел там ничего что мне может пригодится.
Т.е. давайте я попробую на словах обрисовать ситуацию.
Есть сохраненный пользователем рабочий набор вида:
Код: Выделить всё
!Workspace
!Version 780
!Charset WindowsCyrillic
Open Table "Участки" As Участки Interactive
Select * from Участки where Katzem = 10000000 into ааа
Select * from Участки where Katzem = 20000000 into ббб
Map From Участки,ааа,ббб
' **** Это не концовка, дальше все как обычно ***
Вы писали уже что
Очень жаль что не разобрались.Если вы работаете с таблицей Selection и после работы ее не закрываете WOR фаил то же может не сохранять ее... у меня у самого косяки такие были..
Если у меня будут какие-то успехи то я здесь напишу.
-
- Гуру
- Сообщения: 4208
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Сохранение выборок(Select) в рабочем наборе
Да, клинический случай. При наличии запросов рабочий набор командой
Save Workspace as "t:\1\a3.WOR"
не сохраняется .
А командой
run command "Save Workspace as ""t:\1\a3.WOR"""
сохраняется .
Успехов в поисках иных граблей!
Save Workspace as "t:\1\a3.WOR"
не сохраняется .
А командой
run command "Save Workspace as ""t:\1\a3.WOR"""
сохраняется .
Успехов в поисках иных граблей!
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 17 дек 2008, 16:57
- Репутация: 0
Re: Сохранение выборок(Select) в рабочем наборе
Четко, кратко и по делу.При наличии запросов рабочий набор командой Save Workspace as "t:\1\a3.WOR"
не сохраняется .
А командой
run command "Save Workspace as ""t:\1\a3.WOR"""
сохраняется .
Спасибо большое.
Теперь на самом деле сохраняет...
P.S. ToAll Извините если сразу что-то не понял, опыт в программировании не очень большой )
-
- Гуру
- Сообщения: 4208
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Сохранение выборок(Select) в рабочем наборе
2 Lexaa
[quote="Boris"]Да, клинический случай. /quote]
Это было естественно про MapInfo. А случай, действительно интресный. К счастью весь MapInfo/MapBasic состоит из таких клинических кусочков. И попытки сделать как написано приводят только к недоумению. Но где-то рядом как правило есть такая неприметная дверь, на которой написано что-то другое, но ведет она именно туда куда нужно, а иногда вообще в никуда .
[quote="Boris"]Да, клинический случай. /quote]
Это было естественно про MapInfo. А случай, действительно интресный. К счастью весь MapInfo/MapBasic состоит из таких клинических кусочков. И попытки сделать как написано приводят только к недоумению. Но где-то рядом как правило есть такая неприметная дверь, на которой написано что-то другое, но ведет она именно туда куда нужно, а иногда вообще в никуда .
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость