Форум » [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 или "бесплатный брендовый аналог". Хотелось бы услышать ваше мнение.

Ответов - 136, стр: 1 2 3 4 5 6 7 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 в базовой и расширенной папках. Это смотрели?

S-A-N: AlexMyr пишет Это смотрели? Смотрел. Но сейчас меня интересует не принцип работы с сервером - это уже техника. Я опасаюсь "войти не в ту дверь". Т.к. это чревато неоднократным переписыванием программ. Хотелось бы с помощью "аксакалов" избежать неверного выбора.

Sergey Spirin: S-A-N пишет: Тогда другой вопрос - кто-нибудь работает с БД, отличными от dbf? Отпишитесь. Я работал и работаю в основном с "не-dbf". Более того, при работе с dbf основной задачей было чаще "искоренение этого dbf" или по-крайней мере "поддержание на плаву до наступления светлых клиент-серверных времен" Профессионально работал с InterBase/FireBird (ранее) и Oracle (сейчас). С MSSQL и MySQL только пересекался. С MySQL довольно давно. Тогда MySQL имел прозвище "МОЛОТОК" По сравнению с конкурентами имел очень мало функционала (не было хранимых процедур, не помню уже какие-то проблемы с транзакциями, триггерами и т.п. блокировочная архитектура), то есть, почти "голый" Но полюбился за надежность и скорострельность выборок В связи с этим и занял свою экологическую нишу - WEB-хостинг. Думаю, что и сейчас доля его в хостинге подавляющая.

Andrey: S-A-N пишет: вместо пользователей около 50 человек следует читать "20" Такое кол-во пользователей у меня работает в муниципалке. Работают они на обычном CDX в файл-серверном варианте. И тормозов нет. Сервер простой 2-х ядерная машина, года 3-4 назад покупали. Перевел с Клипера на хХарбор и забыл про все глюки и тормоза.

S-A-N: Andrey пишет: Работают на обычном CDX в файл-серверном варианте. И тормозов нет Тормозов нет и у меня. Вопрос в том, что принято решение (не мной) отказываться от dbf в пользу SQL сервера. To Sergey Spirin У Вас все это крутилось с Harbour? Если да, то чем вызван переход от Firebird к Oracl (кстати, платная версия или нет)?

Sergey Spirin: S-A-N пишет: У Вас все это крутилось с Harbour? Нет, конечно, я - дельфист. А с Клиппером познакомился именно в рамках задач именно по его (Клиппера) "искоренению" Firebird и Oraclе - это разные сферы деятельности. Там где Oraclе, там никогда никакого Клиппер/Харбура не было. Давайте рассуждать так. Все сервера, учитывая вашу нагрузку вам "подойдут". "Танцевать", действительно нужно от клиента. Что Вы будете использовать? ADO, SQLRDD еще что-нибудь? Про конкретные связки можно "порассуждать". А вы сами, кстати, как с SQL знакомы?

leo: Советовал бы еще посмотреть и в сторону бесплатного PostgreeSQL

S-A-N: Sergey Spirin пишет: я - дельфист. А вы сами, кстати, как с SQL знакомы? Когда-то делал пару прог "налево" на Делфи 7 и Firebird. Остальные SQL-сервера знаю только теоретически. Хотя считаю, что освоение - дело времени и желания. Желание присутствует, в временем меня не ограничивают - главное начать процесс. Сергей, попутный вопрос: Вы используете Дельфи или Лазарус? leo пишет: Советовал бы еще посмотреть и в сторону бесплатного PostgreeSQL Я, конечно, могу ошибаться, но вроде бы PostgreSQL несколько "тяжеловат". У нас подавляющее большинство ПК - "старички" с процессором до 600 МГц и памятью в 128-256 М. Потянут ли?

Sergey Spirin: S-A-N пишет: попутный вопрос: Вы используете Дельфи или Лазарус? Дельфи S-A-N пишет: Когда-то делал пару прог "налево" на Делфи 7 и Firebird. Остальные SQL-сервера знаю только теоретически. Ну, как-то сверх кардинально другие сервера от Firebird не отличаются... Но вот, из того, что вы пишите ниже, какого-то понимания пересечение с Firebird еще не дало S-A-N пишет: но вроде бы PostgreSQL несколько "тяжеловат". У нас подавляющее большинство ПК - "старички" с процессором до 600 МГц и памятью в 128-256 М. Потянут ли? А что они должны потянуть? Наличие в сети компьютера с установленным SQL-сервером? То есть, просто с софтиной От чего им (этим ПК) поперхнуться то? Поймите, архитектура клиент-сервер и создавалась для того, чтобы разгрузить сеть от массы бестолковых файловых операций. Поэтому ЕСЛИ написать ПРАВИЛЬНО, то сети только полегчает Но высока вероятность, что в первый раз напишите неправильно, вот тогда сети станет плохо, от бессмысленных прокачек данных на клиентские компы

S-A-N: Sergey Spirin пишет: А что они должны потянуть? Наличие в сети компьютера с установленным SQL-сервером? То есть, просто с софтиной От чего им (этим ПК) поперхнуться то? Речь идет о том, что из ЭТИХ компьютеров необходимо выделить один под сервер. На компьютере будет запущено (минимум) Windows Xp, антивирус, файервол. Все это съест значительную часть и без того скудного запаса ОЗУ. Теперь запускаем сервер. Теперь делаем к нему запрос от нескольких ПК. Как он (компьютер) себя поведет? Не знаю.

PSP: S-A-N, имхо, раз уж начальство хочет SQL, оно должно понимать необходимость наличия (покупки) подходящей для SQL железки. На том, что у имеется, трудно SQL эксплуатировать.

Sergey Spirin: S-A-N пишет: Речь идет о том, что из ЭТИХ компьютеров необходимо выделить один под сервер. На компьютере будет запущено (минимум) Windows Xp, антивирус, файервол. Все это съест значительную часть и без того скудного запаса ОЗУ. Теперь запускаем сервер. Теперь делаем к нему запрос от нескольких ПК. Как он (компьютер) себя поведет? Ну, один то комп из очевидных соображений стоит сделать чуть посильней У вас файл-сервер то сейчас тоже на 128 мб памяти? А вообще, все будет зависеть от того КАКИЕ запросы будет выполнять сервер... Понимаете? Если будете ВСЕГДА работать ОПТИМИЗИРОВАННЫМИ запросами, то все летать будет, даже при таком сервере. И похоже Firebird в этом случае очень неплохой для вас вариант..... В принципе, вспомните ситуацию лет 15 назад, я помню хорошо например такое - сервер - 486 с 32MB WinNT 3.51 Interbase 4.0 Classic, 50 клиентов 386 16МB Win 3.11, клиент написан на Delphi1 - ВСЕ ЛЕТАЛО! Firebird - не такой далекий потомок того InterBase 4.0 Classic.

S-A-N: PSP пишет: начальство должно понимать необходимость покупки подходящей для SQL железки Оно (начальство) может быть и понимает, но (далее близко к тексту): "Ты же видишь, что сейчас денег нет - кризис. Поэтому ты пока делай, а деньги появятся - тогда и купим." Такая вот ситуация.

S-A-N: Sergey Spirin пишет: Ну, один то комп из очевидных соображений стоит сделать чуть посильней. Сделать-то стОит, но пока денег нет (см.выше). У вас файл-сервер то сейчас тоже на 128 мб памяти? Сейчас ни клиент- ни файл-сервера практически нет. Например, в бухгалтерии каждый сотрудник отвечает за свой участок. Все необходимые программы и БД у него на компьютере. Когда он закрыл свой участок, то данные, необходимые, например для главной книги, пересылаются по сети на компьютер главного бухгалтера. Об этом делается соответствующая запись в журнале обмена обоих компьютеров. После получения всех необходимых сведений наступает очередь главной книги, реестра налоговых накладных и т.д. Аналогичным образом организована работа остальных подразделений. Короче говоря, каждый пользователь работает локально, изредка обмениваясь информацией с другими. УФ-Ф Учитывая выше сказанное, сейчас нагрузки на сеть практически нет (за исключением момента создания резервных копий баз данных). Так что, на мой взгляд, и оптимизировать-то нечего.

Sergey Spirin: S-A-N пишет: начальство должно понимать необходимость покупки подходящей для SQL железки На 20 юзеров и такой железки хватит, может быть я бы памяти добил бы, хотя бы до 512 или гига, уж на это у начальства денег хватит А вообще, сейчас пришло в голову, надо вам посоветовать ОЧЧЕНЬ с большой осторожностью при выборе клиентской либы отнестись к таким, где обещается "полное сохранение Xbase кода и при этом полную миграцию на SQL" С вашим железом ИМЕННО ЭТО явно не для вас Это в принципе невозможно, а видимые результаты достигаются сверхресурсоемкостью... Каюсь, я сам этим "баловался", правда под Дельфи, я как-то давно был сильно увлечен идеей "эмуляции навигационных методов работы с данными селективными методами"... Даже сделал такую эмуляцию, смотри например: http://www.ibase.ru/d_fibc.htm Там, пятая сверху либа. Но вот сейчас понимаю, что смысла в этом никакого Пишите оптимально и все будет много быстрее, чем на файл-сервере на одинаковом железе.

S-A-N: Может я не прав, но у меня складывается ощущение зарождающейся дискуссии. Sergey Spirin пишет: Пишите оптимально и все будет много быстрее, чем на файл-сервере на одинаковом железе Да я, собственно, не против. В том-то и вопрос, что из SQL-серверов выбрать для лучшей связки с Harbour при максимальной функциональности.

AlexMyr: S-A-N пишет: В том-то и вопрос, что из SQL-серверов выбрать для лучшей связки с Harbour при максимальной функциональности. Сюда больше народу не заглянет, чтобы больше подсказать, потому устанавливайте на одном компе MySQL и начинайте експериментировать - создать базу, добавить запись, удалить, отредактировать. Успехов.

Sergey Spirin: S-A-N пишет: Да я, собственно, не против. В том-то и вопрос, что из SQL-серверов выбрать для лучшей связки с Harbour при максимальной функциональности. AlexMyr пишет: Сюда больше народу не заглянет, чтобы больше подсказать, потому устанавливайте на одном компе MySQL и начинайте експериментировать - создать базу, добавить запись, удалить, отредактировать. Успехов. "Заглянуть" сюда "могут" Паша и Петр, которые именно по связке могут дать некоторую консультацию. То есть, по клиентской части, что проработанней в данный момент в Харборе, ADO ли это, или "прямой" доступ, который есть (типа hbfbird) и т. д. Отсюда и выбор сервера.. Поэкспериментировать самому тоже не вредно тем более с Firebird знакомство было

AlexMyr: Ну как, на чем остановились?

S-A-N: AlexMyr пишет: Ну как, на чем остановились? Да, собственно говоря, остановился на том же, с чего начинал - Firebird или MySQL. А вот какой из них - это вопрос. AlexMyr пишет: Поэкспериментировать самому тоже не вредно Следую этому доброму совету. Очень надеюсь, что Паша или Петр помогут внести некоторую ясность и облегчить выбор. А судя по количеству просмотров темы, этот вопрос интересует не только меня одного.

Sergey Spirin: S-A-N пишет: остановился на том же, с чего начинал - Firebird или MySQL Кстати, краем уха слышал, что MySQL прибрал к рукам Oracle и есть уже платные версии. А по Firebird если будут вопросы, то спрашивайте. Вообще же, из плюсов Firebird: - Огромное русскоязычное сообщество. Несколько русских прогеров в проекте (Дима Еманов, Влад Хорсун и т.д.). - Переводная и оригинальная литература. - Прекрасный IBExpert от Саши Хвастунова - средство разработки и администрирования - Ставится на любое железо, не требует практически никакого админства. - SQL-диалект конечно не такой сверхогромный как в Oracle, но все необходимое есть. - Версионная архитектура. - Есть для всех популярных платформ. - Любопытное ноу-хау - несколько транзакций в одном соединении, этого нет даже в Oracle. Из минусов: - Проект все-таки базируется на старом Борландовском коде InterBase (хотя ребята там много чего уже и попереписали) - Ранее был чувствителен к нагрузкам >100 подключений (хотя это тоже уже могло измениться).

Sergey Spirin: Ах да, надо не забыть посетить сайт: http://ibase.ru/ Это центр сообщества от Димы Кузьменко.

S-A-N: Sergey Spirin, спасибо за предложенную помощь. Ловлю на слове. iBase.ru мне знаком, раньше часто там бывал, но все равно спасибо. Кстати, куда стучаться с вопросами, чтобы не плодить дополнительные темы?

Sergey Spirin: S-A-N пишет: , куда стучаться с вопросами, чтобы не плодить дополнительные темы? Да я думаю в эту тему и кладите. Ну, если что срочно, то мылом. Мыло мое знаете?

S-A-N: Sergey Spirin пишет: Мыло мое знаете? Нет.

Sergey Spirin: spirin [at] paritetsoft.ru

S-A-N: Теперь знаю

SergejKis: S-A-N при выборе сервера смотрите в сторону популярных CMS. Я решал эту проблему в 2001 году. Задачи работали как у ВАс в посте 28. Получилось следующе: Для минимизации затрат рабочие места остались на Clipper 5.2 (Blinker 6.0) RDD SIXNSX, NTX. Сервер сначала был MySql 3.2.5. потом перешел на Firebird (таблицы MyIsam без транзакций теряли записи иногда, таблицы InniDB требовали лицензию). Клиент написан на VO 2.0, 2.5, 2.7 (хронологически). Работает в фоновом режиме, находясь в соединении с базой. В Sql были только справочники и др. оперативные данные быстрого доступа. Документы с рабочих мест на FTP сервере в zip формате (в Sql попадали позже). Для уменьшения трафика сети (работа с Sql запросами) в dbf и таблицы добавил поля IDNUMBER (PRIMARY KEY) и DATE_MODIFY (INDEX в Sql) заполняются триггерами сервера. После первоначальной закрузки данных на сервер, обмен долько изменеными данными. Вот как то так ... На сегодня идут работы в направлении CMS Jumla+Harbur+LetoDB (LetoDB начали пробовать с версии 20.07.2010) c подключением в шаблон CMS.

S-A-N: SergejKis, спасибо за Ваш отклик. Я тоже больше склоняюсь к Firebird. Вариант с LetoDB я не рассматривал, т.к. боюсь, что он не "прокатит" (для руководства это не "бренд"). Хотя ... А вдруг! В любом случае, я рад, что нашелся человек с "параллельным" направлением работы. И вопрос - чем был вызван переход от Firebird к LetoDB?

SergejKis: Более быстрой реакции системы для клиента, как на HB не получите какой бы интерфейс не использовали (потом 98 еще встречается у клиентов). А LetoDB, CDX это естественный RDD HB. Применяя его достаточно легко строить распределенные базы, при этом никто не отменяет заполнение инф. Sql сервера. Надо просто определится где инфю первична. Строить TBrowse обьекты с курсорами в процедурах Sql сервера - на любителя (особенно когда они начинають жить во времени) или все читать в массивы - тоже как-то ... MySQL, Apache,PHP входят во все популярные CMS. Загрузка страниц ~ 2+сек. в Jumla и около 1 сек. во frame шаблона HB+CDX, PC 800, 512Kb работать можно... MS SQL и Firebird очень близкий синтаксис языка (это вопрос миграции). Всех (или многих) учат на PHP+MySql. На мой взгляд, выбор Sql сервера должен основываться на команде людей, знания которых, применяются при реализации проекта и направления в котором идет развитие системы и думаю, что кроме Вас самого на этот вопрос никто не ответит как-то сумбурно , но ...

Петр: S-A-N пишет: Вариант с LetoDB я не рассматривал, т.к. боюсь, что он не "прокатит" (для руководства это не "бренд"). Хотя ... А вдруг! Искусству дипломатии не обучен.. Кто для вашего руководства "бренд" - SAP AG, Sybase, Inc ? Зайдите на сайт Sybase, раздел "Продукты". С какого бодуна бренд, цена которому $5,8 миллиардов по состоянию на 2010 год поддерживает "каменный век" dbf? А может он и стоит свою цену, что умеет считать и свою копеечку и своих клиентов, в отличии от вашей "фирмы", для которой 500-600$ на более-менее современный "писюк" - непозволительная роскошь. Кстати, а вам доплачивать за приобретаемые "скилы" руководство тоже не намерено?

AlexMyr: Действительно, зашел на sybase, задал поиск - dbf и получил Results 1-20 of 184 for dbf. Самое последнее Accessing DBF Tables (Product/Solution Page Brief) Accessing DBF Tables over 2GB in Visual FoxPro with Advantage Database Server Category: Product Info Date: 2011-01-18 Вот так.

Andrey: Петр пишет: Искусству дипломатии не обучен.. Кто для вашего руководства "бренд" - SAP AG, Sybase, Inc ? Петр пишет: Кстати, а вам доплачивать за приобретаемые "скилы" руководство тоже не намерено? 5 баллов за ответ !!! Полностью присоединяюсь !!! Как это знакомо все ....

Sergey Spirin: То, что Sybase прибрал "к рукам" ADS, это мы все знаем. Так же, наверное, понимаем, что от этого сервер ADS не стал сразу сервером Sybase Так же как MySQL не стал еще Oracle-ом. Интересно еще - ADS "выгодно продался"? Или "отдался от безысходности"? В любом случае, ADS и LetoDB - это все-таки, в основном, КОСТЫЛЬ, который позволяет решить проблему исчерпания "запаса прочности обычного файлового подхода". ADS также предлагает и SQL-ориентированный функционал, понятно, что такое и было и наверное еще будет в определенной степени востребовано, за счет чего ADS существовал и существует. Но у автора топика ситуация немного другая. У него "система локалок с "пробросом" данных". То есть, даже переход на ADS потребует значительной переделки системы. К тому же, он упомянул, что во времени не сильно ограничен. В этой ситуации почему бы не подумать и о "бескостыльном" варианте? Переделки это потребует много больше конечно, но и плюсами может обернуться приличными, например, приобретение SQL-квалификации и т.д. Почему бы хотя бы не попробовать? Вопрос, все-таки, остается по клиентской части Харбора при работе с "обычными" SQL-серверами, а не специализированными (как ADS и Leto). Использует ли кто-то это реально? Каковы надежность, функционал? У меня испано-бразило-мексиканские frh-пользователи довольно много используют и MSSQL и MySQL и т.д. Но они все на [x]Harbour-e (FiveWin либо Xailer) и все они практически используют SQLRDD. А как в Harbour с этим дело обстоит?

SergejKis: Как руководство может управлять тем, чем управляете Вы, а именно, как производить расчет через массивы или файлы любой организации, какой оператор применить в том или ином месте программы ? Где производить основные вычисления, алгоритмы на стороне SQL сервера (триггера, процедуры, представления ...) или на стороне клиента (exe, hrb. hs, CDX,LetoDB,...) ? А Ваше руководство хочет увидеть развите системы например результаты деятельности предприятия на мобильном телефоне, ifone, ноутбуке и т.д.. и желательно в знакомой оболочке любимого Crome, Opera,IE, ... Если выберете алгоритмы на стороне сервера (триггера, процедуры, представления ...), то миграция на другой сервер возможно будет трудной, именно здесь, как правило различия в диалектах Sql. Словом успехов !!!

Петр: ADS не нужно становиться ASE или Sybase IQ, а MySQL - Oracle. Это все нишевые продукты и у них свой сегмент, свои пользователи. В этой ситуации почему бы не подумать и о "бескостыльном" варианте? Переделки это потребует много больше конечно, но и плюсами может обернуться приличными, например, приобретение SQL-квалификации и т.д. Почему бы хотя бы не попробовать? И этому костылю, как вы выразились, больше лет чем любимому вами Delphi, который некоторые горячие головы хоронят от года к году.. У автора, пользуясь современными терминами, хорошо налаженная система репликаций. Ему нужно всего лишь перейти чистенько на ADS Local, а потом, после приобретения серверной части, просто настройки программы поменять, и эту самую репликацию оставить лишь для форс-мажорных ситуаций (работа офлайн и т.д.). Думать о переходе никто никому не запрещает. Но я не вижу смысла в таком переходе, да еще и в условиях безденежья (это я о MS SQL, пускай даже и бесплатном). Что у автора бизнес процессы поменялись, резко увеличилось (или планируется) количество пользователей и возросла нагрузка, стал валиться сервер? Да ничего подобного. Руководство захотело MSSQL, при этом не имея даже персонала с опытом работы с оным. Автор какой опыт хочет приобрести: программиста SQL, архитектора БД или администратора. Кто ему его передаст? Кто на этом предприятии создаст и откатит backup штатными средствами или переведет базу с одной версии сервера на другую? Может руководство оплатит ему курсы и сертификацию? Кстати, я вовсе не уверен в категоричности руководства, может это ТС краски сгущает или не понимает с чем ему предстоит встретиться. Но я ему крайне не советую делать все это за "спасибо", не враг же он своему здоровью.. Все остальное - решаемо.

Петр: Что это я хотел сказать, но забыл.. Ага, бесплатным аналогом брендового ADS и есть Leto DB. Для этого его и создавали. Sergey Spirin пишет: Вопрос, все-таки, остается по клиентской части Харбора при работе с "обычными" SQL-серверами, а не специализированными (как ADS и Leto). Использует ли кто-то это реально? Каковы надежность, функционал? У меня испано-бразило-мексиканские frh-пользователи довольно много используют и MSSQL и MySQL и т.д. Но они все на [x]Harbour-e (FiveWin либо Xailer) и все они практически используют SQLRDD. А как в Harbour с этим дело обстоит? Да, вернемся к нашим баранам.. У ТС все таки частный случай, а кому действительно нужно "общаться" с обычными" SQL-серверами. SQLRDD действительно создавался как коммерческий проект, тесно переплетенный с другим коммерческим проектом xHarbour и вариант для Harbour планировать не собирались и не собираются. Что остается пользователям Harbour? Я честно о всех вариантах не знаю. Могу лишь описать то, что есть в Harbour SVN, а именно User contribution, т.е. папка contrib и examples. Сначала examples/adordd ADORDD - RDD to automatically manage Microsoft ADO. Первоначально создан Fernando Mancera и Antonio Linares в качестве бесплатного бонуса для пользователей FiveWin (примерно в тоже время когда в составе Visual xHarbour появилась демка SQLRDD, т.е. по сути наш ответ Чемберлену). Особого отклика в сердцах пользователей не нашел, фактически работа над ним приостановлена. Был помещен авторами в Harbour SVN для придания "второго дыхания", но.. Результат - дисквалификация и помещение в папку examples (кандидат на вылет.)

Sergey Spirin: Петр пишет: Руководство захотело MSSQL, при этом не имея даже персонала с опытом работы с оным. Автор какой опыт хочет приобрести: программиста SQL, архитектора БД или администратора. Кто ему его передаст? Кто на этом предприятии создаст и откатит backup штатными средствами или переведет базу с одной версии сервера на другую? Может руководство оплатит ему курсы и сертификацию? В "административно-житейском" контексте я с вами совершенно согласен. Собственно, выше я предупреждал автора, что такая "затея" - это почти полное переписывание. Петр пишет: Это все нишевые продукты и у них свой сегмент, свои пользователи. Конечно, я это и имел в виду, когда говорил о "специализации". Петр пишет: И этому костылю, как вы выразились, больше лет чем любимому вами Delphi, который некоторые горячие головы хоронят от года к году.. Здесь не совсем так. Посмотрел, начало ADS считается с 93-го. Первая общедоступная бэта Delphi это 94-й, а релиз 95-й год. Но. Компилятор первой Delphi имел номер версии - 8, на единицу больше с предыдущим - Borland Pascal 7. То есть, Дельфи - это название нового IDE, новой компонентной архитектуры, но не языка. Дельфи1 - это очередная версия Borland Pascal. Ну а хоронили его все "на почве" конфликта разработчиков и акционеров Borland-a. Сейчас, тьфу-тьфу, конфликт этот полностью разрешился, хоть все и остались на тех же рабочих местах. Петр пишет: ADORDD - .... Особого отклика в сердцах пользователей не нашел, фактически работа над ним приостановлена. То есть, использовать его в реальной работе вы бы не рекомендовали? Хорошо, а что можно сказать про "прямые" hbfbird и SQLMIX, которые тоже есть в contrib?

Петр: contrib/hbfbird contrib/hbpgsql Инициатор Rodrigo Moreno, в Harbour SVN библиотеки попали из xHarbour CVS. В 2008 году я "поплотнее" пообщался с hbfbird. Задача тривиальная: есть сторонняя программа, использующая в качестве SQL движка Firebird embedded, нужно выгрузить из ее базы данные и произвести над ними какие-то действия, штатных средств импорта - экспорта не имеет, сторонние утилиты (IB Expert) не использовались (сейчас и не вспомню почему ). Впечатление от реализации: отвратительные, без правки исходного кода не завелось, куча утечек памяти и GPF по поводу и без. Текущее состояние - не известно. В 2010 году Viktor приложил усилия к приведению hbfbird к рабочему виду, но насколько я знаю реально он библиотеку не использует. В различных форумах (посвященныих [x]Hb и Ко) я всего лишь два-три раза встречал вопросы по Firebird. Где-то 2009 тестировал hbpgsql, реализовано гораздо лучше. Ничего не валилось, отработало себе тихонько свой тест и все. Смотрел на реализацию. Кто-то из наших латиноамериканских друзей, где читал сейчас и не вспомню, писал, что регулярно работает с PG, претензий не имеет. И hbfbird, и hbpgsql, и hbmsql реализованы в сл. принципу. Нативное API, над ним функции-врапперы Harbour и последний слой Harbour класс-обертка. contrib/hbmysql Контрибутор Maurilio Longo, наиболее "старая" библиотека. Судя по сообщениям на форумах - наиболее востребуемая, вполне стабильная и пригодная для использования не только в целях тестирования. Исходники всех трех библиотек в 2010 году пересматривались, добавлено использование GC, пересмотрены используемые Harbour API функции.

Петр: Sergey Spirin пишет: использовать его в реальной работе вы бы не рекомендовали? Хорошо, а что можно сказать про "прямые" hbfbird и SQLMIX, которые тоже есть в contrib? Если вам нужно перекачать данные из mdb файла несложной структуры, то почему бы и нет? А на работу с SQL серверами, я бы не решился. SQLMIX вполне робочий, но очень специфичный продукт для решения конкретных задач. Судя по переписке в Harbour-Dev, не менее 5 человек используют его в связке Harbour + Oracle. Возможности и принципы работы SQLMIX хорошо описал автор Mindaugas Kavaliauskas, читать contrib/rddsql/readme.txt.

Петр: Ну и не надо забывать, что достучаться к SQL серверу, и не только к нему, можно посредством использования ODBC (hbodbc). Это конечно не прямой путь, но всегда верный и почти доступный как на платформе Windows, так и *nix (unixODBC). Верный потому, что начиная с версии SQL3 (SQL-99) CLI (API на котором строятся ODBC драйвера) является частью SQL стандарта. Почти доступный потому, что не все драйвера являются бесплатными и не всегда безглючными или полноценно функциональными.

Sergey Spirin: Петр пишет: И hbfbird, и hbpgsql, и hbmsql реализованы в сл. принципу. Нативное API, над ним функции-врапперы Harbour и последний слой Harbour класс-обертка. При чтении этих строк, в голове промелькнуло - а не вставить ли между "Нативное API" и "Harbour класс-обертка".... Delphi dll? Ну, это я в своем репертуаре А что, был бы качественный полный доступ к конкретным серверам...

AlexMyr: Пока автору подбрасывают пищу для размышления, пусть автор подумает над тем, что ему даст переход с действуюшей системы на ту, которую хочет начальство. Может быть после анализа получится что новая система будет не столь эффективна в сравнении с существующей?

S-A-N: AlexMyr пишет: Пока автору подбрасывают пищу для размышления... Да, ребята... "Пищи" набросали... Ешь - не хочу. Как говорится: то пусто, то густо. Наше безденежье - это временно (нас туда загнал предыдущий, слава богу уже снятый директор). Буквально только что новый (адекватный и вполне вменяемый) директор поставил мне несколько новых неотложных задач. Из-за сжатых сроков (должно работать "вчера") все будет решаться в устоявшемся стиле. В перспективе руководство видит несколько другую организацию бизнес-логики с увеличением числа клиентов. НО! Было заявлено, что "как и на чем реализовывать - смотри САМ" По поводу нашего IT персонала - весь персонал состоит из меня одного. Так сказать, от скуки на все руки. Приступаю к решению поставленных задач. По свободе буду пробовать LetoBD и Firebird. Что-то будет появляться - отпишусь, или постучусь с вопросами Спасибо всем откликнувшимся! Если кто-то еще поделится своим опытом или мыслями - буду рад.

Pasha: По поводу связки Harbour+FB Библиотеку hbfbird я пробовал использовать давно, еще в 2003-2004 году И впечатления были примерно такие, как у Петра - глючная она. С тех пор несколько раз смотрел ее - она оставалась примерно в том же состоянии. В каком состоянии она сейчас - не знаю, не смотрел. sddfb у меня не заработал вообще. С БД коннект был, но запрос не работал. Для своих целей я использовал adordd. С ней тоже были некоторые проблемы, которые я устранял правкой самого класса. В конце концов я остановился на выборках из БД fb непосредственно через ADO Recordset. Тут проблем не возникло никаких. Но при этом конечно не используются средства rdd

S-A-N: Pasha, спасибо - учту.

AlexMyr: S-A-N пишет: Буквально только что новый (адекватный и вполне вменяемый) директор поставил мне несколько новых неотложных задач. Вот как бывает, кучу информации перелопатил, в голове начало все выстраиваться и бац ..., что делать?

S-A-N: Ну, информация в любом случае на пользу, тем более, что в перспективе надо будет все-равно менять подход. А пока можно относительно спокойно поэкспериментировать, пробуя разные варианты.

SergejKis: Попробую обосновать для предложенных условий использование LetoDB. В Sql серверах конфликт операций Insert,Update,Delete и Select существут и приводит к снижению производительности особенно в длительном периоде работы (есть и др.факторы для простоты рассуждений я их отбрасываю). Разрешение конфликта разделить эти операции на два сервера. Итак два сервера: один для вых.форм др. для документов справочников, ... Какие формы перенести? Для начала годовые, квартальные, месячные, ... словом как-то определились. Получается ввод организовали, проводим периодически репликацию данных серверов, формы получаем. Сервер в худшем случае два разных физических диска в лучшем - два PC. Вернемся к начальству, оно требует движения вперд ... наверное в сторону интернета. Надо первым делом перевести или создать с нуля что-то нужное им (будут видеть что все движется и деньжат может быть подбросят на ...) Итак чем будем двигать вперед? Нас двое (трое) новой ставки не будет ! А сайт за два часа - это же говорят есть ?! Попробум двигать (если надо). Предлагают разные CMS: Денвер, Jumla, Wordpress, ... Смотрим внутренности, а там Apache 2.2, PHP 5.1/2, MySql 5.2 . Ура ! Если мы двигаемся так, то определенность с SQL сервером уже есть !!! Засада ! PHP я последний раз трогал в 2003,2004 гг. Воды много утекло. Возможно применим CGI или FastCGI hrb в Harbure есть. Выбираем CMS для пробы устанавливаем, берем шаблон, ага шевелится ..., Можно конечно без CMS, но вопросы управления контентом и т.д. останутся,. Смотим на сервер документов. Варианты переписать все ... я не рассматрию. Программы Clipper надо переводить в HB, часть уже на HB, значит надо использовать како-то RDD. Мне понравилось LetoDB, но это уже совершенно не принципиально - дело вкуса и наработок. Итак получилось два сервера MySql, LetoDB причем в такой связке LetoDB должен потянуть больше клиентов ?! Рассмотрим теперь отказ сервера к примеру на неделю (а может больше имею в виду порвали кабель связи, полетели диски) ... Копии и откаты баз мы делаем. MySql не смертельно, а вот сервер документов остановит работу предприятия ... Руководство однозначно скажет ДОЛЖНО РАБОТАТЬ !!! Совсем забыл про рабочие места к которым не дотянулась рука цивилизации (локалной сети). Следовательно при переводе на Harbor надо учесть работу сразу RDD LetoDB и CDX. Вернемся к формам, я понимаю, что сейчас они на DBF файлах работают и всех устраивают. Вывод сервер форм также LetoDB. И в CMS (если применяем ее) используем CGI с LetoDB. MySql и hbmysql (а возможно что-то другое) - дальнейшее развитие системы. или другими

Sergey Spirin: SergejKis пишет: В Sql серверах конфликт операций Insert,Update,Delete и Select существут и приводит к снижению производительности особенно в длительном периоде работы (есть и др.факторы для простоты рассуждений я их отбрасываю). Разрешение конфликта разделить эти операции на два сервера. Какие интересные и непостижимые тайны нам заодно открываются

SergejKis: Вам огромное спасибо за LetoDB !!! А писал я для S-A-N, т.к. он просил объснить почему после MySql и Firebird я перехожу к LetoDB. Вот заголовок заполнить в этом словоблудии (см. выше) как-то пропустил, простите. Прибегнуть к словоблудию пришлось по причине не понимания моих более коротких постов. Но я не писатель.

Sergey Spirin: SergejKis пишет: Заголовок: Для Sergey Spirin. Вам огромное спасибо за LetoDB !!! Это вы ошиблись. Благодарите Александра Кресина, а также Пашу и Петра, которые в проекте LetoDB участвуют. Я же никак с LetoDB "не завязан".

SergejKis: В догонку к тому, что писал ранее. Не бросайтесь (без острой необходимости) в перевод Clipper в HB. С LetoDB очень приемлемо (даже мобильный интернет) отрабатывает связка: перед GETами в Clipper Run Harbour клиент (connect, use, seek, RecNoValue to local dbf,disconnect) полученные данные в тек. запись, работа с GETами, после них повторение всех действий с клиентом Harbour, наконец GETы в тек. запись и опять через клиента HB на сервер LetoDB. На VO (отключены все компоненты даже RDD) это не проходило с приемлемой реакцией системы.

SergejKis: VO клиенты были для MySql и Firebird.

AlexMyr: SergejKis пишет: В догонку к тому, что писал ранее. Как то все сумбурно

Pasha: SergejKis пишет: перед GETами в Clipper Run Harbour клиент (connect, use, seek, RecNoValue to local dbf,disconnect) полученные данные в тек. запись, работа с GETами, после них повторение всех действий с клиентом Harbour, наконец GETы в тек. запись и опять через клиента HB на сервер LetoDB. А зачем так сложно ? Не проще было бы все делать через Hb+Leto, без всякой промежуточной пересылки данных между клиентами. Клиппер здесь лишнее звено

SergejKis: Модули S87,Clipper 5.2 работают под Linuks (один пользователь) и Windows обеспечивают три языка (латышский,русский,англ. одновременно). Под Win обвязанные клиентские dll в VO для MySql и Fireberd (именно сейчас провожу работы по переходу на LetoDB). В 2004 для Win была сделана уникодная консоль под которой и работают модули. HB стал интересен имеено с 2.0 версии. А пример демонстрирует скорострельность HB+LetoDB даже в такой экзотике. Но самое смешное, то что при уходе с Sql servera это оказалось самым простым путем. А перевод в HB не так прост в моем случае: с 1990 г. в S87,Clipper 5.2 полностью заменен вывод на экран (на PC 286 летало)

Andrey: SergejKis пишет: А перевод в HB не так прост в моем случае: с 1990 г. в S87,Clipper 5.2 полностью заменен вывод на экран (на PC 286 летало) Что-то слишком сумбурно написано.... Ничего не понятно.... Хотя я сам косноязычеем страдаю...

SergejKis: Конечно не понятно... Мысль не закончил, срочно оторвали к делам. Все Си перевели. и некоторое модули тоже ... все путем ...,но для Linuks Clipper модуль менять не надо, а с HB ... . С уникодной консолью под, под которой работают Clipper модули мне и HB вроде не нужен ... С организацией работы Clipper+Ftp+Sql (для Linuks она не сделана - клиенты на нем постепенно отмирают) и обменом с сервером только изменеными данными (об этом я писал в постах начала темы) позволяют иметь практически не ограниченное кол-во клиентов, а также отсутсвие связи с сервером не останавливает работу на рабочих местах и позволяет подключать места не оборудованые связью с сервером. Где нужен HB ? LetoDB в первую очередь !!! Я же не выбрасываю Sql, а наращиваю компоненты - это значит функцииональность LetoDB доводится до методики работы Sql сервера, т.е. в LetoDB вносим изменения: - при создании таблицы добавляем (если их нет) поля: 1. IDNUMER autoincrement 2. DTMODIFY дата модификации Timestamp (формат C) 3. DTINSERT дата ввода 4. DTDELETE дата удаления 5. STATUS последняя операция проведенная над записью (A/R/D). - Добавляем HB функцию для заполнения и включаем ее вызов в нужном месте собираем ... и ВСЕ никаких тебе триггеров ни лишних функций hrb ... СУПЕР по сравнению с SQL серверами !!! Второе направление это GUI HB+QT. Но там пока надо разбираться, слишком много и нет понятия по действиям в НВ при смене версии QT ... Примерно понятно, но похоже здесь пока проблеммы ... Может что и пропустил, но в целом как-то так.

SergejKis: Пропустил направление HB+HTMLayout. HTMLayout.dll в работе с 2007 г. и соединение с HB кажется интересным. посмотреть здесь:http://www.terrainformatica.com

S-A-N: SergejKis пишет: посмотреть здесь:http://www.terrainformatica.com Для заинтересовавшихся - наткнулся на русскоязычный форум по HTMLayout: http://www.rsdn.ru/forum/group/htmlayout.aspx М.б. есть и другие.

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, ... Что когда возвращаеся в проект(задачу) через пару лет, то разбираться что где лежит и что делает ... отнимает много времени. Добавление еще одного это время не сократит. Но за ответ спасибо.

Lopatin: Здравствуйте. Пишу на Harbour 2.0.0, консольное приложение, своя база dbfcdx. Возникла задача обмениваться данными посредством хранимых процедур с майкрософтовским sql сервером. (конкретно - преселинг "Оптимум") Требуется 1. подключиться к серверу HOME_PC, к базе Optimum 2. вызвать DMT_Set_UnitEx с параметрами {1,"Оплата",NULL,"Оплата наличными",1} и прочитать её ответ. Застопорился наглухо. Подскажите, возможно ли это сделать, и если - да, то как?

Pasha: Lopatin пишет: Пишу на Harbour 2.0.0, консольное приложение, своя база dbfcdx. Возникла задача обмениваться данными посредством хранимых процедур с майкрософтовским sql сервером. (конкретно - преселинг "Оптимум") Требуется 1. подключиться к серверу HOME_PC, к базе Optimum 2. вызвать DMT_Set_UnitEx с параметрами {1,"Оплата",NULL,"Оплата наличными",1} и прочитать её ответ. Застопорился наглухо. Подскажите, возможно ли это сделать, и если - да, то как? Думаю, надо смотреть в сторону ADODB.Command Поищите примеры, скажем вот: http://www.sql.ru/docs/mssql/adoandsql/index.shtml

Lopatin: Pasha пишет: Думаю, надо смотреть в сторону ADODB.Command Спасибо, толкнули в нужном направлении. Почитав о принципах работы ADODB встретил язвительное упоминание о схожести с "SQLCMD.EXE", им и воспользовался. Может, кому-нибудь пригодится такой вариант. 1. Создаю текстовый файл с SQL инструкциями "DMT_Set_PaymentTypeEx.Txt" Execute DMT_Set_PaymentTypeEx "1","Оплата",NULL,"Оплата наличными",1 Execute DMT_Set_PaymentTypeEx "2","Черновик",NULL,"Черновик",1 2. Выполняю [pre2]SQLCMD.EXE -E -S HOME_PC -d Optimum -i DMT_Set_PaymentTypeEx.Txt -o DMT_Set_PaymentTypeEx.Res[/pre2] 3. Читаю и анализирую содержимое DMT_Set_PaymentTypeEx.Res Вероятно, можно и проще, но под мои задачи подошло.

al-sklif: Всем доброго времени суток! У меня приложение крутится на MSSQL 2000. Используя сборку от Филатова, я написал задачку, которая бэкапит, архивирует базы и копирует архивы по другим носителям. При этом я использую утилиту OSQL, что, в принципе аналогично методу Lopatin'а. Но, все-таки, может у кого-то есть примерчик, как приконнектиться и сделать бэкап с помощью ADO? Спасибо

azoo: Есть ли у кого-нибудь рабочий пример доступа из консольной Harbour-программы к данным из базы MySQL. Допустим все данные в DBF, а в MySQL есть один внешний справочник из которого нужно выбирать запись по коду.

rvu: Не знаю куда с этим. Напишу сюда: Есть базы MS SQL. Нужно из них взять данные для базы dbf. Как это лучше сделать?

Pasha: Один из вариантов - с помощью rddado. А лучший он, или нет - кто его знает. Может есть способ и получше.

rvu: Pasha пишет: rddado А можно про него подробнее? Или гуглить? И есть ли он в xHarbour? Или только в Harbour?

Pasha: Есть и в xHarbour, и в Harbour В Harbour - в папке extras\rddado. Библиотеку надо собирать самостоятельно, скрипт для сборки имеется. Есть и примеры использования. mysql1.prg - пример для mysql. Для MS SQL надо использовать команду: USE ... VIA "ADORDD" TABLE ... SQL ...

rvu: Pasha пишет: В Harbour - в папке extras\rddado. Библиотеку надо собирать самостоятельно, скрипт для сборки имеется. Нашел в папке examples. Библиотеку собрал. Теперь выдает: Error: Unresolved external '_HB_FUN_WIN_OLECREATEOBJECT' referenced from C:\HB30\LIB\WIN\BCC\RDDADO.LIB|adordd Error: Unresolved external '_HB_FUN_WIN_OLEAUTO' referenced from C:\HB30\LIB\WIN\BCC\RDDADO.LIB|adordd Нашел. hbwin.lib нужен для OLE.

azoo: rvu , у Вас Получилось подвязать MSSQL ?

rvu: azoo пишет: у Вас Получилось подвязать MSSQL ? Нет, тогда не получилось. Мучился несколько дней, потом это дело забросил, а сейчас опять очень нужно. Я. конечно, могу вспомнить, что тогда было, но боюсь опять ничего не получится. Неужели никто никогда не подключался? MS SQL у нас 2000.

Dima: rvu пишет: Неужели никто никогда не подключался? Попробуй спросить гугл например такой строкой harbour ms sql

rvu: azoo пишет: у Вас Получилось подвязать MSSQL ? Как минимум я к нему подключился и нужную мне информацию забрал. Это оказалось совсем не сложным, ибо нашелся готовый пример в Минигуи.

Andrey: rvu пишет: ибо нашелся готовый пример в Минигуи. Дай тогда для всех путь к примеру ?

Dima: Andrey пишет: Дай тогда для всех путь к примеру ? В Far Manager поиск фразы SQL по примерам у тебя молчит разве , или FARа нет ?

rvu: Andrey пишет: Дай тогда для всех путь к примеру ? \MiniGUI\SAMPLES\Advanced\MSSQL\

Andrey: Dima пишет: В Far Manager поиск фразы SQL по примерам у тебя молчит разве , или FARа нет ? Поиск есть, но может быть несколько примеров и тогда непонятно о чем вел речь автор.

azoo: А можно ли данный пример адаптировать под Harbour (без miniGUI)?

SergKis: azoo пишет А можно ли данный пример адаптировать под Harbour (без miniGUI)? [pre2] 1. Замените button менюшкой, на выполнение то, что в action функции, эти строки @ 30,400 button btnButton1 caption "Connect to database" width 150 action ConnectDatabase() @ 60,400 button btnButton2 caption "Create table" width 150 action Table_Create() @ 90,400 button btnButton3 caption "Fill with data" width 150 action Table_Fill() @120,400 button btnButton4 caption "Browse data" width 150 action Table_Browse() @150,400 button btnButton5 caption "Disconnect" width 150 action DisconnectDatabase() 2. Замените label на SAY, а textbox на GET, строки @ 32 , 30 label labLabel1 value "Server:" width 60 @ 30 ,100 textbox txtServer value "SERVER\SQLEXPRESS" width 250 @ 62 , 30 label labLabel2 value "Database:" width 60 @ 60 ,100 textbox txtDatabase value "test" @ 92 , 30 label labLabel3 value "Table:" width 60 @ 90 ,100 textbox txtTable value "demo" @ 122, 30 label labLabel4 value "Username:" width 65 @ 120,100 textbox txtUser value "sa" @ 152, 30 label labLabel5 value "Password:" width 60 @ 150,100 textbox txtPass value "pass" это в функции ConnectDatabase() делаем 3. строки Win1.btnButton1.Caption := "Connected" Win1.btnButton1.Caption := "Connect to database" ... это статусные сообщения -> в SAY замените (строка индикации) 4. строки MsgInfo( "Table '"+win1.txtTable.value+"' created." ) - сообщение информационное MsgStop( "Table '" + win1.txtTable.value+"' not created." ) - ошибка заменяем Alert(...) 5. строки DEFINE WINDOW Win2 ; AT Win1.row+100,Win1.col+10 ; WIDTH 500 HEIGHT 400 ; TITLE 'Browse MSSQL data' ; MODAL; FONT 'Arial' SIZE 10 ON KEY Escape ACTION ThisWindow.Release @ 20,20 BROWSE brwBrowse1 ; ... END WINDOW ACTIVATE WINDOW Win2 ... меняем на browse(...) PS. Если пункт "Connect to database" выполнен успешно - работают остальные пункты меню, иначе нет соединения с sql [/pre2]

rvu: rvu пишет: Как минимум я к нему подключился и нужную мне информацию забрал. Понадобилось забрать рисунки из MSSQL 2000, тип поля image и не знаю как. Даже не обязательно забрать в харборовскую базу, можно просто файлом рисунка, так даже лучше. Как бы это сделать?

Dima: rvu пишет: Как бы это сделать? Погуглить можно......например вот

rvu: C#...

rvu: В итоге то что нужно, сделал на дельфи. Коллега нашел свою старую программу, которую я подправил под свои нужды. А C# у нас с ним так и не пошел. Та программа не заработала, а быстро разобраться с ней не смогли. Но в идеале было бы на харборе это сделать.

Pasha: rvu пишет: Но в идеале было бы на харборе это сделать. Можно использовать AdoRDD Можно работать с базой через механизм Ole, вызывая те же методы, что в примере по ссылке

rvu: Очередные проблемы с MSSQL. Забираю себе данные из него. Если таблица довольно большая, то моя программа отваливается. Просто валится без всяких сообщений об ошибке. Критично не число записей, а именно размер таблицы. Т.е. если полей больше, то и отвалится программа при меньшем числе записей. Вопрос даже не в том, как этого избежать, хотя это было бы здорово. Но можно ли как-то само событие отследить, предупредить сваливание программы?

alkresin: rvu пишет: Если таблица довольно большая, то моя программа отваливается. А вы читаете всю таблицу одним запросом?

rvu: alkresin пишет: А вы читаете всю таблицу одним запросом? Я подключаюсь, как в этом примере: rvu пишет: \MiniGUI\SAMPLES\Advanced\MSSQL\ Затем работаю с таблицей, будто она dbf. Забрал данные из записи, skip и далее. А как надо? Я просто другого не нашел.

alkresin: Посмотрел этот пример - да, там действительно одним запросом берется вся база и конвертится в dbf. Это, конечно, самый простой способ, но ... Помимо того, что это не будет нормально работать на сколько-нибудь больших базах, это крайне неэффективно и противоречит самому смыслу использования клиент-серверной технологии. Подумайте: чтобы найти и посмотреть несколько записей, вы скачиваете с сервера всю базу. Если вам нужен обязательно browse всей базы, забирайте с сервера по частям - те куски, что будут сейчас на экране, может, с небольшим запасом. Я не знаком с minigui и его browse, но там должны быть какие-то обработчики, блоки кода, чтобы контролировать чтение данных из источника. В качестве примера, чтобы посмотреть, о чем речь, могу порекомендовать свой менеджер для sqlite: https://github.com/alkresin/dbc_sqlite. Это, естественно, на hwgui, но общая концепция от gui не зависит.

Haz: alkresin пишет: одним запросом берется вся база и конвертится в dbf Тоже пример посмотрел. Вроде нет там конвертации ни частями , ни целиком. Все в рамках идеологии клиент-сервер 1) Connect он и в любом сервере коннект 2) Create - тоже 3) Fill - обычный SQL запрос Insert into построчно 4) Browse - есть о чем поговорить , но для данного примера все правильно а поговорить вот о чем: SELECT * не всегда нужно , действительно лучше определенные поля и именно те которые нужны , запрос короче, выполняется быстрее , трафик меньше и тд. ( в этом примере нужны все ) BROWSE - не всю базу тащит сразу , а только на количество записей в окне самого бровса и не принципиально сколько там миллионов записей в базе, подкачка будет динамической если это бровс , а не грид по заранее заполняемому массиву. из подводных камней - только то что при навигации в пределах окна данных, бровс каждую запись дергает несколько раз ( во всяком случае TSBrowse из MG ), второй камень , это в бровсе подстановка данных ( вместо поля с ID , показываем значение из справочника ). И эти камни не относятся к SELECT * 5) и обычный Disconnect То что по частям бровсить может быть оптимальнее согласен, но в паре с кешированием этой части на клиенте и при плохом канале. При поиске разумеется SELECT cField WHERE cCondition, а не SELECT * и потом WHILE !cCondition

alkresin: Да, конвертации, вроде, нет - это я поторопился. Но все остальное - в силе. Проблема в этом предложении: DBUSEAREA( .T.,"SQLMIX", "SELECT * FROM "+Win1.txtTable.value, "table" ,,,,nSQLConnection ) Как я понял из rddsql/readme.txt, при этом выкачиваются сразу все записи (в исходники их лезть неохота, чтобы проверить) - это и ожидаемо, иначе программа не вылетала бы.

SergKis: rvu пишет Я подключаюсь, как в этом примере: \MiniGUI\SAMPLES\Advanced\MSSQL\ В работе не использовал бы схему этого примера в лоб. Выборки получал бы в MEMIO\DBF или array для показа в TBROWSE\BROWSE с использованием WHERE и LIMIT, т.к. после WHERE может быть много записей и та же фигня Критично не число записей, а именно размер таблицы. Т.е. если полей больше, то и отвалится программа при меньшем числе записей. Для работы с DBUSEAREA( .T.,"SQLMIX", "SELECT * FROM "+Win1.txtTable.value, "table" ,,,,nSQLConnection ) ( дополненной WHERE LIMIT ) на TBROWSE вешал бы обработчики (можно кнопки) листания (смены LIMIT), но это, лениво, обошелся бы в большинстве случаев выборкой как сказал выше. Кроме просмотра есть и др. операции, т.е. для каких целей выборка.

rvu: SergKis пишет: т.е. для каких целей выборка Лично мне нужно просто разово забрать все данные из базы sql. Дальше уже работаю с файлом dbf. Собственно, для этих целей я могу их и кусками забрать, а потом уже у себя склеить. Так что сейчас мне не критично разобраться в этом, это потом для красоты процесса можно.

PSP: rvu пишет: могу их и кусками забрать Конечно кусками. Весь смысл SQL в оптимальных запросах.

SergKis: rvu пишет Лично мне нужно просто разово забрать все данные из базы sql. Дальше уже работаю с файлом dbf. Тогда, возможно, достаточно утилиты типа isql.exe (в mysql, fb есть, должна быть и для mssql). Запрос SELECT * FROM ... должен работать точно. Результат можно получать в xml или txt файлах и заливать в dbf для работы. Для команд INSERT, UPDATE, ... так же можно исп. эту утилиту. Работает быстро и работа в фоне ... тоже свои ++

rvu: SergKis пишет: Результат можно получать в xml или txt файлах и заливать в dbf для работы. Это лишнее движение будет. Я запросом в sql делаю нужную мне выборку во временную таблицу, из нее напрямую перекачиваю данные в dbf.



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