Переключение на локальную базу данных через реестр
Здравствуйте Уважаемые специалисты nanoCAD!
Подскажите пожалуйста, как через внесение изменений в реестре (какие ключи?) задать локальный тип базы для NanoCAD - переключить на "Источник данных - локальная база"?
*Если задать значение параметру "SelectDbDlgLocalDb"= "C:\ProgramData\Nanosoft\nanoCAD x64 24.0\DataRW\std.mdf" с помощью внесения изменений в реестре по пути: "HKCU\SOFTWARE\Nanosoft\nanoCAD x64\24.0\nCAD\McBrowser", то все равно не меняется - не меняется "источник" на "локальная база", добавляется лишь путь до mdf, т.е. получается как на рисунке ниже:
Ответы
-
проще переключать базу чрез нанокомстроку
для локальной мдф
(vl-cmdf "spchangedb" "z:\BD_SQL\nana\std.mdf")
не умеет пробелы в пути
результат в момент выполнения пишется в AppOptions.xml, оттуда жэж и читается при старте наны или при перезагрузке-изменении AppOptions.xml
для постгресс
(vl-cmdf "spchangedb" "pgsql:nspds240")
для большого sql
(vl-cmdf "spchangedb" "SQL:C-SQLSERVER:mc_spds9")
1 -
Команда spchangedb только в CПДС?
Нужно еще в чистом NanoCAD. Может через команду "params"?
0 -
Да, spchangedb для СПДС, mcchangedb для механики
1 -
В чистом NanoCAD программно можно изменить источник (базу)?
0 -
Я не знаю
0 -
наверное возможно через Multicad.NET
McParamManager._GetParam (int)
internal Object _GetParam(int idParam);
McParamManager.SetParam (Object^, int)
public bool SetParam(ref Object param, int idParam);
idParam=9
<param id="9" name="Источник данных" ctrl="button_string" value="D:\user\BD_SQL\nana\std.mdf"/>
0 -
А можете подсказать как сделать через редактирование xml:
- путь можно узнать например через реестр (HKEY_CURRENT_USER\SOFTWARE\Nanosoft\nanoCAD x64\24.0\nCAD\MCSParams, AppOptions_ru-RU)
- редактируем это xml (vbs):
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("AppOptions.xml")Set ElemList = objXMLDoc.getElementsByTagName("Источник данных??")
plot = ElemList.item(0).TextElemList.item(0).text="НОВОЕ ЗНАЧЕНИЕ"
objXMLDoc.save("AppOptions.xml")
Только как исправить, чтобы найти узел "<param id="9" name="Источник данных" ctrl="button_string" value="pgsql:ncad_24_0"/>" и заменить его на например "z:\BD_SQL\nana\std.mdf"?
Фрагмент из xml, где нужно "value="pgsql:ncad_24_0" поменять на "value="z:\BD_SQL\nana\std.mdf":
' <section sid="2" name="Доступ к базам данных" icon="22" slide="-1">
' <param id="9" name="Источник данных" ctrl="button_string" value="pgsql:ncad_24_0"/>
' <param id="13153" name="Путь к внешним файлам проектов" ctrl="dialog_system_folder_browser" hidden="1" value="[DATA_ALL_RW]"/>
' <param id="12" ctrl="edit_int" hidden="1" name="Standards filter" value="1021"/>
' <param id="13" name="Фильтр стандартов" ctrl="button_string" hidden="1" value="ЕСКД, ISO, DIN, JUS, PN, GB, CSN, NF, IS"/>
' <param id="14" name="Фильтр номенклатуры" ctrl="button_string" hidden="1" value="Отключен"/>
' </section>0 -
через редактирование хмл будет работать только если отредактировать перед нанозапуском, выше жэж написал, читает его только при старте
/// <summary>
/// переключалка нанобаз
/// </summary>
[Rtm.CommandMethod("drz_changedb", Rtm.CommandFlags.Session)]
public void changedbMod()
{
string oldBd = Multicad.AplicationServices.McParamManager.GetStringParam(9);//получаем путь к базе текущего приложения
string sMDF = "z:\\BD_SQL\\nana\\std.mdf";//local *.mdf
bool bsetBD = Multicad.AplicationServices.McParamManager.SetParam(sMDF, 9);
string sSQL = "SQL:C-SQLSERVER:mc_spds9";
bsetBD = Multicad.AplicationServices.McParamManager.SetParam(sSQL, 9);
string sPSQL = "pgsql:nspds240";
bsetBD = Multicad.AplicationServices.McParamManager.SetParam(sPSQL, 9);
}уот так переключает
это тестовый код,
потом можно дооформить, чтобы передавать в класс параметром базу, или открывать файловый диалог..
******
PS переходи на светлую сторону .NET C#
значительно проще, возможностей и примеров больше чем на басик, питон или лисп0 -
Вижу пользователя, который насоздавал своих таблиц и отредактировал под себя и тут добрый волшебник взял и сменил БД :-( без его ведома
0 -
библиотеки mapimgd.dll и mapibasetypes.dll можете выложить? Хотя они вроде есть в папке с nanoCAD
0 -
ну зачем жэж волшебник, для большинства пользователей базы темный лес, а где лежит и как подключить вообще космос…
поэтому так
или так
Счастье для всех, даром, и пусть никто не уйдёт обиженный!(с)
1 -
0
-
@doctorRAZ где лежат и как настроить, пользователю сложно объяснить, вот создать таблицу в Верхнем колонтитуле на 50 строк, сохранив в базу перезаписав с тем де именем - любимое занятие.
А потом - "куда пропали мои таблицы"
1 -
мне показалось несправедливым, что пользователи голой платформы лишены радости переключать базы мультикад из ком строки..
исправляю это недоразумение
загрузить сборку (загприл)
вызов drz_changedb
дальше подставляем путь к mdf (можно с пробелами) - z:\BD SQL\nana\std.mdf
либо базу postgreSQL - pgsql:nspds240
SQL - SQL:C-SQLSERVER:mc_spds9
в спдс и механике может быть излишне там есть (spchangedb, mcchangedb) но который год прошу, чтоб починили баг с пробелом… пришлось чинить самому)))
ссылочка на гит
0 -
ChangedbMod_NC.zip Скажите пожалуйста работает во всех версиях NanoCAD 22-24?
0 -
проверил
В 20, 22-24 работает
upd даже в нано20 работает.
0 -
Спасибо!
0
Разделы
- Все разделы
- 31 Общие вопросы
- 11 Работа nanoCAD в ОС Linux
- 222 Платформа nanoCAD
- 5 nanoCAD GeoniCS
- 19 nanoCAD BIM Конструкции
- 3 nanoCAD Механика PRO
- 34 nanoCAD BIM Электро
- 9 nanoCAD BIM Вентиляция
- 4 nanoCAD BIM ВК
- nanoCAD BIM Отопление
- 5 nanoCAD BIM СКС
- 26 nanoCAD BIM ОПС
- 2 nanoCAD Стройплощадка
- 2 nanoCAD Металлоконструкции
- 1 nanoCAD Конструкции PS
- 2 TDMS Фарватер
- ReClouds
- NSR Specification
- Учебным заведениям и учащимся