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

PSP: Может так: AdsConnect("//127.0.0.1:6262") ? И, эта, 127.0.0.1 - это локальный компьютер. АДС на нем же запущен?

Dima: Dima пишет: 127.0.0.1 С таким адресом похоже он не пашет. Разобрался. Задал реальный адрес и заработало. А как мне правильно открыть базу которая лежит в C:\TEST\DBF\KARTA.DBF по IP и порту заданному в ADS.INI ? Может чего надо прописать в ADS.INI....

Dima: PSP пишет: АДС на нем же запущен? Да


Dima: PSP пишет: Может так: AdsConnect("//127.0.0.1:6262") ? Точно. Так работает. Спасибо. Глазик замылился ;) А как базу открыть ?

PSP: Дим, я с АДС не работал. Сорри...

Pasha: Когда я работал с ads. обязательно надо было расшаривать сетевой ресурс, и при открытии указывать имя файла в формате unc. Можно еще использовать data dictionary. но с ним я не работал. Если еще AIS, там конечно расшаривать ничего не надо, так как это сделать невозможно, но с ним я опять таки не работал.

Dima: Все таки нашел путь ;) В ASD.INI Делаем [pre2] [DRIVES] x:=//127.0.0.1/C$/sklad/dbf/ [/pre2] А в проге USE x:karta Можно и так Set path to x: use karta ЗЫ При чем расшаривать не надо (буква X: в проводнике не появится) Интересно в ADS есть похожие вещи как в LETO ? LETO_VARSET LETO_VARGET LETO_VARDEL

Pasha: Dima пишет: [DRIVES] x:=//127.0.0.1/C$/sklad/dbf/ А если доступ c$ закрыт, работать будет ? В доке, правда к ads 9.x, написано: [DRIVES] If you wish to connect to the Advantage Database Server via the Advantage Internet Server, and your application uses drive letters, you will need a [DRIVES] section to contain the information needed for an Internet connection to Advantage. The [DRIVES] section should contain a list of all drive letters used by the application and the server name and share (or volume) in which the drive letter should map on the server in which the Advantage Database Server is running. The server name and share (or volume) should be UNC (\\SERVERNAME\SHARE).

Dima: Pasha У меня служба доступа к файлам и принтерам вообще выключена и ни чего не расшарено. А попробуй у себя в браузере строку вбить [pre2] \\127.0.0.1\c$ [/pre2] Правда если сделать вот так net share c$ /delete то доступа не будет

Dima: А есть ли возможность в ADS управлять переменными как в LETO ? Или может какой то похожий инструмент там есть ? Есть там семафоры но как ими управлять ХЗ

Dima: Вопросец нарисовался. Папка с выполняемым файлом лежит на серваке и расшарена. Все рабочие станции юзают этот расшаренный EXE. Такая схема вполне работоспособна еще со времен Clipper. НО в этой же папке лежат и файлики которые нужны для работы ace32.dll axcws32.dll Не будет ни каких конфликтов с этими DLL и будут ли они цепляться при таком подходе при загрузке программы ?

Dima: Ответ как бы сам меня нашел ;) Запустил прогу. После этого убил выполняемый файл и оба DLL , прога нормально функционирует. Значит при загрузке программы и прога и DLL грузятся в память. Что интересно такой фокус с удалением для Clipper EXEшника не работает.

nick_mi: Странно, я не могу удалить EXE файл, когда он работает, заметил еще во время перекомпиляции программы. Удалять DLL во время работы программы не пробовал. А вообще у нас изначально все программы запускаются из расшаренного диска, правда пока у нас вся система крутится на серверах NOWELL и ADS. Полностью на Windows сервера может быть начнем переходить осенью

Dima: Как работать с ADS в локальной сети понятно. Встала задача работать с этой же базой через инет. С чего тут правильно начать ? В самом ADS прописать инет порт это ясно В проге установить AdsSetServerType(4) Пробую цеплятся AdsConnect(инетIPадрес+порт) и глухо

Dima: Dima пишет: Пробую цеплятся AdsConnect(инетIPадрес+порт) и глухо Разобрался. Хорошо есть где почитать. Например тут Cоздал DATADICTIONARY c помощью Advantage Data Architect , и разрешил юзать базу по инету. В итоге подключился , базы открываются , все как бы красиво. Но возник вопрос как быть с файловыми операциями. Как минимум нужны Ferase(), Fopen(),Directory(),Fcreate(),File() Из аналогов в ADS нашел только три: AdsDirectory() , AdsDeleteFile(),AdsCheckExistence() (аналог File()) Маловато будет. Что же делать ?

Haz: Dima, Удалось подключиться через инет ? возникла мысль может это с типом таблиц связано, не уверен в этом , но вот что есть в хелпе по ADS Advantage Client Engine API To connect to an Advantage Database Server over the Internet using the Advantage Client Engine API, you will need to call AdsConnect60 with the full path to the data dictionary and with ADS_AIS_SERVER as the second parameter or as part of the second parameter. Example: ulRetVal = AdsConnect60( "q:\\test.add", ADS_AIS_SERVER, "User1", "foobar", ADS_DEFAULT, &hConnect );

Dima: Haz пишет: Удалось подключиться через инет ? Да только не хватает мне файловых операций. Нормального аналога функции File() нет , похожий аналог AdsCheckExistence() совсем не аналог оказался ;) Тупо ищет только *.dbf при чем только те что объявлены в DATADICTIONARY. Файл семафора создать тоже не могу так как ни проверить его существование ни создать не выходит. Молчу уже про MakeDir() , нормальный Directory() и тд и тп В этом плане LetoDB намного гибче

Dima: Насчет файловых операций. [pre2] First thing you have to understand when using AIS (advantage internet server) is that you are not having access to a file server directory, only to the database, so you cannot perform any activity related with OS file operations, for example you cannot make a FILE() or FCOPY() operation, you cannot create tables (unless you do it via SQL). [/pre2]

pureproft: Если нет желания или возможности написать что то параллельно работающее и получающее задание по ip, то я в таких случаях на удалённом офисе(т.е. чуть шире чем сервере) пишу и запускаю что то ожидающее заданий в вашем случае в таблицах ADS(например по таймауту проверяющее их наличие) и в них же отчитывающееся о успешном или нет выполнении оных, таким образом можно даже ОС переустановить в удалённом офисе где то в интернете

Pasha: В харборе на этот случай есть драйвер netio. Можно собрать netio-сервер, запустить его как приложение, и клиент может обращаться к нему с запросами по файловым операциям. А в качестве запросов будут собственно вызовы обычных файловых функций, для memio мы их разбирали: FErase("netio:" + ...) и так далее только File() мне кажется так работать не будет, но ей можно найти замену, та же Directory, или FileSeek(), или что-то еще



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