Форум » [x]Harbour » Harbour + SQL » Ответить

Harbour + SQL

S-A-N: Начальство "наклоняет" переходить на MS SQL. В связи с этим вопросы: 1. Как с этим работает Harbour? 2. Есть ли какие-нибудь "грабли"? хитрости? 3. М.б. кто посоветует альтернативу? Речь идет о переводе всех баз данных предприятия (бухгалтерия, кадры, планово-экономический отдел). Все программы самописные - Clipper 5.2 (DOS), Clipper 5.2 + FW 1.9, Harbour + MiniGUI. О покупке чего-либо речь не идет. Начальство ратует за MS SQL Express Edition или "бесплатный брендовый аналог". Хотелось бы услышать ваше мнение.

Ответов - 111, стр: 1 2 3 4 5 6 All

fil: Да, HTMLayout это интересно. Вот как бы эту библу задействовать с HB ?

Vladimir: Связка HTMLayout+HB, конечно, интересная. По сути, здесь надо создать одно окно, посадить в него HTMLayout и формировать элементы интерфейса в виде HTML+CSS. Но для этого понадобится написать враппер. Предпочтительнее было бы использование не HTMLayout+HB, а Sciter+HB. Sciter - это HTMLayout плюс скриптовый язык для работы с отображаемыми элементами от того автора (см. на сайте HTMLayout). Для доступа к функциям HTMLayout понадобится во враппере написать кучу соответствующих функций, для Sciter намного меньше (все остальное будет выполнятся скриптами). Где-то с год назад я пытался связать Sciter и MiniGUI. Но удалось немногое. Загрузка страницы (из файла, ресурса, переменной), обращение к функциям Sciter (вызывал окно сообщений). А далее получился если и не тупик, то высокая стена - знаний C/C++ не хватило.

Pasha: Покажите свои наработки на harbour mail list, там людей со знанием c/c++ более чем достаточно, может быть кто-то заинтересуется

fil: Извиняюсь за ламерский вопрос. Ну DOM он и в Африке.. Сделал embedding браузера получил документ и управляй себе элементами страницы. Я не понимаю зачем нужно ли писать враппер используя HTMLayout/Sciter ?

SergejKis: Применение HTMLayout, на мой взгляд, определяется не тем,что мы хотим заменить какое-то GUI ..., а применительно к Clipper, HB Например наличие множества компонентов с разным интерфейсом (Gui,HB,Minii ,Clipper), да и просто разработка модулей разными людьми требует какого-то объединяющего интерфейса. К примеру берем Win32 из проекта присоединяем ini с прописанными запусками програм, ..., связываем с контролами html - готова утилита, которой пользуется не прграммист, а проектировщик или ... . Словом минимум действий, а пользы ... . Я не Сишник, всю работу по Си делает мой коллега (и то моих знаний хватает), а работа с НВ в любом случае нагибает в сторону Си.

Vladimir: Pasha Наработок там кот наплакал. Корректно объяснить по-английски ещё хуже fil пишет: Сделал embedding браузера получил документ и управляй себе элементами страницы. Я не понимаю зачем нужно ли писать враппер используя HTMLayout/Sciter ? Какого браузера? IE или установленного по умолчанию вместо него? Смысл сторонней компоненты как раз в том, чтобы поменьше зависеть от настроек браузера. В MiniGUI есть пример использования ActiveX. Собираем, запускаем и смотрим страницу с картинками. Потом в свойствах Internet Explorer запрещаем вывод графики, после чего в примере смотрим страницу без картинок . SergejKis Это больше похоже на оболочку для запуска программ. В таком случае можно просто набросать веб-страничку со ссылками на нужные программы. По моему, смысл использовать HTMLayout/Sciter в том, что мы фактически имеем только 1 главное окно, функции обработки данных - на родном Harbour, а вот все элементы диалога создаются /позиционируются/размещаются средствами HTML. P.S. Я думаю, мы уже отклонились от темы.

fil: Vladimir пишет: Какого браузера? IE или установленного по умолчанию вместо него? Смысл сторонней компоненты как раз в том, чтобы поменьше зависеть от настроек браузера. В MiniGUI есть пример использования ActiveX. Собираем, запускаем и смотрим страницу с картинками. Потом в свойствах Internet Explorer запрещаем вывод графики, после чего в примере смотрим страницу без картинок Я использовал IE ActiveX. Через DOM заполнял поля ввода страницы, нажимал кнопки и т.п.

Perec: Действительно, вернемся к нашим баранам. 1. Начальство "наклоняет" является аргументом только тогда, когда оно "начальство" что-то в этом понимает. Оставляя моральные нормы за скобками, можно поставить халявный MS SQL и через энное время (за которое на LETO к примеру перейти) рапортовать "усё сделано или делается и вот SQL стоит". Проверить-то некому, а все работает и это главный критерий. Или я не прав? 2. А вот если более "адекватное" (к чему только ) начальство, которое предвидит увеличение клиентских мест на порядок или больше, или "хочущее" видеть у себя на экране в режиме реального времени состояние дел, и, самое вкусное, выделяет для этого деньги (в первую очередь на зарплату ), то тогда переход куда-то в "сикуэл" или еще дальше оправдан. Я сам в первых рядах! Наконец, последнее. Чё-то я никак не пойму чем DBF-то так плох, что избавляться от него надо "пренепременнейше". Ну если туева хуча прог пашет и пользует его (не к добру, но упомянем хоть 1С 7.7), если задачи решаются и пр. чего искать себе приключений на . Только ради понтов?! А у меня все на "огненной птичке" или "сикуэле" А вот изучать, экспериментировать - это без проблем! У кого кателок еще варит, есть силы и время - знамя в руки. Это всегда надо и в хозяйстве пригодится! Не этого ли на самом деле хотел автор поста?

SergejKis: Что Вы имеете ввиду ? Разве недостаточно обвязать вызвы HTMLayout.dll HB_FUN( ... ), чтобы получить полное управление ? Согласен, что это по другой теме, а не здесь. Sciter отбрасываю сразу, поведение контрола Grid очень отличается от dll в худшую сторону и зачем еще один язык (типа jscript) в проекте?

Vladimir: SergejKis Разве недостаточно обвязать вызвы HTMLayout.dll HB_FUN( ... ), чтобы получить полное управление ? Достаточно, но обвязать примерно вот такой фрагмент обработчика событий // HTMLayout specific notification handler. LRESULT CALLBACK HTMLayoutNotifyHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, LPVOID vParam) { // all HTMLayout notification are comming here. NMHDR* phdr = (NMHDR*)lParam; switch(phdr->code) { case HLN_CREATE_CONTROL: break; //return OnCreateControl((LPNMHL_CREATE_CONTROL) lParam); case HLN_CONTROL_CREATED: break; //return OnControlCreated((LPNMHL_CREATE_CONTROL) lParam); case HLN_DESTROY_CONTROL: break; //return OnDestroyControl((LPNMHL_DESTROY_CONTROL) lParam); case HLN_LOAD_DATA: return OnLoadData((LPNMHL_LOAD_DATA) lParam); case HLN_DATA_LOADED: break; //return OnDataLoaded((LPNMHL_DATA_LOADED)lParam); case HLN_DOCUMENT_COMPLETE: break; //return OnDocumentComplete(); case HLN_ATTACH_BEHAVIOR: return OnAttachBehavior((LPNMHL_ATTACH_BEHAVIOR)lParam ); } return 0; } для меня нереально. зачем еще один язык (типа jscript) в проекте Для изменения отображаемых данных. Вместо обёрток для функций.

S-A-N: Perec п.1 в Вашем посте уже не актуален - начальство со своими "наклонами" выпроводили на заслуженный отдых. А вот Ваш п.2 в части: увеличение клиентских мест на порядок или больше, или "хочущее" видеть у себя на экране в режиме реального времени состояние дел, почти полностью отражает суть вопроса.

S-A-N: Смотрел PostgreSQL. Там, кроме ODBC драйвера, есть и драйвер для С/С++. Поскольку заявлено, что в НВ можно писать на С/С++, и сам НВ, если я правильно понимаю, является клиппер-оберткой на Си, то существует ли возможность использовать в нем СИшный драйвер? Если да, то как?

Sergey Spirin: S-A-N пишет: Смотрел PostgreSQL. Там, кроме ODBC драйвера, есть и драйвер для С/С++.... Дайте ссылку на этот "драйвер". Словосочетание "драйвер для С/С++" звучит весьма абстрактно. Поэтому со слов ничего не ответить "Драйвер" же - это понятие из ODBC, в ADO (OleDB) принято название Провайдер. В прямых же библиотеках (С++/Delphi) понятно, что такие термины отсутствует.

Петр: S-A-N пишет: Поскольку заявлено, что в НВ можно писать на С/С++, и сам НВ, если я правильно понимаю, является клиппер-оберткой на Си, то существует ли возможность использовать в нем СИшный драйвер? А чем по вашему был Clipper? Это не драйвер. Это библиотека доступа "Client API for C/C++". Использовать можно. Собственно contrib/hbpgsql построен на использовании API PostgreSQL.

S-A-N: Петр пишет: Это не драйвер. Это библиотека доступа "Client API for C/C++" Вы совершенно правы. Виноват, исправлюсь. Петр пишет: Использовать можно Как? С С/С++ у меня туговато. Где можно посмотреть пример использования?

Петр: S-A-N пишет: Как? С С/С++ у меня туговато. Где можно посмотреть пример использования? Вы структуру каталогов Harbour знаете? Если сама библиотека размещена в harbour/contrib/hbpgsql, то примеры в harbour/contrib/hbpgsql/tests соответственно. Как компилировать библиотеку - читайте в INSTALL (HB_WITH_PGSQL)

S-A-N: Петр пишет: Если сама библиотека размещена в harbour/contrib/hbpgsql, то примеры в harbour/contrib/hbpgsql/tests соответственно. У меня установлен HB+MiniGUI. В MiniGUI/Harbour находятся только папки bin, doc, include, lib.

S-A-N: Петр, установил отдельно "чистый" НВ - все как Вы говорили. Спасибо. Ушел разбираться.

SergejKis: Познавание нового это оченть хорошо ! Но поверьте моему опыту потратите очень много времени, а получите ли выигрыш (знания не имею ввиду) это большой вопрос, учитывая сегодняшнее соостояние Вашего комплекса задач. У меня под VO 2.7 реализация клиентов для MySql 3.3.7, 4.0, 4.1,5.0, для Firebird 1.5, 2.0 - это много времени, тригера и процедуры на сервере (поддержка их от версии к версии Ваших задач), преобразование структур и баз данных с продвижением версий Ваших задач ... могу продолжать, но лень писать. Если это Вам очень необходимо, то флаг в руки ...

SergejKis: Спасибо, понял, Вы имели ввиду обработчик событий. А по поводу языка (я знаю для чего нужен Sciter, слежу за HTMLayout проектом давно), я имел ввиду наличие в проектах и так много всяких файлов prg,ini,cfg,vos,vox,hs,hrb,gui среда, js,vbs,bat,cmd, ... Что когда возвращаеся в проект(задачу) через пару лет, то разбираться что где лежит и что делает ... отнимает много времени. Добавление еще одного это время не сократит. Но за ответ спасибо.



полная версия страницы