Форум » [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

AlexMyr: А какие аргументы у начальства за MS SQL и против dbf?

Andrey: S-A-N пишет: Начальство "наклоняет" переходить на MS SQL Отстой !!! Выйгрыш этой базы, если будет за 1000 пользователей .... По трудозатратам лучше всего переходить на ADS - опять покупка. Но лучше всего на LetoDB: бесплатно, минимум правки кода, и т.д. - читать соответствующую ветку форума ! Еще один вариант, это терминальный запуск приложения. Переделки программы вообще ноль. Преимущества - быстродествие программы и возможность удаленной работы через интернет. Просто до безобразия. Читай здесь на форуме, я писал об этом.

S-A-N: Да какие м.б. аргументы, если эти люди всю жизнь занимаются конструкторской работой и далеки от IT-области: - dbf - это каменный век - надо переходить на современные технологии - ну и, естественно, MS SQL как "самая современная технология". Единственное, что дозволили - предложить "достойную" альтернативу.

S-A-N: Andrey пишет: Но лучше всего на LetoDB Ты, наверное, не обратил внимание на главное: бесплатный брендовый аналог Главный аргумент - если ты (в смысле - я) уйдешь, где мы найдем специалиста, который сможет разобраться во всех этих dbf-файлах. Надо внедрять то, что знают ВСЕ. Это они еще о языке программирования молчат.

AlexMyr: S-A-N пишет: Надо внедрять то, что знают ВСЕ. Это они на 1с намекают? Или хотят выгнать?

S-A-N: AlexMyr пишет: Это они на 1с намекают? Ну, пока не настолько все плохо. Ни о первом, ни о втором речь не идет.

AlexMyr: S-A-N пишет: Ну, пока не настолько все плохо. Тогда держитесь . Контраргументы - смотрим на сайте мелких цену на MS SQL Express Edition с необходимым количеством лицензий, плюс выбираем мощный сервак, плюс доработка сети на большую производительность, плюс цена на microsoft server 2008, плюс терминальный сервер с необходимым количеством лицензий, показывем суму начальству и смотрим на реакцию

AlexMyr: S-A-N пишет: или "бесплатный брендовый аналог" смотрим в сторону Firebird (__http://www.firebirdsql.org/) или MySQL (__http://www.mysql.com/)

S-A-N: AlexMyr пишет: смотрим в сторону Firebird или MySQL Я посматривал в эту сторону. В связи с этим у меня вопрос: что, на ваш взгляд, предпочтительнее? И с чем у Harbour лучше связка?

AlexMyr: В contrib есть тесты и для первого и для второго, нужно самому ставить и смотреть. А так читая maillist harbour, то вроде MySQL более доработан (хотя могу ошибаться).

S-A-N: Люди! Кто-нибудь работает с MySQL? Поделитесь впечатлениями.

Sergey Spirin: AlexMyr пишет: Контраргументы - смотрим на сайте мелких цену на MS SQL Express Edition с необходимым количеством лицензий, плюс выбираем мощный сервак, плюс доработка сети на большую производительность, плюс цена на microsoft server 2008, плюс терминальный сервер с необходимым количеством лицензий, показывем суму начальству и смотрим на реакцию Да уж, такие контраргументы прокатят, если начальство действительно "не бум-бум" MS SQL Express Edition - это БЕСПЛАТНАЯ версия полного сервера, ограничения: 1 поддерживаемый процессор (но может быть установлен на любой сервер) 1 Гб адресуемой памяти 4 Гб максимальный размер базы (10 Гб для версии SQL Server 2008 R2) Для многих задач вполне хватит И работать будет даже на просто приличном компе. AlexMyr пишет: плюс доработка сети на большую производительность Ну а это то зачем? Файл-серверный dbf "жрет" в этом смысле на много порядков больше, собственно, это одна из причин отказа от него и перехода на клиент-сервер AlexMyr пишет: плюс терминальный сервер с необходимым количеством лицензий, Ну а это то клиент-серверу нафига нужно то? S-A-N пишет:  цитата: смотрим в сторону Firebird или MySQL Я посматривал в эту сторону. В связи с этим у меня вопрос: что, на ваш взгляд, предпочтительнее? И с чем у Harbour лучше связка? Вот с последнего вопроса про связку лучше и начать анализ. Если же просто про сервера, то Firebird - выбор неплохой, если пользователей в пределе сотни. Сколько, кстати, пользователей в системе? И каков прогноз на переспективу? А вообще, в принципе, такой переход, это переписывание почти всей программы, не боитесь?

gfilatov2002: AlexMyr пишет: вроде MySQL более доработан Да, у меня тоже сложилось подобное представление. Для начального знакомства с MySQL рекомендую изучить примеры из поставки MiniGUI в базовой и расширенной папках. Кстати, если использовать SQLMIX, то возможно работать с MySQL через xBase-синтаксис (см. пример ниже). /* * MINIGUI - Harbour Win32 GUI library Demo * * Copyright 2002-2008 Roberto Lopez <harbourminigui@gmail.com> *http://harbourminigui.googlepages.com/ * * Copyright 2008 Grigory Filatov <gfilatov@inbox.ru> * * Based on RDDSQL sample included in Harbour distribution */ #include "minigui.ch" #include "dbinfo.ch" #include "error.ch" #define DBI_QUERY 1001 #define RDDI_CONNECT 1001 #define RDDI_DISCONNECT 1002 #define RDDI_EXECUTE 1003 #define RDDI_ERROR 1004 #define RDDI_ERRORNO 1005 #define RDDI_NEWID 1006 #define RDDI_AFFECTEDROWS 1007 #define RDDI_QUERY 1008 ANNOUNCE RDDSYS REQUEST SDDMY, SQLMIX MEMVAR memvarcountryname MEMVAR memvarcountryresidents *--------------------------------------------------------* Function Main() *--------------------------------------------------------* RDDSETDEFAULT( "SQLMIX" ) IF RDDINFO( RDDI_CONNECT, {"MYSQL", "localhost", "root",, "test"} ) == 0 MsgStop("Unable connect to the server!", "Error") Return nil ENDIF DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'MiniGUI SQL Database Driver Demo' ; MAIN NOMAXIMIZE ; ON INIT OpenTable() ; ON RELEASE CloseTable() DEFINE MAIN MENU DEFINE POPUP 'Test' MENUITEM 'Add record' ACTION AddRecord('ARG', 'Argentina', 38740000) SEPARATOR ITEM "Exit" ACTION ThisWindow.Release() END POPUP END MENU @ 10,10 BROWSE Browse_1 ; WIDTH 610 ; HEIGHT 390 ; HEADERS { 'Code' , 'Name' , 'Residents' } ; WIDTHS { 50 , 160 , 100 } ; WORKAREA country ; FIELDS { 'country->Code' , 'country->Name' , 'country->Residents' } ; JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT } ; EDIT ; VALID { , { || sqlupdate(2) } , { || sqlupdate(3) } } ; READONLY { .T. , .F. , .F. } END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return nil *--------------------------------------------------------* Procedure OpenTable *--------------------------------------------------------* If CreateTable() DBUSEAREA( .T.,, "SELECT * FROM country", "country" ) INDEX ON FIELD->RESIDENTS TAG residents TO country GO TOP Else Form_1.Release() EndIf Return *--------------------------------------------------------* Procedure CloseTable *--------------------------------------------------------* DBCLOSEALL() Return *--------------------------------------------------------* Procedure AddRecord(cCode, cName, nResidents) *--------------------------------------------------------* If RDDINFO(RDDI_EXECUTE, "INSERT INTO country values ('" + cCode + "', '" + cName + "', " + ltrim(str(nResidents)) + ")") // MsgInfo( RDDINFO(RDDI_AFFECTEDROWS), "Count of Affected Rows" ) APPEND BLANK REPLACE CODE WITH cCode, ; NAME WITH cName, ; RESIDENTS WITH nResidents Form_1.Browse_1.Value := country->(RecNo()) Form_1.Browse_1.Refresh Else MsgStop("Can't append record to table Country!", "Error") EndIf Return *--------------------------------------------------------* Function sqlupdate(nColumn) *--------------------------------------------------------* Local nValue := Form_1.Browse_1.Value Local cCode, cField, cNewValue If nColumn == 2 cField := "Name" cNewValue := "'" + Memvar.Country.Name + "'" ElseIf nColumn == 3 cField := "Residents" cNewValue := ltrim(str(Memvar.Country.Residents)) EndIf GO nValue cCode := "'" + country->CODE + "'" If ! RDDINFO(RDDI_EXECUTE, "UPDATE country SET " + cField + " = " + cNewValue + " WHERE CODE = " + cCode) MsgStop("Can't update record in table Country!", "Error") Return .F. EndIf Return .T. *--------------------------------------------------------* Function CreateTable *--------------------------------------------------------* Local ret := .T. RDDINFO(RDDI_EXECUTE, "DROP TABLE country") If RDDINFO(RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))") If ! RDDINFO(RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600), ('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)") MsgStop("Can't fill table Country!", "Error") ret := .F. EndIf Else MsgStop("Can't create table Country!", "Error") ret := .F. EndIf Return ret

AlexMyr: Sergey Spirin пишет: MS SQL Express Edition - это БЕСПЛАТНАЯ версия полного сервера Ну не лазил я на сайт мелких и не смотрел что это за версия, у самого крутится кажется msde (в системе контроля доступа). Sergey Spirin пишет: AlexMyr пишет: цитата: плюс доработка сети на большую производительность Ну а это то зачем? Да чтоб начальство не напрягало через пол года за малую пропускную способность сети. Sergey Spirin пишет: Ну а это то клиент-серверу нафига нужно то? А это уже можно юзеров перевести в терминале на работу с офисными програмами (у кого компы слабые) на будущее .

S-A-N: Sergey Spirin пишет: Сколько пользователей в системе? И каков прогноз на переспективу? Пользователей около 50 человек. В перспективе сказать трудно, но, в любом случае, до 100 человек. Это переписывание почти всей программы, не боитесь? Я сейчас все программы перевожу на Harbour + MiniGUI. В процессе перевода меняется и интерфейс и частично логика, т.к. некоторые из них написаны еще в 80-х - 90-х годах прошлого века (страшновато звучит

AlexMyr: S-A-N пишет: Пользователей около 50 человек. В перспективе сказать трудно, но, в любом случае, до 100 человек. Sergey Spirin пишет: Для многих задач вполне хватит И работать будет даже на просто приличном компе. Вот уже сомневаюсь что на просто приличном компе потянет такое количество, хотя если работать поочереди человек по 5, тогда...

S-A-N: Из всего выше сказанного и на основе моих субъективных впечатлений прихожу к выводу, что с MS SQL связываться не стоит. Останавливаюсь на двух вариантах - Firebird и MySQL. Далее - из моих личных (м.б. ошибочных) впечатлений где-то 2-х летней давности: Firebird вроде как лучше проработан и понадежнее MySQL, но связка с Harbour похуже будет. Прошу высказаться людей с опытом промышленной эксплуатации этих серверов в связке с Harbour. PS В моем предыдущем посте описка - вместо пользователей около 50 человек следует читать "20". При этом, задачи, выполняемые ими одновременно, слабо связаны. По крайней мере, на данный момент.

AlexMyr: S-A-N пишет: Прошу высказаться людей с опытом промышленной эксплуатации этих серверов в связке с Harbour. Если бы были такие, то уже сказали бы, а так...

S-A-N: Тогда другой вопрос - кто-нибудь работает с БД, отличными от dbf? Отпишитесь.

AlexMyr: gfilatov2002 пишет: Для начального знакомства с MySQL рекомендую изучить примеры из поставки MiniGUI в базовой и расширенной папках. Это смотрели?



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