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

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]



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