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




Пост N: 907
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 11:56. Заголовок: ADS Remote , как подключится ?


Имеем Novell Netware 4.11 (IPX) на нем работает ADS 5.6
Имеем свеже собранные библиотеки ADS 8.0
Как подключится к базам посредством ADS ?

#include "ads.ch"
#include "ord.ch"
#include "set.ch"
PROCEDURE Main
REQUEST ADS
AdsSetServerType(2)
rddRegister("ADS",1)
rddsetdefault("ADS")
AdsRightsCheck(.F.)
AdsSetFileType(ADS_CDX)
hb_SetCodepage("RU866")
REQUEST HB_LANG_RU866
HB_LANGSELECT("RU866")
AdsSetCharType(2, .T.)

use o:\sklad\dbf\nomen index o:\sklad\dbf\nomen3 shared new // просто зависает прога
close all
return


Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет , стр: 1 2 3 All [см. все]


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




Пост N: 979
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 12:27. Заголовок: попробуй rddsetdefau..


попробуй
rddsetdefault("ADSCDX")


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




Пост N: 908
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 12:45. Заголовок: Pasha пишет: попроб..


Pasha пишет:

 цитата:
попробуй
rddsetdefault("ADSCDX")


Результат тот же
Возможно это в принципе не должно работать ?
Ведь клиентская часть ads 8.0 а на серваке ADS 5.6..........

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




Пост N: 980
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 12:52. Заголовок: Я на версии не обрат..


Я на версии не обратил внимание
Может и не будет работать, 5.6 все-таки очень старая версия
Но можно ведь собрать rddads со старой ace

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




Пост N: 909
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 12:55. Заголовок: Pasha пишет: Но мож..


Pasha пишет:

 цитата:
Но можно ведь собрать rddads со старой ace


у меня нет ее к сожалению :(((((
где взять ?
там ведь нужны будут и соответсвующие dll

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




Пост N: 981
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 13:28. Заголовок: Покопался в закромах..


Покопался в закромах... нашел ace55
Куда отправить ?

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




Пост N: 982
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 13:37. Заголовок: Ушло Возможно, при с..


Ушло
Возможно, при сборке программы с rddads.lib и ace32.lib будут нереализованные ссылки на функции в более поздних версиях ace
Из rddads надо будет просто убрать лишние функции, и пересобрать rddads

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




Пост N: 911
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 13:42. Заголовок: Спасибо получил !!! ..


Спасибо получил !!!
Вот только ace.h там нет.

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




Пост N: 983
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 13:52. Заголовок: Нашел ace.h в каком-..


Нашел ace.h в каком-то архиве харбора за 2002-й год
Отправил

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




Пост N: 912
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 13:58. Заголовок: Спасибо !!!!!!!!!!!!..


Спасибо !!!!!!!!!!!!!!!!!!!!!
Потом отпишусь как все получилось !

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




Пост N: 913
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 14:23. Заголовок: Все супер !!! ;) Одн..


Все супер !!! ;)
Одна не задача. Таблица в OEM и все что по русски кажет крякозяблы.
Эта штука не сработала AdsSetCharType(2, .T.)


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




Пост N: 984
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 16:12. Заголовок: Тут вот такое дело Е..


Тут вот такое дело
Если таблица хранится в OEM, и указан CharType ADS_OEM, ace32 считает, что поскольку клиент - gui-приложение, и автоматически перекодирует данные в ANSI. На 32-разрядных консольных клиентов ace не расчитан. Поэтому используется такой фокус: данные считываются функцией AdsGetFieldRaw, которая данные не перекодирует, и клиент получает в нужной кодировке (OEM).
Но в Ace 5.5 функции AdsGetFieldRaw еще нет ! Тебе наверное пришлось прибить ее вызов в rddads

Чтобы ace не перекодировал данные oem->ansi, можно указать ему
CharType ADS_ANSI. При этом, поскольку исходнае и результирующая кодировка одинаковые, перекодировки не будет,
и, так как данные в кодировке oem, клиент их и получит в oem
Побочный неприятный эффект - неправильная работа Upper/Lower на сервере: в индексных выражениях и серверных фильтрах

Поэтому, выход - использовать более свежую версию ads
Проверь функцию AdsGetFieldRaw(), ее нет ?

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




Пост N: 985
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 16:26. Заголовок: Впрочем, есть еще ва..


Впрочем, есть еще вариант
Вместо вызова функций AdsGetFieldRaw вызывать AdsGetField, и затем
перекодировку ansi->Oem. Вместо вызова AdsSetFieldRaw - перекодировку
oem->ansi, и затем вызов AdsSetString
Побочный эффект: если в строковых полях хранятся двоичные данные,
в результате двойной перекодировки oem->ansi->oem они могут быть покоцаны


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




Пост N: 914
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 18:04. Заголовок: Pasha Чудеса конечн..


Pasha
Чудеса конечно.......но поставив SET CHARTYPE TO ANSI , все встало на свом места.
Но есть подозрения.........
Как убедится что ads собрался верно с учетом изменений ?
Удалил все rddads.lib б ads32.lib , все obj которые касаются ads , вернул назад исходники ads
и запустил ads на сборку , странно но ни одной ошибки не возникло.
При сборке приложения тоже нет ошибок а ведь были........

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




Пост N: 986
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.09.08 20:33. Заголовок: Так rddads собрался ..


Так rddads собрался без всяких правок в сырцах со старым ace.h ?
И при линковке нет unresolved external ?

Dima пишет:

 цитата:
Чудеса конечно.......но поставив SET CHARTYPE TO ANSI , все встало на свом места.



Внешне все нормально, но это только внешне. Ace считает, что БД в кодировке Ansi, клиенту (rddads) надо
дать данные в ansi, и перекодировка не выполняется. А поскольку БД в кодировке oem, клиент ее и
получает без перекодировки в oem. Но ! Upper/lower ads выполняет по правилам ansi-cp1251, поскольку ему
сказали, что БД в этой кодировке

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



Пост N: 33
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 30.09.08 22:08. Заголовок: а почему бы не испол..


а почему бы не использовать более свежую версию адс -7.0 например. Я ее в осле нашел - прекрасно работает, использую для тестов, правда у меня новель 5.

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




Пост N: 915
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.09.08 23:42. Заголовок: Pasha пишет: И при ..


Pasha пишет:

 цитата:
И при линковке нет unresolved external ?


Вообщем все убил и сделал снова (ни чего не удаляя из сырцов)
Просто в сырцах в нужных местах добавил
#define ADS_LIB_VERSION 500
А вот с кодировкой точно лажа особенно в индексах.
Пока оставил так AdsSetCharType(1, .T.)
Завтра буду еще чекать.
База открывается быстро как в Clipper ;)

PS
Одно не ясно , как же раньше на заре появления ads 5.5 юзали базы в кодировке OEM ?


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




Пост N: 916
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.10.08 07:37. Заголовок: Есть у кого то ADS ..


Есть у кого то ADS версии старше чем 5.7 который можно пролечить для netware 4.11 ?

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




Пост N: 917
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.10.08 07:48. Заголовок: Pasha пишет: Чтобы ..


Pasha пишет:

 цитата:
Чтобы ace не перекодировал данные oem->ansi, можно указать ему
CharType ADS_ANSI


Подробнее можно , где конкретно править ?

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




Пост N: 988
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.10.08 08:29. Заголовок: Dima пишет: Подробн..


Dima пишет:

 цитата:
Подробнее можно , где конкретно править ?



Указать CharType ADS_ANSI - это и есть AdsSetCharType(1)

А 2-й параметр в AdsSetCharType не отрабатыватся, т.к. нет функций
AdsGetFieldRaw

Дима, ты хранишь в символьных полях двоичные данные ? Если нет,
подойдет 2-й способ с двойной перекодировкой. Напиши, если не хранишь, и тогда я добавлю в rddads эти фрагменты для старой версии ace

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




Пост N: 918
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.10.08 08:31. Заголовок: Pasha пишет: Дима, ..


Pasha пишет:

 цитата:
Дима, ты хранишь в символьных полях двоичные данные ? Если нет,
подойдет 2-й способ с двойной перекодировкой


Нет двоичные данные не храню !
Счас пробну 2-й способ , спасибо !

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

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