Форум » [x]Harbour » Как прицепится к ADS по сети ? » Ответить

Как прицепится к ADS по сети ?

Dima: Есть ADS 10.10 в настройках у него стоит порт 6262 Вот таким исходником пытаюсь к нему подрубиться. [pre2] #include "ads.ch" proc main REQUEST ADS rddSetDefault( "ADSCDX" ) SET SERVER REMOTE SET CHARTYPE TO OEM ? AdsConnect("MYSERVER") // .f. ? AdsConnect("//127.0.0.1/:6262") // .f. return [/pre2] ADS.INI в папке с прогой [pre2] [MYSERVER] LAN_IP=127.0.0.1 LAN_PORT=6262 [/pre2] Где мой косяк ?

Ответов - 257, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All

Dima: vladru пишет: Т.е. RDDADS для версии ADS 5.5 будет работать с моим локальным ADS сервером версии 9.1 ? Нет. С версией 5.5 9.1 вам зачем я не пойму ?

vladru: Dima пишет: 9.1 вам зачем я не пойму ? Дык, а где мне дома взять локальный сервер версии 5.5, да еще под win?

Dima: vladru пишет: Дык, а где мне дома взять локальный сервер версии 5.5 Он уже есть в составе ACE линк на который я давал (adsloc32.dll) ace.h я забыл вот http://gfile.ru/a2eNn


nick_mi: Ну вообще-то версия RDD для 5.5 и соответствующий ACE32.DLL должен работать с сервером 9.9. По крайней мере, я когда-то пробовал на 10 версии для WIN, и у меня работало, и CLIPPER в том числе. Клиент более низкой версии допускает работу с сервером более высокой версии. Наоборот только работать не будет.

vladru: Понял. -Значит крушу свой ADS 9.1 - он уже нафиг не нужен; -кладу в папку с прогой Ваш архив -в программе делаю SET SERVER LOCAL (если у себя запускаю) (тогда программа будет делать серверные вызовы через DLL из папки программы) Осталось только RDDADS пересобрать под присланный Вами acesdk5.5. (И всё-же где написано как это сделать не пересобирая весь Harbour ?)

Dima: vladru Лезем в папку harbour\contrib\rddads\ Там создаем батник (даю свой вариант....правьте) [pre2] set PATH=C:\MinGW\bin set HB_INSTALL_PREFIX=c:\hb32mingw set HB_DIR_ADS=C:\ads.10.10\acesdk set HB_WITH_ADS=C:\ads.10.10\acesdk c:\hb32mingw\bin\hbmk2 rddads.hbp [/pre2] После правки запускаем его и должен собраться RddAds

vladru: У заказчика оказывается ADS 7.1 под Novell. Меня чего-то сглючило на 5.X. - Я скачал acesdk 7.1. с сайта http://devzone.advantagedatabase.com/ - пересобрал rddads с ним как указал Dima Заказчик запускает у себя на машине где стоит ADS Novell такой скрипт: #include "ads.ch" proc main REQUEST ADS rddSetDefault("ADSCDX") SET SERVER REMOTE ? AdsConnect("Z:") // .F. ? AdsConnect("z:") // .F. ? AdsConnect("\\Server") // .F. return Результат удручает - к ADS серверу не подключается. Что может быть не так?

Dima: а если добавить rddRegister("ADS",1) AdsRightsCheck(.F.) и юзануть AdsIsServerLoaded() Netware у него по IPX работает ? Novell Client на рабочей станции стоит ?

Dima: vladru пишет: AdsConnect("\\Server") Тут этого видимо мало будет и нужно указать том еще [pre2] Parameters pucServerName (I) Full file path of the data dictionary file, server name, or drive letter to which to connect. If the application uses a server name as the parameter, it must include the share name for Windows, path from the root for Linux, or volume name for Novell NetWare as well. For example, use "\\server\share", "\\server\path_from_root", or "\\server\volume". Linux users can also connect to the local machine using a direct path such as "/mydata". All Advantage clients and servers consider either slash type (forward or backslash) to be a path delimiter, this means you could also use a connection path with forward slashes, such as "//server/volume". Linux users should also reference the REPLACE_UNC_SERVER section in the ads.ini documentation. [/pre2] PS я когда юзал ADS по IPX из Harbour то AdsConnect вообще не использовал и пробни \harbour\contrib\rddads\tests\manage.prg только там поправить придется кое что Вместе со своим EXE давал ему еще и "ansi.chr","extend.chr","ace32.dll","axcws32.dll" ?

vladru: Dima пишет: Вместе со своим EXE давал ему еще и "ansi.chr","extend.chr","ace32.dll","axcws32.dll" ? Да, давал. я когда юзал ADS по IPX из Harbour то AdsConnect вообще не использовал Может дадите примерчик как подключались/пользовали ? Или Вы просто имеете ввиду что никаких доп.движений не делали. Только REQUEST ADS SET SERVER REMOTE а дальше работаем с базой как обычно Netware у него по IPX работает ? Novell Client на рабочей станции стоит ? Да, да. Я еще не понимаю как указать что надо IPX использовать. Вроде, из документации, ads-клиент это сам должен понять... Может каие-то dll нужны или доп.движения ? Насчет AdsIsServerLoaded: #include "ads.ch" proc main REQUEST ADS rddRegister("ADS",1) AdsRightsCheck(.F.) rddSetDefault("ADSCDX") SET SERVER REMOTE ? "AdsIsServerLoaded result:", AdsIsServerLoaded() // ответ 0 return Ну вроде 0 это как раз и хорошо? т.к. согласно ADS.HLP: AdsIsServerLoaded возвращает целое число и AE_SUCCESS как раз 0 (посмотрел в ace.h) (правда согласно тому же ADS.HLP: AdsConnect тоже должна возвращать целое, а в harbour возвращает почему-то логическое....) еще, кстати, в ADS.HLP написано AdsConnect устарела и надо использовать AdsMgConnect manage.prg - поправил/построил, но испытать на Novell уже не успел (выходные)

vladru: Dima Спасибо за Ваши ответы. Пока разобрался, но может еще будут вопросы.... На сегодня выводы такие: 1. AdsConnect использовать, наверно, не стоит т.к. она возвращает только T/F. Вместо неё есть AdsMgConnect. Она возвращает 0 или код ошибки. 2. Описание ошибки есть в ADSERROR.HLP для старых ACE или в advantage.chm для 9. Так я узнал что моя проблема была в том, что версия клиента была старше версии сервера (ошибка 6316) 3. Если есть вопросы по подключению к ADS сначала см. \contrib\rddads\tests\manage.prg

Dima: Похоже фича dborderinfo(DBOI_SKIPWILD,,,cPattern) в ADS не работает... Печалька.

Haz: вроде уже писали здесь об этом - не работает. http://clipper.borda.ru/?1-4-580-00000368-000-0-0 мож через sql запрос можно вывернуться ?

Dima: Haz пишет: мож через sql запрос можно вывернуться ? может но не знаком с ними

Haz: Dima пишет: не знаком Рекомендую, многое становиться очень просто, и к тому же с авто оптимизацией ( по возможности ) на сервере. создаешь словарь, добавляешь в него таблицы и выполняешь запрос , результатом которого будет открытая рабочая область с нужными записями из одной или нескольких таблиц сведенных в одну автоматом. PS для твоего случая в синтаксисе есть оператор LIKE cPattern

Dima: Haz пишет: PS для твоего случая в синтаксисе есть оператор LIKE cPattern Можешь примерчик показать ?

Dima: Haz Нашел инфу на форуме. Сделал вот так , но AdsCreateSQLStatement(,2) выдает .F. [pre2] proc main #include "ads.ch" local sQlStr REQUEST ADS rddSetDefault( "ADSCDX" ) REQUEST HB_LANG_RU866 HB_LANGSELECT("RU866") REQUEST HB_CODEPAGE_RU866 hb_cdpSelect( "RU866" ) SET SERVER LOCAL AdsSetFileType(ADS_CDX) AdsRightsCheck(.F.) use volvo exclusive new index on indeks to ttt ? AdsConnect( ".\" ) // .T. ? AdsCreateSQLStatement(,2) // .F. sQlStr:='SELECT * FROM volvo WHERE indeks Like "%44%"' ? AdsPrepareSQL(sQlStr) // .F. ? AdsExecuteSQL(sQlStr) // .F. wait return [/pre2]

Dima: Dima пишет: use volvo exclusive new index on indeks to ttt ? AdsConnect( ".\" ) // .T. ? AdsCreateSQLStatement(,2) // .F. sQlStr:='SELECT * FROM volvo WHERE indeks Like "%44%"' ? AdsPrepareSQL(sQlStr) // .F. ? AdsExecuteSQL(sQlStr) // .F. Не много переделал [pre2] select 100 ? AdsConnect( ".\" ) // .T. ? AdsCreateSQLStatement(,2) // .T. sQlStr:='SELECT * FROM volvo WHERE indeks Like "%44%"' ? AdsPrepareSQL(sQlStr) // .T. ? AdsExecuteSQL(sQlStr) // по прежнему .F. , почему ? ? AdsGetLastError() // 7200 [/pre2]

Haz: только дошел до компа. делал примерно так IF AdsCreateSqlStatement( cAlias, 3 ) // использовал ADT а не CDX - думаю не принципиально IF ADSVERIFYSQL( cSql ) AdsExecuteSqlDirect( cSql ) ELSE END позже попробую примерчик подробнее

Dima: Haz Ради теста чеканул sQlStr:="SELECT * FROM VOLVO WHERE FIRMA=7" ? ADSVERIFYSQL(sQlStr) // .F. що за на фик..........вроде ж нормальный запрос



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