Форум » [x]Harbour » Перевожу Clipper на консольный Харбор » Ответить

Перевожу Clipper на консольный Харбор

MIKHAIL: Добрый день, уважаемое сообщество! Перехожу на Харбор, собрал программу, начинаю бороть ошибки несовместимости кода, по мере появления вопросов надеюсь на скорую помощь. Заранее всем участникам огромное спасибо!

Ответов - 149, стр: 1 2 3 4 5 6 7 8 All

MIKHAIL: Работаю с ADS Выдает ошибку построения индекса на основе данных связаных таблиц. Код имеет следующий вид: use pricen new index on kod to price use sklad new set relation to s_kodt into PRICEN index on PRICEN->cena to s_cena Ошибка: Error ADSNTX/3010 Error 3010: Unknown alias name used with field name in index key expression.: s_cena И еще одна ошибка при использовании сложных выражений в индексе: INDEX ON c_kod+IF(c_kod<0,0,IF(C_KOD==qmag,10000,if(fil>0,20000,if(osn,-10000,40000)))) TO clientss В Clipper все работает

Haz: MIKHAIL пишет: Выдает ошибку построения индекса на основе данных связаных таблиц. Из справки по ADS Problem: An error occurred in the Advantage Expression Engine parser. A field name within the key expression was aliased by an unknown alias name. Solution: Advantage only supports aliases for the current work area. If an alias to another work area is referenced, this error will result. Verify the alias name is spelled properly. PS:Если не секрет , какой смысл здесь от ADS, может на CDX перейти? возможно даже и пошустрее будет. Тем более вроде как ADS заставляете работать в режиме совместимости с NTX который не умеет автоматически открывать эти индексы и соответственно не оптимизирует запросы ( за исключение наличия словаря данных). ADS хорош как компактный сервер БД c его оптимизацией SQL запросов и конечно оптимизацией фильтров используя ПРОСТЫЕ индексы, во всяком случае я для себя это определил как главное . Если использовать локальный сервер ADS ( ADSLocal32.dll) - то только как тест или с числом пользователей не более 10, Уже давно обхожусь без SET RELATION и сложных INDEX, все достаточно шустро делает сам сервер , по команде SELECT * FROM ... JOIN .. WHERE создается рабочая область собранная из нескольких таблиц как надо. PPS: Может сразу на GUI ?

MIKHAIL: Haz Advantage only supports aliases for the current work area ADS для Clipper и Harbor по разному работают? Если не секрет , какой смысл здесь от ADS Смысл в том что проект написан с использованием ADS и работает много лет, в сети до 30 активных пользователей, несколько кассовых терминалов в гипермаркете с количеством транзакций десятки тысяч в день. Задача стоит перевести проект с минимальными переделками, а потом уже оптимизировать. Уже давно обхожусь без SET RELATION и сложных INDEX, все достаточно шустро делает сам сервер , по команде SELECT * FROM ... JOIN .. WHERE Речь идет о БД SQL ? Или ADS поддерживает запросы SQL ? Если в ADS есть такая возможность, где можно почитать про это поподробнее? Или лучше пример использования запросов и разбор ответов. С MySQL дело имел, такой подход интересно было бы использовать PPS: Может сразу на GUI ? В смысле? Забить на проект который писался 20 лет и с нуля новый разработать? Даже если не с нуля, нужно перевести то что есть, а потом уже GUI наверное...

Haz: MIKHAIL пишет: ADS для Clipper и Harbor по разному работают? Скорее всего по разному, вроде мелькала такая инфа, но утверждать не стану Для Clipper версия с 8 не поддерживается а уже текущая 11 . MIKHAIL пишет: Речь идет о БД SQL ? Или ADS поддерживает запросы SQL ? Если в ADS есть такая возможность, где можно почитать про это поподробнее? ADS поддерживает SQL почитать можно в справке. http://devzone.advantagedatabase.com/dz/webhelp/Advantage11.1/index.html Примеры вроде Dima тут не раз выкладывал можно поискать по форуму. MIKHAIL пишет: Забить на проект который писался 20 лет GUI морда не сильно увеличит время перевода с Clipper , но согласен в console привычнее и быстрее будет

Pasha: Клиент ads для клиппера поддерживает индексацию на клиенте, а все 32-х разрядные клиенты ads, в том числе харбор-клиент, не поддерживают. Поэтому такое создание индекса не сработает. Но это вопрос ads, а не харбора, и вопрос неразрешимый.

VitalClip: MIKHAIL пишет: И еще одна ошибка при использовании сложных выражений в индексе: INDEX ON c_kod+IF(c_kod<0,0,IF(C_KOD==qmag,10000,if(fil>0,20000,if(osn,-10000,40000)))) TO clientss В Clipper все работает А если попробовать: INDEX ON c_kod+IIF(c_kod<0,0,IIF(C_KOD==qmag,10000,iif(fil>0,20000,iif(osn,-10000,40000)))) TO clientss

MIKHAIL: VitalClip пишет: А если попробовать: INDEX ON c_kod+IIF(c_kod<0,0,IIF(C_KOD==qmag,10000,iif(fil>0,20000,iif(osn,-10000,40000)))) TO clientss Не работает. Ну это не так принципиально, перепишу.

MIKHAIL: Еще вопросики: 1.Как запустить консольный Harbor в виде системной службы, в скрытом виде? 2.Можно ли одновременно использовать ADS в одной программе по IP и IPX протоколу, по выбору? Мне нужно конектиться к БД которая на NW лежит и одновременно подключаться к удаленной БД через интернет. 3.Можно ли в консольной версии Harbor подключить такие библиотеки как FR ?

Andrey: MIKHAIL пишет: 3.Можно ли в консольной версии Harbor подключить такие библиотеки как FR ? Да. У меня задачи с ним с 2008 года работают, только у меня больше всего на хХарборе, но это не принципиально. Демонстрашки можешь скачать с ... Облом, нет уже сайта http://www.paritetsoft.ru/frh.htm Ну тогда предлагаю мои примеры и просмотр файлов FR на МиниГуи смотри здесь https://cloud.mail.ru/public/39dd9efd1bbe/FastReport40 Если что заинтересует, пиши.

Haz: 1.Как запустить консольный Harbor в виде системной службы, в скрытом виде? В исходниках есть пример службы core\contrib\hbnetio\utils\hbnetio

MIKHAIL: Error BASE/1005 Message not found: TBCOLUMN:_COLORBLOC Где посмотреть справку по Tbrowse ?

Pasha: Справку можно посмотреть в ng по клипперу, а по поводу этой ошибки: замените выражение вида <obj>:colorbloc на <obj>:colorblock

MIKHAIL: Pasha пишет: замените выражение вида <obj>:colorbloc на <obj>:colorblock Спасибо, глаз замылился, а в Clipper и так работало... Еще вопросы: Я так понимаю что цветовая палитра может быть более расширенная? Где посмотреть полную карту палитры? цвет вида g*+/b не мигает, как исправить? Какие можно шрифты использовать в консоли?

petr707: Моноширинные. Courier New, Lucida Console,Consolas..

MIKHAIL: petr707 пишет: Моноширинные. Courier New, Lucida Console,Consolas.. А работать со шрифтами так же как и в clipper? или там своя система управления шрифтами?

Dima: для WVT терминала hb_gtInfo(HB_GTI_CODEPAGE, 255) hb_gtInfo(HB_GTI_FONTNAME, 'Lucida Console') hb_gtInfo(HB_GTI_FONTQUALITY,4) тут размеры HB_GtInfo(HB_GTI_FONTSIZE , nFontH) HB_GtInfo(HB_GTI_FONTWIDTH, nFontW)

MIKHAIL: Dima пишет: для WVT терминала hb_gtInfo(HB_GTI_CODEPAGE, 255) hb_gtInfo(HB_GTI_FONTNAME, 'Lucida Console') hb_gtInfo(HB_GTI_FONTQUALITY,4) тут размеры HB_GtInfo(HB_GTI_FONTSIZE , nFontH) HB_GtInfo(HB_GTI_FONTWIDTH, nFontW) Не понимаю как использовать шрифты различных размеров одновременно? Мне нужно стандартный шрифт и крупнее в 5 -6 раз Как могу поменять толщину шрифта? Как изменить шрифт у в полноэкранном режиме? Как автоматически запускть в полноэкранном режиме?

Dima: у себя делаю так примерно. [pre2] #REQUEST HB_GT_WVT hb_gtInfo(HB_GTI_FONTNAME, 'Lucida Console') hb_gtInfo(HB_GTI_FONTQUALITY,4) nWidth := HB_GtInfo(HB_GTI_DESKTOPWIDTH) nHeight := HB_GtInfo(HB_GTI_DESKTOPHEIGHT) nFontH := Int(nHeight/25) nFontW := Int(nWidth /80) HB_GtInfo(HB_GTI_FONTSIZE , nFontH) HB_GtInfo(HB_GTI_FONTWIDTH, nFontW) setmode(25,80) [/pre2] Но это будет не полноэкранный режим а окно. Что касается атрибутов шрифта , копни "hbgtinfo.ch"

Dima: Пример самодостаточный , поиграйся с ним . [pre2] #include "hbgtinfo.ch" proc main local nWidth,nHeight,nFontH,nFontW REQUEST HB_GT_WVT_DEFAULT REQUEST HB_LANG_RU866 HB_LANGSELECT("RU866") REQUEST HB_CODEPAGE_RU866 hb_cdpSelect( "RU866" ) hb_gtInfo(HB_GTI_MAXIMIZED,.t.) hb_gtInfo(HB_GTI_FONTNAME, 'Lucida Console') hb_gtInfo(HB_GTI_FONTQUALITY,4) nWidth := HB_GtInfo(HB_GTI_DESKTOPWIDTH) nHeight := HB_GtInfo(HB_GTI_DESKTOPHEIGHT) nFontH := Int(nHeight/25) nFontW := Int(nWidth /80) HB_GtInfo(HB_GTI_FONTSIZE , nFontH) HB_GtInfo(HB_GTI_FONTWIDTH, nFontW) setmode(25,80) ? "TEST" ? "ПРОВЕРКА" wait return [/pre2]

Vlad04: Речь идет о БД SQL ? Или ADS поддерживает запросы SQL ? Если в ADS есть такая возможность, где можно почитать про это поподробнее? Я использую локальный ADS для формирования данных для некоторых отчетов, примерно так AdsConnect('C:\') nSele:=Select() ; Select (nSele+1) AdsCreateSQLStatement('QUERY', 2) sQlStr:='SELECT DISTINCT w.n_otdel,k.kucha,k.Nomk,k.fam,k.im,k.ot,k.pol,k.birth_date,'; + 'k.DOC_TYPE,k.DOC_SER,k.DOC_NUM,k.NO_POLIS,k.SMK_CODE,'; + 'k.POLIS_SER,k.POLIS_NUM,k.EDIN_POLIS,k.NASP_CODE2,W.S_TYPE '; + ' FROM '+Par2+'ARC\Karta kT, '; + Par2+'ARC\SWIST W,'; + Par2+'KLIENT K '; + ' where ((kT.Unicum = K.Unicum) and (kT.N_TALON = W.N_TALON)'; +' AND (K.N_TARIF =0 ) AND (kT.Oplata =2) AND '; + IIF(i=1,' (W.S_TYPE ='+chr(39)+'R'+chr(39)+') ',' (W.S_TYPE <> '+chr(39)+'R'+chr(39)+') '); + ') ORDER BY 4,5' AdsPrepareSQL(sQlStr) AdsExecuteSQL(sQlStr) nRecCount:=RecCount() if nRecCount > 0 Создание индексов только в RDD CDX. Конфликтов не замечено, хХарбоур 1 Если у тебя много подключений? то желательно НЕ локальный сервер ADS



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