Форум » [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: Haz пишет: может перед дисконнектом кеш слить сначала ? Это как ? Не пойму как у этих ребят работают SQL запросы без словарей Попробовал не получилось. http://forums.fivetechsupport.com/viewtopic.php?f=6&t=2869 Обнаружил вот такую штуку. Если после того как поработав с SQL выборкой , хочу закрыть сам словарь вот такой последовательностью AdsConnection() AdsDisconnect() AdsConnection() AdsConnection(adshandle) То при первом таком срабатывании все отлично и словарь точно закрывается и это видно по кол-ву коннектов на мониторе ADS и ошибок нет. Но стоит повторно снова подключится к словарю и поработав с SQL выборкой снова дать такую же последовательность команд то выпадает выше описанная ошибка 10054 Вроде ж не должно ее быть а она есть.

Dima: Dima пишет: Не пойму как у этих ребят работают SQL запросы без словарей Попробовал не получилось. http://forums.fivetechsupport.com/viewtopic.php?f=6&t=2869 Поспешил я с выводами. Все работает и без создания словаря базы данных. С одним ограничением. Саму базу нельзя открывать через USE (Dbusearea) если она присутствует в SQL запросе.

Haz: Dima пишет: USE (Dbusearea) если она присутствует в SQL запросе. думаю это неспроста , у меня помню были странные глюки если использовал и USE и словари


Dima: Haz пишет: думаю это неспроста , у меня помню были странные глюки если использовал и USE и словари Я не об этом писал. Речь шла о том что словарь совсем не используется а базу открываем через SQL запрос и это работает. Чуть выше ты писал что SQL запрос возможен только если используется словарь. Оказалось что это не так. Пример. Если стандартно открывать базу USE TEST SHARED NEW Browse() Если через запрос (без словаря данных) AdsCreateSqlStatement(,2) AdsExecuteSqlDirect("SELECT * FROM TEST") Browse() Правда это в разы медленнее нежели через словарь или обычным способом. Оно и понятно почему.

Dima: Haz Вопрос. Загнал я базы в словарь и затем открываю их скажем через обычный USE. Это работает , проверил. Если пытаюсь открыть любую базу вне словаря то не получается , понятно почему. Каким образом мне создать и открыть временную базу под управлением ADSCDX ?

Haz: Dima пишет: Каким образом мне создать и открыть временную базу под управлением ADSCDX ? так обычный DbCreate() работает вроде и создает базу не в словаре или так cBaseName := "Payment" cSql := "CREATE TABLE Data\" + cBaseName + "(" + ; "ID Autoinc," + ; "Date Date," + ; // "ID_OR Integer," + ; // "ID_CS Integer," + ; // "Summa Numeric( 14, 2 )," + ; // Сумма платежа "Note CIChar( 100)" + ; // прнимечание ")" IF ! FILE( cBasePath + "\Data\" + cBaseName + ".adt" ) SQL(, cSql ) AdsDDaddTable( cBaseName , "Data\" + cBaseName + ".adt", "" ) END или уже опробованным способом SELECT ... INTO #

Haz: как вариант может быть еще и то что при добавлении таблицы в словарь ADS метит ее в заголовке символом CHR(1) и таблица становится not free у ADS где то есть даже утилита для освобождения таблиц. Таблица также освобождается при удалении ее из словаря.

Dima: Haz ok

Dima: А как заставить прогу подключаться к ADS если нет сетевой платы (или в нее не вставлен кабель) Прога и ADS лежат на одном компе ? adsConnect("\\127.0.0.1:6262") // .F. ? AdsConnection() // 0 Microsoft loopback адаптер я установил , правда на нем желтый знак восклицания. Куда копать ? ЗЫ Разобрался. В качестве IP нужно давать что то типа 169.254.x.x

Vlad04: ? adsConnect("\\127.0.0.1:6262") // .F. ? AdsConnection() // 0 Я для локальной базы и локального сервера пишу так AdsConnect('C:\') ... AdsdISConnect('C:\') Иногда указываю и реальный путь, если все таблицы находятся в одном месте , или наибольшее их количество в одном месте (тогда грамматика запроса упрощается): AdsConnect('C:\Progi\dsf\') ... AdsdISConnect('C:\Progi\dsf\')

Dima: Vlad04 Да можно и так. Просто я привык использовать IP адрес.

Dima: Пересел на семерку Ранее в XP вот это работало AdsConnect("\\127.0.0.1:6262") В семерке не хочет зараза. Файер от DRWEB отключал (встроенный выключил) Если прописать прямой путь то работает. Куда копать ?

Dima: смотрю я не один http://devzone.advantagedatabase.com/dz/content.aspx?key=48&id=195150 и как же решить вопрос ?

PSP: Попробуй отключить IPv6 в свойствах сетевого адаптера.

Dima: PSP пишет: Попробуй отключить IPv6 в свойствах сетевого адаптера. Отключено

Dima: Фуф ;) Нагуглилось , работает ADS.INI в [SETTINGS] добавляем строку USE_TCP_IP=1

PSP: Dima пишет: Фуф ;) Всё гениальное - просто )))



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