Ключ RainBow в БЭСТе ищется быстрее по протоколу IPX. Вы не собираетесь делать то же самое по протоколу TCP/IP. Или чтобы можно было в настройке указать по какому протоколу работать. Было бы неплохо.
Такая работа запланирована. Настройка на протокол и сейчас есть.
Я полагаю, имеется в виду работа по "чистому" TCP/IP без NetBios, т.к в сетях W2K NetBios не нужен. А без NeBios ключ не виден.
Joined: 31 Dec 2001 Posts: 1696 Location: Гусев Михаил
Interests: Москва
Posted: 12 Apr 2004 17:09 Post subject:
Есть ли возможность в FileEval создать CDX индексы? В том числе с условиями.
В примерах только IDX индексы.
Попытки создать CDX не увенчались успехом. _________________ http://santech.chat.ru/bro.zip - удобный броузер/редактор БД
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 13 Apr 2004 19:21 Post subject:
SantechNik wrote:
Есть ли возможность в FileEval создать CDX индексы? В том числе с условиями.
В примерах только IDX индексы.
Попытки создать CDX не увенчались успехом.
Да можно, конечно. Если можно создать IDX, значит можно создать и CDX. Обычно cdx создается следующими двумя функциями:
OrdCondSet() и ordCreate(), см. описание в справке NG.
Чтобы понять, почему не получилось, надо посмотреть более конкретно сам текст программы, кидай на titov@bestnet.ru, разберемся. _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
Posted: 14 Apr 2004 08:57 Post subject:
Титов Александр wrote:
SantechNik wrote:
Есть ли возможность в FileEval создать CDX индексы? В том числе с условиями.
В примерах только IDX индексы.
Попытки создать CDX не увенчались успехом.
Да можно, конечно. Если можно создать IDX, значит можно создать и CDX. Обычно cdx создается следующими двумя функциями:
OrdCondSet() и ordCreate(), см. описание в справке NG.
Чтобы понять, почему не получилось, надо посмотреть более конкретно сам текст программы, кидай на titov@bestnet.ru, разберемся.
1. А зачем так "приватно"? Теперь эта информация должна быть доступна всем, если БЭСТ это система-конструктор.
2. Зачем вам что-то посылать. ИМХО ИС должен должен ответить на поставленный вопрос.
Дайте пример, как сделать дополнительные тэги (TAG) в дополнительном (временном) CDX-файле, например для MDOCM, "следующими двумя функциями: OrdCondSet() и ordCreate()".
В ваших примерах про это НИ ЕДИНОГО СЛОВА.
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 14 Apr 2004 12:02 Post subject:
Krosh wrote:
1. А зачем так "приватно"? Теперь эта информация должна быть доступна всем, если БЭСТ это система-конструктор.
Эта информация и доступна всем. В составе поставке есть справка по Клипперу.
Krosh wrote:
2. Зачем вам что-то посылать. ИМХО ИС должен должен ответить на поставленный вопрос.
Мы считаем честью помогать профессионалам типа SantechNik'а. В том числе и приватно
Krosh wrote:
Дайте пример, как сделать дополнительные тэги (TAG) в дополнительном (временном) CDX-файле, например для MDOCM, "следующими двумя функциями: OrdCondSet() и ordCreate()".
В ваших примерах про это НИ ЕДИНОГО СЛОВА.
А как Вы пытались? В справке по Клипперу про это все написано.
Если это реальная производственная задача, стоящая перед Вами, наверное некоторые варианты у Вас уже есть. Готовы помочь.
Примеры на все случаи жизни мы, естественно, не напише _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Joined: 31 Dec 2001 Posts: 1696 Location: Гусев Михаил
Interests: Москва
Posted: 14 Apr 2004 12:21 Post subject:
Quote:
В составе поставки есть справка по Клипперу.
Да, справка есть. Но в этой справке нет ни слова о функциях OrdCondSet() и ordCreate(). Данная справка по Clipper'у 5.1 а CDX это расширение от третьего разработчика.
Quote:
А как Вы пытались?
Я, например, пытался сделать индекс CDX с помощью указанных функций. Не получается.
Есть ощущение, что данные функции "не работают внутри FileEval" или дополнительно должны быть использованы какие-то внутренние функции БЭСТа.
Нельзя ли все же дать маленький пример использования этих функций именно внутри FileEval, а не просто в абстрактной Clipper программе, где указанные фукции, действительно, прекрасно работают. _________________ http://santech.chat.ru/bro.zip - удобный броузер/редактор БД
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 14 Apr 2004 18:50 Post subject:
SantechNik wrote:
Quote:
В составе поставки есть справка по Клипперу.
Да, справка есть. Но в этой справке нет ни слова о функциях OrdCondSet() и ordCreate(). Данная справка по Clipper'у 5.1 а CDX это расширение от третьего разработчика.
Да, действительно, это в отдельной справке (по SIX-драйверу). Не положили в поставку. Виноват, не предполагал, что так сразу глубоко начнете копать. Положим завтра в пакет.
SantechNik wrote:
Я, например, пытался сделать индекс CDX с помощью указанных функций. Не получается.
Нельзя ли все же дать маленький пример использования этих функций именно внутри FileEval, а не просто в абстрактной Clipper программе, где указанные фукции, действительно, прекрасно работают.
Если такие вопросы возникают, отвечу поподробнее.
1. Лучше для внутренних целей использовать .IDX, они работают быстрее. Только создавать их надо как временные файлы, потом убирать.
2. Можно создавать и .CDX - работающий пример (Пример 1) приведен ниже, проверен в банке.
3. Если необходимо создавать индексы к существующим файлам, например MDOC, то надо иметь ввиду, что они создаются локально и будут активны для использования только во время работы программы на конкретной рабочей станции.
Если нужен индекс для общего использования, то лучше включить его описание в BASES_XX.DBF. Но в этом случае самому поддерживать при апгрейдах.
Пример. Создание .CDX - индекса.
Code:
PRIVATE cDBF,cCDX,aStru,cValString
PRIVATE i,cTagFormula,cOutString,cForFormula
dbPush()
aStru := {} //Создание массива структуры
AADD(aStru,{"NAME","C",1,0})
AADD(aStru,{"VALUE","C",1,0})
cValString := "abcdefghijklmnopqrstuvxyz"
cDBF := "c:\MyTable.dbf"
cCdx := "c:\MyTable.cdx"
dbCREATE(cDBF,aStru) //Создание DBF
NetUse("MyTable",cDBF) // Открытие для работы
i := 1
WHILE i <= LEN(cValString) //Добавляем записи
IF MyTable->(AddRec())
MyTable->Name := SUBSTR(cValString,i,1)
MyTable->VALUE := SUBSTR(cValString,LEN(cValString)+1-i,1)
MyTable->(f_dbUnLock())
ENDIF
i := i+1
ENDDO
cTagFormula := "Upper(NAME)"
cForFormula := "!DELETED().AND.(VALUE $ 'abcdefg')"
MyTable->(ORDCondSet(cForFormula, FormulParsBlock(cForFormula,{""}))) //Определяем FOR-условие
// Создание первого тэга
MyTable->(ORDCreate(cCDX,"TAG_NAME",cTagFormula))
// Создание второго тэга
cTagFormula := "Upper(VALUE)"
MyTable->(ORDCreate(cCDX,"TAG_VALUE",cTagFormula))
//Проверка работы в разных тэгах
MyTable->(OrdSetFocus("TAG_NAME"))
i := 1
cOutString := ""
MyTable->(dbGoTop())
While !MyTable->(EOF().OR.BOF())
cOutString := cOutString+MyTable->NAME
MyTable->(dbSkip())
ENDDO
SayAndWait({"Установлен тэг TAG_NAME",cOutString})
MyTable->(OrdSetFocus("TAG_VALUE"))
i := 1
cOutString := ""
MyTable->(dbGoTop())
While !MyTable->(EOF().OR.BOF())
cOutString := cOutString+MyTable->NAME
MyTable->(dbSkip())
ENDDO
SayAndWait({"Установлен тэг TAG_VALUE",cOutString})
MyTable->(dbCloseArea())
dbPop()
_________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
Posted: 15 Apr 2004 09:52 Post subject:
1. Жаль, что только вопросы монстров, таких как SantechNik, сподвигают ИС на ответ. А остальные воросы как-то вяловато...
Боюсь с такой поддержкой БЭСТ не станет "конструктором", т.к. "умрёт" раньше. ИМХО.
2. Благодаря вышеприведённому примеру разобрался, как делать тэги в CDX. Это хорошо. Спасибо ИС, и г-ну Титову лично.
Но!...
3. В примере используется ф-ция FormulParsBlock(), которая делает блок-кода. Описания её в документации нет. Догадаться о её назначении из примеров программ, где она была впервые указана, конечно можно, но почему "догадываться", почему не написать в хелпе?
Т.о. подтверждается предположение, что "конструкция" из "конструктора" в общем работать не будет, без знания всяких "волшебных слов", известных только особам приближённым к императорам.
С такой политикой БЭСТ проиграет "первойЦ" совсем быстро...
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 15 Apr 2004 10:48 Post subject:
Krosh wrote:
1. Жаль, что только вопросы монстров, таких как SantechNik, сподвигают ИС на ответ. А остальные воросы как-то вяловато...
Боюсь с такой поддержкой БЭСТ не станет "конструктором", т.к. "умрёт" раньше. ИМХО.
Мы и другим монстрам (и даже немонстрам) отвечаем
В плане поддержки, если имеются ввиду вопросы по "конструктору", то я пока не вижу не отвеченных вопросов. Что касается Вашего вопроса, то он пересекался с сантехниковским, поэтому ответ был дан на него.
Krosh wrote:
3. В примере используется ф-ция FormulParsBlock(), которая делает блок-кода. Описания её в документации нет. Догадаться о её назначении из примеров программ, где она была впервые указана, конечно можно, но почему "догадываться", почему не написать в хелпе?
В примере можно было обойтись и без нее, это просто преобразование строки в блок кода, таких примеров много в хелпе по клипперу, описание функции включим в руководство, вот текст функции:
/*
FUNCTION: FormulParsBlock(cFormul, aPars)
Назначение.........Преобразование строки символов в блок кода
cFormul - преобразуемая строка
aPars - массив параметров для блока кода
*/
Function FormulParsBlock(cFormul, aPars)
Local cPar := "{|"
AEval(aPars, {|x, i| cPar += x + If(i == Len(aPars), "|", ",")})
Return (&(cPar + AllTrim(cFormul) + "}"))
Krosh wrote:
Т.о. подтверждается предположение, что "конструкция" из "конструктора" в общем работать не будет, без знания всяких "волшебных слов", известных только особам приближённым к императорам.
С такой политикой БЭСТ проиграет "первойЦ" совсем быстро...
Есть же другой путь, вместо того, чтобы "помирать и проигрывать".
По возникающим у пользователей вопросам дополнять Руководство по программированию, и поэтапно давать толкование этих самых "волшебных слов", поскольку сразу мы не в состоянии описать сотни и тысячи функций, наработанных за десять с лишним лет. Если интерес к программированию БЭСТ будет нарастать, то в конце концов это приведет к созданию добротного хелпа для программиста. ИМХО _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 15 Apr 2004 11:41 Post subject:
alexzt wrote:
а как отлаживать программы?
Отладка пока только через через отладочную печать. Если появится много вопросов по поводу отладки, то будем в этом направлении работать. _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
Posted: 15 Apr 2004 14:32 Post subject:
Титов Александр wrote:
Return (&(cPar + AllTrim(cFormul) + "}"))
О как! Макроподстановка!
Дык, естественно, это текст ф-ции на Clipper, в котором она работает.
А в FileEval это "синтаксическая ошибка".
А как "можно было обойтись и без нее"? Как сделать произвольный блок кода без вашей ф-ции, а?
Титов Александр wrote:
Есть же другой путь, вместо того, чтобы "помирать и проигрывать".
По возникающим у пользователей вопросам дополнять Руководство по программированию, и поэтапно давать толкование этих самых "волшебных слов", поскольку сразу мы не в состоянии описать сотни и тысячи функций, наработанных за десять с лишним лет.
А не замучаетесь ПОСТОЯННО отвечать?
Может "оптом" ответить?
Да не верю я, что ВСЕ тысячи ф-ций применимы в FileEval.
Титов Александр wrote:
Если интерес к программированию БЭСТ будет нарастать, то в конце концов это приведет к созданию добротного хелпа для программиста.
Может именно наличие ХОРОШЕГО, ПОЛНОГО хелпа по программированию в FileEval ПРИВЕДЁТ "интересу к программированию БЭСТ" и к самому БЭСТ, в конечном итоге?
All times are GMT + 4 Hours Goto page Previous1, 2, 3Next
Page 2 of 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum