Автор | Сообщение |
|
| |
Пост N: 2932
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.04.13 20:38. Заголовок: Как прицепится к ADS по сети ?
Есть ADS 10.10 в настройках у него стоит порт 6262 Вот таким исходником пытаюсь к нему подрубиться. #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 ADS.INI в папке с прогой [MYSERVER] LAN_IP=127.0.0.1 LAN_PORT=6262 Где мой косяк ?
|
|
|
Ответов - 257
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[только новые]
|
|
|
| |
Пост N: 226
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.14 11:06. Заголовок: Dima пишет: А выход..
Dima пишет: мне кажется даже два коннекта из одной проги к одному серверу не оч правильно ))) мож еще чего полезет ... кто знает, или коллизии по блокировке пойдут. попробуй все ж через словарь, а то одна нога в лыже а другая в коньке получается
|
|
|
|
| |
Пост N: 3968
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.14 11:08. Заголовок: Haz пишет: а то одн..
Haz пишет: цитата: | а то одна нога в лыже а другая в коньке получается |
| пока так и есть
|
|
|
|
| |
Пост N: 227
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.14 11:17. Заголовок: Dima пишет: пока та..
Dima пишет: главное что работает, хуже не бывает что то улучшать - обычно заканчивается полной переделкой всего
|
|
|
|
| |
Пост N: 3971
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.14 14:21. Заголовок: Вообще странно что н..
Вообще странно что нельзя организовать SQL запрос из под простого AdsConnect , не AdsConnect60 То ли не доработка то ли фича такая.
|
|
|
|
| |
Пост N: 230
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.14 15:03. Заголовок: Dima пишет: То ли н..
Dima пишет: цитата: | То ли не доработка то ли фича такая. |
| наверное это фича ADS чтоб использовать словарь. Вместо AdsConnect можно использовать AdsConnect60, а наоборот нельзя
|
|
|
|
| |
Пост N: 3972
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.14 15:32. Заголовок: да это я понял уже ..
да это я понял уже к сожалению от SQL запросов пришлось отказаться так как при старой схеме подключения через AdsConnect плюс к этому еще нормально юзать AdsConnect60 не получится. Нужно как ты и говорил базы в словарь и юзать AdsConnect60 только. Вот если бы работала AX_SetConnectionHandle тогда бы я решил проблему и смог бы вернуться на основной хэндл без переподключения (если я конечно верно понял как она работает) , но во время сборки получаю что функции такой нет.
|
|
|
|
| |
Пост N: 231
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.14 16:29. Заголовок: Dima пишет: Вот есл..
Dima пишет: цитата: | Вот если бы работала AX_SetConnectionHandle |
| она живет в DBFAXS.LIB это что то для FiveWin , не уверен что спасет. Дима, а что мешает все dbf в словарь то пихнуть ? Просканировать папаку с базами из проги ( даже можно отдельный запихиватель/выпмхиратель написать ) и добавить автоматом. цитата: | к сожалению от SQL запросов пришлось отказаться |
| зато опыт приобрел
|
|
|
|
| |
Пост N: 3973
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.14 16:48. Заголовок: Ну не хочу я пока со..
Ну не хочу я пока совать базы в словарь так как чую что это где то вылезет Все же жутко хочется что бы и adsConnect и adsConnect60 жили вместе. Казалось бы сложного нет ничего. В начале проги подключаемся через adsConnect и получаем MAINHANDLE Далее если нужно сделать SQL запрос то используем adsConnect60 и получаем TEMPHANDLE Поюзав оный делаем так (предварительно закрыв базу ADSSQL) AdsDisconnect(TEMPHANDLE) И вот тут нужная некая функция XYZ которая вернет меня к предыдущему и еще активному подключению XYZ(MAINHANDLE). По ходу это должно сработать ! Но что то не вижу такого в доке.
|
|
|
|
| |
Пост N: 3974
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.14 16:59. Заголовок: Haz До кучи и вопро..
Haz До кучи и вопрос на засыпку В одной и той же проге ты подключаешься через adsConnect60 к одному серверу и через adsConnect60 к другому серверу. Хэндлы у подключений будут разные. Как ты будешь между ними переключаться ?
|
|
|
|
| |
Пост N: 232
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.14 19:33. Заголовок: Dima пишет: Хэндлы ..
Dima пишет: цитата: | Хэндлы у подключений будут разные. Как ты будешь между ними переключаться ? |
| подключка идет к словарю, в SELECT можно явно указать из какого словаря брать таблицу а значит и переключаться не придется сталкивался пару лет назад , но честно не помню как именно выкрутился . Надо будет посмотреть )) помню через что то типа Create Link ... потом забыл как страшный сон , не требовалось больше.
|
|
|
|
| |
Пост N: 3975
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.14 21:06. Заголовок: Haz пишет: помню че..
Haz пишет: цитата: | помню через что то типа Create Link |
| завтра снова буду ковырять так как не хочется отказываться от SQL запросов
|
|
|
|
|
| |
Пост N: 3976
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.04.14 10:20. Заголовок: По ходу проблему реш..
По ходу проблему решил В самом начале программы adshandle:=AdsConnection() // главный хэндл Когда нужно выполнить SQL запрос , подключаюсь к словарю через adsConnect60 и получаю новый хэндл TMPHH После того как поюзал фильтр делаю так в самом конце AdsDisconnect(tmphh) AdsConnection(adshandle,.T.) // установить текущим основное подключение через adshandle При чем если делать AdsDisconnect(tmphh) то в лог пишется ошибка 10054 говорящая лишь о принудительном отключении , по сему AdsDisconnect(tmphh) не делаю совсем и только 1 раз цепляюсь через adsConnect60 а в остальных случаях делаю AdsConnection(TMPHH,.T.) Вот вроде и все Dima пишет: цитата: | При чем если делать AdsDisconnect(tmphh) то в лог пишется ошибка 10054 говорящая лишь о принудительном отключении , по сему AdsDisconnect(tmphh) |
| Оно как бы и понятно почему возникает , так как словарь открыт. А как ему корректно сделать CLOSE ? Dima пишет: цитата: | AdsConnection(adshandle,.T.) |
| Кстати не подозревал о 2-м параметре
|
|
|
|
| |
Пост N: 233
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.04.14 11:08. Заголовок: Dima пишет: Кстати ..
Dima пишет: цитата: | Кстати не подозревал о 2-м параметре |
| до сих пор тоже не подозревал, как нашел ?
|
|
|
|
| |
Пост N: 3980
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.04.14 11:11. Заголовок: Haz пишет: до сих п..
Haz пишет: цитата: | до сих пор тоже не подозревал, как нашел ? |
| смотрел пример svn\harbour-trunk\harbour\contrib\rddads\tests\datad.prg в нем в комментах есть // if you wanted to retain this connection for later, you could use // hAdminCon := AdsConnection(0) // This get/set call would return the current connection, then set it to 0 Ну и на удачу решил попробовать и получилось !
|
|
|
|
| |
Пост N: 234
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.04.14 11:42. Заголовок: Dima пишет: у и на ..
Dima пишет: цитата: | у и на удачу решил попробовать и получилось ! |
| может там еще какие чудеса есть а мы то не знаем
|
|
|
|
| |
Пост N: 3981
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.04.14 13:32. Заголовок: Haz пишет: может та..
Haz пишет: цитата: | может там еще какие чудеса есть а мы то не знаем |
| хорошо бы еще такое чудо найти (надо мне) но пока не вижу Dima пишет: цитата: | Dima пишет: цитата: При чем если делать AdsDisconnect(tmphh) то в лог пишется ошибка 10054 говорящая лишь о принудительном отключении , по сему AdsDisconnect(tmphh) Оно как бы и понятно почему возникает , так как словарь открыт. А как ему корректно сделать CLOSE ? |
|
|
|
|
|
| |
Пост N: 235
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.04.14 14:19. Заголовок: Dima пишет: Оно как..
Dima пишет: цитата: | Оно как бы и понятно почему возникает , так как словарь открыт. |
| может это алиас открыт ? и на что влияет эта 10054 ( не нгашел ее в хелпе )
|
|
|
|
| |
Пост N: 3982
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.04.14 14:22. Заголовок: Haz пишет: может эт..
Haz пишет: ну у меня так if tmphh==nil if !file(cDictionary) // для каждого юзера создаем свой словарик ADSDDCREATE( cDictionary,, "Словарь данных ADSDEMO",@tmphh) AdsDDaddTable( "volvoAT",ads_share+"dbf\volvo.dbf", "") AdsDDCreateUser(, alltrim(sys_name), "" , "Пользователь "+alltrim(sys_name)) Closetmphh() endif tmphh:=nil IF !adsConnect60( cDictionary,_servtype,alltrim(sys_name), , ,@tmphh ) Soob("Ошибка подключения к словарю данных","r/r","gr+/r") return nil else *AdsSetCharType(2, .t.) AdsSetDeleted(.T.) AdsRightsCheck(.f.) ENDIF else AdsConnection(tmphh,.t.) endif То есть мне бы хотелось закрывать временный коннект через AdsDisconnect(tmphh) но так как словарь открыт то получаю ошибку (не смертельную) 10054 и ее видно только в логе ADS. Вот и требуется каким то образом словарь в начале закрыть , но чем ? Haz пишет: цитата: | и на что влияет эта 10054 ( не нгашел ее в хелпе ) |
| В Help ее нет http://devzone.advantagedatabase.com/dz/Content.aspx?Key=17&RefNo=081204-2102
|
|
|
|
| |
Пост N: 3983
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.04.14 15:26. Заголовок: Dima пишет: Dima пи..
Dima пишет: цитата: | Dima пишет: цитата: AdsConnection(adshandle,.T.) Кстати не подозревал о 2-м параметре |
| По ходу я тупанул и нет 2-ого параметра Вот такой вызов AdsConnection() вернет текуший хендл подключения А вот так AdsConnection(adshandle) переключится на него HB_FUNC( ADSCONNECTION ) /* Get/Set func to switch between connections. */ { HB_ADS_RETCONNECTION( hb_ads_getConnection() ); hb_ads_setConnection( HB_ADS_PARCONNECTION( 1 ) ); }
|
|
|
|
| |
Пост N: 236
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.04.14 17:55. Заголовок: Dima пишет: А вот т..
Dima пишет: цитата: | А вот так AdsConnection(adshandle) переключится |
| похоже на правду и нет ни одного вызова dosql ? ADS кеширует запрjсы , может перед дисконнектом кеш слить сначала ?
|
|
|
Ответов - 257
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[только новые]
|
|