:: Обсуждаем проекты
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Версия 0.3.1
Добавлена форма LOGIN_PROP, ввод нового логина, его редактирование
с указанием системных ролей, разрешения доступа к базам и выбором
ролей в базах.
Добавлена возможность выбирать фоновую картинку для всех форм.
Некоторые визуальные улучшения.
Автоматическое каскадирование и нумерация окон SQL редактора.

Добавлено создание и редактирование триггеров, функций, процедур и
представлений (виртуальных таблиц). Меню вызывается правым кликом
на списке объектов справа.
В создание новых триггеров, функциий, представлений, процедур
добавлены образцы. Эти образцы могут быть заменены своими.
Они находятся в подкаталоге Doc. Если образец удалить из этой
папки, то он будет восстановлен исходным вариантом.

Папка Data может быть удалена со всем содержимым, её недостающие
файлы будут восстановлены автоматически.

Доработка редактора запросов (при старте указывается текущая база для
коннекта, переданного параметром).
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Ну вот, теперь уже что-то можно делать в программе более-менее.
представляю версию 0.4.0
vladislavkolosov.narod.ru
Библиотеки 9.0 находятся здесь:
vladislavkolosov.narod.ru

Чего нового:
Двойной клик открывает редактирование объекта.
Доработано контекстное меню в просмотре баз.
Большие тексты объектов больше не вызывают ошибку.
Восстановлена работа "Security".
Добавлена опция "всегда сверху" в меню "окна".
В меню "Файл" добавлен импорт DBF на сервер (пока для часто употребляемых
типов полей) .
Добавлена форма списка серверов для удобства c возможностью дока.
Двойной клик на логинах открывает свойства. При сохранении свойств логина
делается попытка установить указатель логина в ту же позицию.
В контекстное меню объекта добавлено "переименовать".
Редактор запросов поддерживает многотабличный результат запроса.
В секцию HELP добавлена возможноcть вызова BOL, если таковая имеется.

Ближайшей задачей будет являться написание дизайнера таблиц.
Потом уже интерфейсные доработки...
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
OLEGarh

Сообщений: 575
Откуда: Нйжний Новгород
Дата регистрации: 07.02.2005
Привет всем!

2 Владислав Колосов. Ничего не сливается по ссылкам И главная страница - пустая

Best regards!

ЗЫ Пробовал и Oper'ой и IE - увы и ах
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
фс:Е сливаеца пучком!




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
На главной странице ничего и нет, на сайте только файлы лежат. Может потом, когда-нибудь...
Попробовал - открыватеся "народ", предлагает кликнуть на ссылку. Там тоже нормально.
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Влад!

И всё-же жаль что ты не хочешь интегрироваться с TaskPane ;)

Замечания к версии 0.4.0

1) Окно/Всегда наверху - гасить при отсутствии форм - иначе вылет.
"Перейти" - тоже можно гасить, хотя тут работает без ошибок.
2) Путь к BOL - у меня лично файл называется sql80en.col - поменяй шаблон
запроса имени файла для поддержки любых подобных имён (ну да, у меня
старая версия BOL - качал ещё в начале 2002 года)
3) Удаление подключений - кнопка в колонке - мягко говоря не очень
удобно.
4) При создании подключений добавь возможность использования WinNT
аутентификации вместо UID/PWD - флажок + отключение соответствующих полей.
Также можно сделать видимым набор пароля - тем более что хранишь PWD ты
в табличке без шифрования...
5) Все мелкие настройки я бы вынес в отдельную форму - конечно кроме списка
серверов
6) Наблюдения за процессами - сделай сохранение позиции указателя во
втором гриде, или хотя-бы не выделяй там всю строку - а то при обновлении
указатель то теряется - некрасиво.
7) При сравнении баз ты не учитываешь, что могут сравниваться 2 базы на
одном сервере - пишешь везде имя сервера, а не имя коннекции (или имя
сервера + имя базы)
8) Если в окне сравнения после выбора серверов нажать вперёд + назад, то
выбор теряется, причём даже надписи "не выбран" нету.
9) В каких-то частях программы - в частности в просмотре объектов на
сервере (пункт "Базы данных") происходит утечка ресурсов - в частности не
освобождаются/не закрываются соединения. Думаю что стоит вообще сделать
либо пул, либо фабрику+репозиторий соединений - т.е. централизовать
10) Когда из окна "БД" открывается окно запросов, то в помещаемой туда
строке команды наличествует куча хвостовых пробелов.
11) Окно запросов:
- Неплохо бы сохранять историю запросов - в смысле автоматически в
какой-то dbf, и отслеживать статус MRU или MOU (т.е. упорядочение
по дате-времени последнего использования, или по частоте)
- Вкладка сводка - нет якоря на editbox. Фон IMHO стоит сделать белым.
- Выбор БД - запоминай и восстанавливай Value - а то после перезаполнения
комбо стоим всегда на первом элементе - нехорошо.
- Выбор Output - Запрос на имя файла IMHO стоит выдавать ПОСЛЕ того
как получен резалтсет - иначе получается, что даже на insert into идёт
запрос куда результат помещать.
Вообще интересное решение - это выводить результат ВСЕГДА на просмотр, а в
окне просмотра (ясно что это не просто BROWSE) помещать кнопки экспорта в
тот или иной формат - заодно решится и вопрос с многорезультатными
запросами - если надо дать каждому ResultSet своё уникальное имя, а не
автонумерацию, как сейчас.
- При многорезультатном запросе твой Unload не поможет - закроется лишь
первое Browse окно. Кстати говоря RELEASE PAD там не нужен - автоматом
подменю уйдёт, при закрытии BROWSE окна. если же заменить Browse окно на
свои собственные формы - то и проблемы не будет.
12) Окно Безопасность и окно свойств аккаунта:
- Не всегда то что до \ это домен - есть ещё и нечто типа BUILTIN
- В комбо неполный список языков - нету элемента "по умолчанию" - потому
некорректно позиционируется для имеющегося аккаунта.
- С ролями и правами на БД не совсем понятно - скажем NT админ имеет роль
sysadmin, но не отмечена ни одна база, а sa и вовсе гол как сокол Хотя
в списке Server Roles основной формы он входит в sysadmin
- Можно открыть много окон "Безопасность" для одного и того-же сервера,
что IMHO не есть хорошо. а вот если попытаться открыть "свойства" для 2-х
разных аккаунтов, то используется та-же самая форма - что тоже нехорошо -
надо бы наоборот - "Безопасность" - одна на сервер (ну или хотя-бы на
логин), а "свойства" - одно окно на аккаунт, но много на одну
форму "Безопасность"
- При активации вкладки Server Roles стоит подсвечивать в первом гриде
текущую запись, а то непонятно - в первом гриде не видно что выбрано. а во
втором - список логинов заполнен...
13) Окно серверы - может лучше назвать "Соединения", т.к. по сути это
именно список соединений, а не серверов. Кроме того в меню наверное стоит
чекбокс для этого пункта сделать (SET MARK ... и картинка станет
"вдавленной")
14) Форма Login - непонятно зачем отключена обработка KeyPress... В комбо
IncrementalSearch не работает, Esc тоже не работает...
15) Обработчик ошибок вообще очень жесток - чуть что и сразу в морг
16) Полное отсутствие config.fpw - это оно так и задумано?




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Отлично, информация к размышлению и предложения
Кое что из этого я собирался делать, а кое-что и полезное
Главно сейчас обеспечить все в работающем виде, а потом уже пойдет совершенствование. Составить скелет, так сказать.
Надо сделать дизайнер таблиц и управление пользователями/ролями/разрешениями.
Тогда уже остальным займусь.
1.Сделаю
2.Сделаю
3.Как было бы удобнее?
4.Trusted соединение сработает автоматически без пароляи пользователя, формально можно сделать галочку.
5.Полностью согласен, собираюсь сделать.
6.Сделаю.
7.Изначально это делалось в другой задаче и было перенесено сюда "до кучи", поэтому такой атавизм Собираюсь доработать.
8.Проверю.
9.По этому поводу я думал и даже начал делать кое-что, но потом пришел к выводу, что для каждой формы лучше создавать персональные соединения.
и не использовать общие, чтобы не было путаницы в головах Например, планировалось для каждого сервера иметь одно общее соединение по каждой
базе при необходимости (создавать или закрывать, если не используется). Но лично мне сложно удержать в голове всю картину соединений и правильно все
спланировать. Поэтому лучше пусть каждая форма сама разбирается со своими соединениями А там видно будет.
10. Да, я заметил уже после того, как выложил
11. Отличная идея с историей запросов! Там можно еще хранить признак сервера/базы. касаемо вывода/экспорта я как раз над этим и думаю И именно это и
пришло мне вчера в голову. Зачем делать запрос лишний раз для сохранения, когда можно его сохранить из просмотра? Для этого-то я и заморочился с меню
Table, о котором я писал в главной конференции. Возиться c формами не хотелось, а вот меню можно попробовать. Там и фильтры для результата можно
сделать, и выбор полей для просмотра и переименовать окно browse... Что там делает release pad - понятия не имею Это лишнее. Про закрытие
результатов - просто забыл, когда делал многотабличный результат Изначально там было расчитано на одну таблицу.
12. Насчет доменов надо еще подумать, как определять... В комбо язык по умолчанию устанавливается соответственно с языком сервера, он и есть по умолчанию.
Если для NT админа не выборана ни одна база, значит так оно и есть То есть в этих базах он не определен как пользователь и не имеет роли. Но так как он
сисадмин, то он может все SA пользователь всегда может все, то есть там отображается правдивая картина исходя из реально назначеных
ролей/разрешений. Насчет количества форм - полностью согласен, так и сделаю. Насчет ролей просто руки не дошли, спасибо, что напомнил
13. Я планировал там сделать еще и показ свойств серверов, поэтому так и назвал. Насчет чекбокса - хорошая мысль.
14. С Login я конечно жестоко поступил Сам ругаюсь, когда там ESC не работает Доделаю.
15. Тут лучше с ошибками не церимониться Все такое ответственное... Впрочем, игнорировать надо сделать По крайней мере, из программы
выбрасывает из-за местных проблем, а не из-за ошибок SQL.
16. Так и задумано... Так же как и нет локальной базы данных. Собственно, пока необходимости не возникало в данном случае.

Есть идея реализовать правку талиц на сервере через RW, но не представляю, как обнаруживать update conflict, чтобы не было обновления двух и более записей вместо одной. Видимо надо что-то делать с транзакциями и счетчиком @@rowcount.

Игорь, большое спасибо за замечания и критику!
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Влад!

Цитата:
3.Как было бы удобнее?
Не знаю, у меня всегда такая ботва панелькой + подменю делается... Там же и
кнопки "добавление" и "правка"... Как с табами это сделать я не
представляю...
Цитата:
9.По этому поводу я думал и даже начал делать кое-что, но потом
пришел к
выводу, что для каждой формы лучше создавать персональные
соединения.
Не лучше, ой не лучше... Да, возни с написанием репозитория будет слегка, но
потом будут лишь одни преимущества. В репозиторий помещай хэндлы соединений,
а "фабрику" можно с ним-же и скрестить - т.е. в "клиенте" идёт вызов типа
goApp.oConnections.GetCon("server","base") - а уж как этот объект нам отдаст
хендл - его личное дело - если найдёт у себя в списке - то пускай сделает
новый statement handle через SQLCONNECT(m.lnInitialHandle) и вернёт...
Естественно что на совести клиента будет закрытие этого statement handle -
это не повлияет на саму коннекцию - её хендл останется в коллекции... можно
предусмотреть и ручное закрытие - если очень надо
Цитата:
а вот меню можно попробовать. Там и фильтры для результата можно
сделать, и выбор полей для просмотра и переименовать окно browse...
Посмотри как в TaskPane сделано - бери пример с них - IMHO это более
правильно. А вот фильтры и т.п. - это лишнее - на кой это нужно, если
гораздо проще сделать повторный запрос уточнив параметры.
Цитата:
Что там делает release pad - понятия не имею Это лишнее.
В рантайме возможно, в DesignTime - нет.
Цитата:
В комбо язык по умолчанию устанавливается соответственно с языком
сервера, он и есть по умолчанию.
Нет, ты не понял. У меня для аккаунта стоит "по умолчанию"! И в
первом/основном списке это корректно прописано - а в комбо такого элемента
нету! И потому там берётся первый попавшийся африканский Кроме того как
можно задать для аккаунта использование не ЯВНО указанного языка, а
дефолтного для сервера?
Цитата:
SA пользователь всегда может все, то есть там отображается правдивая
картина исходя из реально назначеных ролей/разрешений.
Меня больше смущают разночтения - в роль sysadmin sa входит, а если из его
свойств смотреть - то он ни в какую роль не входит. Я не знаю вина ли это
программы - скорее всего это какая-то особенность собственно сервера и его
системных таблиц/ХП...
Цитата:
15. Тут лучше с ошибками не церимониться
Дык а прогу то зачем рубить? Ну закрой вывалившуюся форму, остальное то при
чём? Я понимаю что это сложно
Цитата:
Есть идея реализовать правку талиц на сервере через RW
Проще через CURSORSETPROP() поназначать свойства и тем самым получить
авто-сохранение изменений внесённых в курсор.
Цитата:
как обнаруживать update conflict
Обычно - lnRes = TableUpdate(...,.F.) - естественно что WhereType, списко
ключевых и обновляемых полей должны быть корректными.
Цитата:
чтобы не было обновления двух и более записей вместо одной
Это вообще-то исключительно забота KeyField. Конфликты - это несколько
другое, там важен WhereType и список "обновляемых" полей. Если же таблица
настолько крива, что там комбинация ключевых полей неуникальна - то нечего и
пытаться её править IMHO




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
По третьему пункту я еще размышляю... Это совсем сырой вариант, на скорую руку. Потом наверное действительно поменяю.

Решил результать запросов все же помещать в формы, так можно будет и фильтры ставить и поиск делать и экспорт... Иногда запрос/процедура
работает долго, поэтому, мне кажется результать можно и обработать на месте,хотя бы минимально. Кроме того, надо предустмотреть
возможность открыть результат запроса, если будет случайно закрыта форма его просмотра. Кроме того, эту форму можно будет использовать
для работы c локальными таблицами.

Изначально было идея одно соединение на сервер/базу, но, поскольку в редакторе запросов используется асинхронное соединение, то это представилось
невозможным. Проще было сделать так, как сейчас, хотя потом можно будет подумать о создании пары - синхронное/асинхронное на пару сервер/база.
Прийдется следить в пуле за количеством запросов на отключение/подключение, чтобы освобождать соединение, если оно ничем не используется.

У меня была идая использовать меню контекстно, то есть в редакторе это было бы сохранить текст процедуры/запроса, в просмотре таблиц - таблицу и т.д.
Надо над этим подумать... Будет ли удобно.

Относительно редактирования таблиц я беру за исходную точку работу QA, там можно править любые таблицы, c ключевыми полями и без, главное, чтобы
апдейт/удаление действовали только на одну запись, там это проверяется. Я имел в виду такое противоречие . То есть должна быть уникальность на уровне всей записи, как минимум. Если делать через SQLSETPROP(), то фокс проапдетит больше одной записи не задумываясь В таблицах ведь всякое бывает, к сожалению...

Насчет ролей и языка надо посмотреть И над остальным подумать.

P.S. Игорь, я понял, о чем ты говорил про языки и SA, разберусь. Похоже, что это из-за несовпадений логина и его имени пользователя базы.



Отредактировано (16.08.05 19:27)


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Влад!

Цитата:
Прийдется следить в пуле за количеством запросов на
отключение/подключение, чтобы освобождать соединение, если оно ничем не
используется.
Не обязательно. Отключение можно сделать принудительным (т.е. пока ЯВНО не
нажали "отсоединится" коннекция таки висит...) В принципе можно и одной
коннекцией на базу обойтись - или сделать настройку - типа "пускать запросы
по отдельной коннекции или по общей"
Цитата:
там можно править любые таблицы, c ключевыми полями и без, главное,
чтобы апдейт/удаление действовали только на одну запись, там это
проверяется
А, ну проверку числа обработанных записей можно сделать - чуть что - откат и
по мозгам - нефиг в реляционной базе иметь 2 идентичные записи
Цитата:
То есть должна быть уникальность на уровне всей записи, как минимум.
Если делать через SQLSETPROP(), то фокс проапдетит больше одной записи не
задумываясь
Почему это? Если ВСЕ поля включены как ключевые ИЛИ обновляемые и WhereType
= 2 то в WHERE часть пойдут ВСЕ поля - значит если условие уникальности "по
всем полям" соблюдается, то будет обработана именно одна запись (или ни
одной, если в то-же время другой юзер поменял хоть одно поле). Естественно
что если условие НЕ соблюдается (реально "неправильная" база) тогда
необходимо откатить транзакцию - а значит по определению транзакции нужно
переключать в ручной режим. Я не в курсе являются ли DDL запросы в MS SQL
"внетранзакционными" если являются - то ВООБЩЕ весь коммит можно сделать
"ручным" т.е. изменения пускай вносятся, а "подтверждение" осуществляется
именно кнопочкой - в Toad так сделано - IMHO достаточно удобно - если видишь
что напортачил - можно "лёгким движением руки" всё вернуть на место. Вот DDL
не стоит "вручную" коммитить - это чревато




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
По поводу соединений, тут оказывается такая штука появилась, а я не заметил
SQLIDLEDISCONNECT( )
Дабы не обременять сервер коннектами, думаю, что вполне можно использовать.
Транзакции, пожалуй, дествительно можно перевести в ручной режим... Как раз
вчера над этим размышлял.
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Версия 0.4.1:

В соединениях задействована кнопка "сохранить".
Сделано пропорциональное изменение закладки "статистика" в форме редактора запросов,
изменен цвет фона на белый.
В просмотре объектов исправлен вызов редактора SQL, закрывается соединение, созданное
в форме, при выходе.
Исправлено закрытие всех открытых результатов многотабличного запроса в редакторе запросов.
Browse в редакторе запросов заменен на форму.
Устранено прыгание курсора на объектах баз при возврате фокуса в форму sql_obj.
Принцип просмотра безопасности такой: одна форма безопасности на сервер, одна
форма свойств на логин. Закрытие формы безопасности приводит к закрытию свойств логинов.
В список языков формы LOGIN_PROP добавлено значение <default>. При сохранении c этим
параметром будет взят язык сервера по умолчанию.
Корректно стал отображаться доступ к базам при отличии логина от имени пользователя базы.
Изменен шаблон BOL при указании местоположения.
Исправлены некоторые ошибки редактора запросов.
Интерфейсные исправления и доработки.

Проект:
vladislavkolosov.narod.ru
Библиотеки 9.0 находятся здесь:
vladislavkolosov.narod.ru
скачать Books Online (справка по MS SQL), примерно 35Мб, можно здесь:
[url=ttp://www.microsoft.com/downloads/details.aspx?FamilyID=A6F79CB1-A420-445F-8A4B-BD77A7DA194B&displaylang=en] Books Online [/url]

Насчет запроса на сохрание файлов в редакторе запросов ПЕРЕД выполнением у меня были такие мысли -
что во-первых это наведет на то, что выбрано не то, что хотелось бы (сохранить вместо показать), а во-вторых
то, что можно сразу отказаться от выполнения запроса в последний момент.
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Слишком много работы и слишком мало времени Доработки не столь значительны, но полезны:

Версия 0.4.2
Приятные мелочи - кнопки Enter, Delete на списке объектов.
Сортировка в объектах, поиск названия объектов последовательным набором, максимальный
интервал времени между нажатиями 0.8 секунды.
Поиск по набору логина в безопасности.
Поиск в редакторе запросов.
Запоминается активный объект в каждой группе объектов (процедуры, триггеры и т.д.) сервера,
при переключении возвращается объект-позиция на экране.
Добавлен просмотр структуры таблиц.

Все находится все там же.
Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Vladimir_Sklyar
Hello, Влад!
You wrote on Mon, 31 Oct 2005 11:36:00 +0300 (MSK):

Когда создаю соединение с сервером, при сохрании имеем ошибку
Error number: 12
Error message: Переменная "L_TRUSTED" не найдена
Line number of error: SELECT servers
Line number of error: 11
Program with error: CONNECTIOS.PAGEFRAME1.PAGE2.COMMAND1.CLICK

PS только что скаченый и распакованый архив

With best regards, Vladimir M Sklyar. E-mail: Vladimir.Sklyar@gmail.com

Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Vladimir_Sklyar
Hello, Vladimir_Sklyar!
You wrote on Mon, 31 Oct 2005 13:26:05 +0300 (MSK):

В таблицу SERVERS добавил логическое поле L_TRUSTED - вроде заработало.
Дальше ниче не проверял пока, времени нету

With best regards, Vladimir M Sklyar. E-mail: Vladimir.Sklyar@gmail.com

Ratings: 0 negative/0 positive
Re: Инструменты для MSDE
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Вот глаз-ватерпас! Исправил.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика