On-line: tnsr2, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост 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


Где мой косяк ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 257 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]


администратор




Пост N: 3894
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 14:41. Заголовок: Haz пишет: а для ве..


Haz пишет:

 цитата:
а для версий ниже предлагается самописная


Спасибо. Но не понял как ее конвертнуть в Habrour

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 171
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 14:45. Заголовок: Dima пишет: Но не ..


Dima пишет:

 цитата:
Но не понял как ее конвертнуть в Habrour



аналогично

хотя можно порыть тут
the last 6 chars of a rowid is the physical recno in base64 code.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3895
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 15:01. Заголовок: Haz пишет: хотя мож..


Haz пишет:

 цитата:
хотя можно порыть тут
the last 6 chars of a rowid is the physical recno in base64 code.



Писал выше что пробовал hb_base64Decode(right(rowid,6)) , но это не то так как на выходе получаем далеко не цифры

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 172
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 15:06. Заголовок: После Decode64 скоре..


После Decode64 скорее всего получим cBinary который нужно скормить еще какой нить BIN2I() ... будут цифры но опять не те ((((

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3896
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 15:08. Заголовок: кормил всем BIN2* вс..


кормил всем BIN2* все мимо

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 173
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 15:16. Заголовок: Вот сюда корми F..


Вот сюда корми



FUNCTION Decode64(cCode)
****************************************************************************
STATIC cString := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
LOCAL nStevec
LOCAL nReturn := 0
LOCAL nLen := Len(cCode)

IF Empty(cCode) .OR. Valtype(cCode)=='U' ; RETURN 0 ; ENDIF

FOR nStevec := 1 TO nLen
nReturn := nReturn*64 + (At(Substr(cCode, nStevec,1), cString)-1)
NEXT
RETURN nReturn


Взято тут
http://nntp-archive.sybase.com/nntp-archive/action/article/%3C4550525e@solutions.advantagedatabase.com%3E


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3897
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 15:20. Заголовок: а вот это прям в дес..


а вот это прям в десятку

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3898
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 16:50. Заголовок: красота и relation п..


красота и relation по recno() пашет
set relation to Decode64(right(ADSSQL->rowid,6)) into volvo

есть 2 вопроса
1. Если у меня база VOLVO все же открыта и в ней открыты индексы то SQL запрос
будет выполнятся быстрее или ему индексы не нужны ? Серверный фильтр
если находит подходящий индекс под условие фильтра то ставится мгновенно.
2. SQL запрос в зависимости от условия может ставится некоторое время.
Можно ли какой то индикатор повесить что бы юзер видел что прога не висит.
База 5 лимонов записей и SQL запрос может быть не простым.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 174
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 17:12. Заголовок: Dima пишет: есть 2 ..


Dima пишет:

 цитата:
есть 2 вопроса


1 при построении SQL во всю используются индексы, ADS рекомендует их использовать для увеличения скорости.
2 на счет индикатора не в курсе , когдато давно вроде видел ... но не уверен
Время зависти от наличия нужных индексов , 5 лимонов это максимум пара секунд если структура баз правильная. Вообще ADS в этом плане - очень шустрый




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3899
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 17:15. Заголовок: Понял. Спасибо. Проб..


Понял. Спасибо.
Пробнул юзануть вот так но ни че не кажет индикатор

AdsRegCallback( {| nPercent |outputstuff( nPercent,xxyy) } )
AdsExecuteSqlDirect(sQlStr)
AdsClrCallback()

где xxyy lastrec() из VOLVO

Придется вешать лейбу - выполняется SQL запрос


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3900
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 17:28. Заголовок: Еще вопросец. Как из..


Еще вопросец.
Как из SQL выборки удалить ряд записей ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 175
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 17:44. Заголовок: Dima пишет: Как из ..


Dima пишет:

 цитата:
Как из SQL выборки удалить ряд записей



или фильтром или физически и из таблицы тоже

фильтром можно так добавить виртуальное поле , установить его в true и фильтровать по нему.
в не нужных это поле скинуть в false и фильтр их скроет

вот пример запроса - виртуальное поле s по умолчанию выставлено в true
select true as s, adsdemoat.* from adsdemoat


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3901
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 17:48. Заголовок: Haz :sm36: ..


Haz

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3902
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 17:53. Заголовок: Последний вопрос на ..


Последний вопрос на сегодня ;)

если ручками набирать запрос то он выглядит так
SELECT ROWID,indeks FROM volvoAT WHERE indeks Like '%LM%'
А если использовать переменную в операторе LIKE то как правильно написать ?
Скажем CC:="LM" , как этот СС туда правильно вставить ? Что то не пашет у меня.

Разобрался !
CC:="LM"

SQLSTR:="SELECT ROWID,indeks FROM volvoAT WHERE indeks Like "+"'"+'%'+CC+'%'+"'"

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3903
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 18:07. Заголовок: Haz пишет: фильтром..


Haz пишет:

 цитата:
фильтром можно так добавить виртуальное поле , установить его в true и фильтровать по нему.


имеется в виду какой фильтр , серверный , обычный или есть какой то SQL-ий ?

Haz пишет:

 цитата:
в не нужных это поле скинуть в false и фильтр их скроет


ADS пишет что таблица только для чтения при попытке записи в поле S
На DBdelete() та же реакция естественно.


ЗЫ
Извини что напрягаю ;)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 176
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 19:16. Заголовок: Dima пишет: Извини ..


Dima пишет:

 цитата:
Извини что напрягаю


да ерунда, пока дома сижу

Dima пишет:

 цитата:
только для чтения


точно не учел ((( в данном случае таблица только чтение

можно использовать тот же RowID с перестроением SQL по типу

select rowid, adsdemoat.* from adsdemoat where rowid not in ('B8vqUvAAAAAEAAAAAB', 'B8vqUvAAAAAEAAAAAC')

где B8vqUvAAAAAEAAAAAB и B8vqUvAAAAAEAAAAAС rowId которые надо скрыть
построив sql алиас ADSSQL можно пересоздать а Browse:RefreshAll по идее должно сработать
не проверял ((


или AdsSetAof по RowId делать

PS т.к. добавили псевдостолбец - курсор будет опять ридонли

еще вариант - создать массив из номеров Recno которые нужно спрятать и фильтровать по нему - тогда курсор будет редактируемый

ЗЫ ушел гулять с ребенком )

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3904
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.14 22:03. Заголовок: На ночь глядя вопрос..


На ночь глядя вопрос возник ;)
Я смотрел твой пример и тот что есть в CONTRIB\RDDADS и какое то время проводил эксперименты.
Пришел к выводу что перед тем как сделать SQL запрос нужно сделать вот так.
 
use VOLVO shared new // можно не открывать но у меня в задаче эта база открыта
hh:=nil

if !hb_FileExists(cDictionary) // для каждого юзера создаем свой словарик
ADSDDCREATE( cDictionary,, "Словарь данных ADSDEMO" )
AdsDDaddTable( "volvoAT", cpath+"volvo.dbf", "" )
AdsDDCreateUser(, "Guest", "" , "Пользователь Guest" )
*adsConnection() // похоже это не нужно
*AdsDisconnect() // похоже это не нужно
endif

IF !adsConnect60( cDictionary, 0, "Guest", '', 7,@hh )
? "Ошибка подключения к словарю данных "
ENDIF

Эта конструкция работает , или я в чем то не прав ?!



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 177
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.14 22:13. Заголовок: Dima пишет: *adsCo..


Dima пишет:

 цитата:
*adsConnection() // похоже это не нужно
*AdsDisconnect() // похоже это не нужно


в данном случае не надо и все работает,
это кусок из моего кода где сначала логинюсь к словарю с админскими, создаю базы и индексы , а потом дисконнект и далее коннест под простым юзером

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3905
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.04.14 10:42. Заголовок: Haz пишет: PS т.к. ..


Haz пишет:

 цитата:
PS т.к. добавили псевдостолбец - курсор будет опять ридонли


даже без добавления оного она все равно READ ONLY.
Все виды выборок у меня укладываются в одну строку , кроме одной.
В которой нужно по коду товара выбрать остатки из другой базы и показывать только
то что есть в остатке. То есть по сути убрать (отфильтровать) не нужные записи а оно во как READ ONLY и
USER функцию мою я так понимаю SQL запрос не поймет.

Идейка пришла. Я ведь могу сделать COPY TO с условием FOR во временную MEM: базу и уже по ней ходить.
Ан нет в MEM: базу не получится , тормознул . Можно просто выбрать из запроса нужные записи и метнуть
их в MEM: базу и по ней ходить.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 178
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.04.14 11:43. Заголовок: может быть readonly ..


может быть readonly потому что таблица по которой делаешь запрос уже расшарена и открыть ?
Dima пишет:

 цитата:
могу сделать COPY TO


лучше сразу в SQL прописать SELECT * INTO #TmpBase FROM ... WHERE ...
создасться временная ( в памяти если указан знак # и на диске если напишем просто TempBase без # ) таблица TmpBase и по ней можно тоже выполнять запрос
SELECT * FROM #TempBase ...
Примерно так
cSql := 'SELECT Client_Code INTO #CLIENTS FROM Orders GROUP BY Client_Code'
SQL(, cSql ) // моя функция , если алиас не указан , используется "TMP" , а после выполнения TMP->(DbcloseArea())

cSql := 'SELECT Client_Code FROM #CLIENTS'
SQL( 'SQL_CLIENTS', cSql )

Потом, когда база не нужна ее нужно убить
cSql := "DROP TABLE #CLIENTS"
SQL(,cSql)



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 257 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 661
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет