View previous topic :: View next topic |
Author |
Message |
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 22 Sep 2005 15:46 Post subject: Не могу написать FileEval |
|
|
здрасти всем,
пишу Евал
задача = Есть такая формы Ос-1б.
в ней имеется поле "Организация-сдатчик"
мне нужно в одном поле указать= наим.банка+КПП+БИК+ИНН...
вопросы.
1.как сослаться на базу партнер, не прибегая к исп. ф-ии
DBUSEAREA(.T.,"",lcPth+"partner","partner",.T.), хотелось бы поюзать
dbPush("partner","code","",{lcMyCode}), но говорит не такого алиаса!? ...
....блин....пока писал 1й вопрос=забыл второй
****
во....
2й
как узнать какие алиасы открыты в данном арме...
****
своял вот чего
[code]
PRIVATE lcPth, lcMyCode, lcMyName
lcMyCode := aPars[1]
lcPth := "e:\bst\dbase\alb\"
//
//
dbPush("partner","code","",{"lcMyCode"})
dbseek(lcMyCode)
lcMyName := alltrim(partner2->shortname)
DBPOP()
ругается на вызов DBPush
****
почему для закрытия алиаса не подходит ф-ии!!!!!
Код:
partner2->(F_DBUNLOCK())
partner2->(dbCloseArea())
неужели ни кто не знает!
****
почему-то даже ета программа не работает!!!!!
PRIVATE lcMyName
DBPUSH()
lcMyName := 'sasasasas'
DBPOP() |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 22 Sep 2005 16:24 Post subject: |
|
|
Вам нужен HFileEval
В 12 версии по ctrl-F5 и далее F11 создать программу, затем откомпилировать с отладчиком, стартовать задачу в нужном месте и в отладчике увидите все что Вас интересует |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 22 Sep 2005 16:30 Post subject: Re: Не могу написать FileEval |
|
|
andre19 wrote: |
пишу Евал
почему-то даже ета программа не работает!!!!!
PRIVATE lcMyName
DBPUSH()
lcMyName := 'sasasasas'
DBPOP() |
PRIVATE lcMyName
DBPUSH()
lcMyName := 'sasasasas'
DBPOP()
""
В обычном FileEval работает без пробле |
|
Back to top |
|
|
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 23 Sep 2005 06:12 Post subject: |
|
|
как понять- в обычном?
своего "уродца" я вызываю в отчете, в АРМе ОС.
может все из-за того что он у меня в папке extension...хотя с чего ради, но попробую переписать его в папку print |
|
Back to top |
|
|
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 23 Sep 2005 06:32 Post subject: |
|
|
причем при использовании ф-ии DBPUSH или DBCLOSEARA
ругается на ф-ию TRANSFORM? посмотрел ее описание...не могу понять!какое отношение она имеет к выгрузки базы.
версия у меня 11.03 SP15 |
|
Back to top |
|
|
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 23 Sep 2005 08:04 Post subject: |
|
|
nordk wrote: | Вам нужен HFileEval
В 12 версии по ctrl-F5 и далее F11 создать программу, затем откомпилировать с отладчиком, стартовать задачу в нужном месте и в отладчике увидите все что Вас интересует |
по ctrl-F5...ничего не происходит, мне ведь нужно добавить в шаблон форму FileEval в ОС, похоже для этого арма нет такой возможност |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 23 Sep 2005 09:35 Post subject: |
|
|
Для FileEval надо складывать программки в папку PRINT\OC
Extensns для HFileEval.
Ваш пример из модуля ОС c моей поправкой у меня работает
Рекомендация: Возьмите 12 версию, после CTRL-F5 нажмите F11 и пишите там. Напишите там где он вызывается а потом откомпилированную программу используйте там где Вам нужно посредством запуска HFileEval("*.hrb",{}) |
|
Back to top |
|
|
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 23 Sep 2005 10:32 Post subject: |
|
|
Quote: | Рекомендация: Возьмите 12 версию, после CTRL-F5 нажмите F11 и пишите там. Напишите там где он вызывается а потом откомпилированную программу используйте там где Вам нужно посредством запуска HFileEval("*.hrb",{}) |
я пока не могу перейти на 12-ю версию, слишком рано в ней есть еще недоработки.
Quote: | Ваш пример из модуля ОС c моей поправкой у меня работает |
с какой доработкой? |
|
Back to top |
|
|
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 23 Sep 2005 10:41 Post subject: |
|
|
Костя, вот мой код, который чечас не работает, что ни так? в чем ошибка понять не могу.
Лежит в каталоге
Code: | PRO\PLUGINS\PRINT\OC\ |
вызывается на исполнение в "Шаблона док-та движения" фразой вычислить по формуле
Code: | FileEval("MainAtr.prg",{CodePred,CodePart}) |
Code: |
PRIVATE lcMyCode, lcPartCode, lRes, lcPth, lcMyName, lcPartName
lcMyCode := (aPars[1])
lcPartCode := (aPars[2])
lcPth := LoadPath()
//sayandwait(LoadPath())
DBPUSH()
//dbPush("partner2","code","",{"partner->code",lcMyCode})
DBUSEAREA(.T.,"",lcPth+"partner","partner2",.T.)
partner2->(DBSETINDEX("partner"))
partner2->(ORDSETFOCUS("code"))
//1
dbseek(lcMyCode)
lcMyName := alltrim(partner2->Shortname)
//2
dbseek(lcPartCode)
lcPartName := alltrim(partner2->Shortname)
// RESULT!
lRes := lcMyName+' '+lcPartName
//partner2->(F_DBUNLOCK())
//partner2->(dbCloseArea())
DBPOP()
|
в таком варианте выдает ошибку
Code: |
Error BASE/1122 Не верный аргумент : Transform Arguments :
( [1] = Type U [ 2] = Type: C Val
9999999999999999999999999999999999999999999999999999
9999)
|
|
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 23 Sep 2005 11:05 Post subject: |
|
|
DBUSEAREA(.T.,"",lcPth+"partner","partner2",.T.)
partner2->(DBSETINDEX("partner"))
В 4+ в FileEval категорично не работает DBUSEAREA()
Используй NetUse()
DBSETINDEX не нужна вообще
И еще все-таки давай в HFileEval - там пошагово по кнопке F8 встанешь на строку с ошибкой и дальше я и не нужен буд |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 23 Sep 2005 11:13 Post subject: |
|
|
Добрый день.
to andre19
Добавьте в конце Вашей программы такую строчку:
''
Вы используете fileeval в печатной форме, значит результат выполнения вашей программы должен быть отображен этой формой.
Результатом выполнения fileeval является результат выполнения последней "команды". В Вашем случае это dppop(). dbpop() всегда возвращает nil. Получив этот nil генератор печатной формы не может преобразовать его в строку текста, которая по его мнению должна быть выведена. Именно об этом информирует Вас приведенная Вами ошибка.
После добавления в конце программы '', результатом станет текстовая строка нулевой длины. И ошибки не будет. _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 23 Sep 2005 11:42 Post subject: |
|
|
Я уже писал вроде как про '' |
|
Back to top |
|
|
andre19
Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
|
Posted: 23 Sep 2005 11:43 Post subject: |
|
|
Behemoth wrote: | Добрый день.
to andre19
Добавьте в конце Вашей программы такую строчку:
''
Вы используете fileeval в печатной форме, значит результат выполнения вашей программы должен быть отображен этой формой.
Результатом выполнения fileeval является результат выполнения последней "команды". В Вашем случае это dppop(). dbpop() всегда возвращает nil. Получив этот nil генератор печатной формы не может преобразовать его в строку текста, которая по его мнению должна быть выведена. Именно об этом информирует Вас приведенная Вами ошибка.
После добавления в конце программы '', результатом станет текстовая строка нулевой длины. И ошибки не будет. |
скажим так!
'' не помогли, вернее как, помогли, но Евал возвращал пистое значение, в общем код теперь выглядит вот так
Code: |
PRIVATE lcMyCode, lcPartCode, lRes, lcPth, lcMyName, lcPartName
lcMyCode := (aPars[1])
lcPartCode := (aPars[2])
lcPth := LoadPath()
//sayandwait(LoadPath())
DBPUSH()
//dbPush("partner2","code","",{"partner->code",lcMyCode})
DBUSEAREA(.T.,"",lcPth+"partner","partner2",.T.)
partner2->(DBSETINDEX("partner"))
partner2->(ORDSETFOCUS("code"))
//1
dbseek(lcMyCode)
lcMyName := alltrim(partner2->Shortname)
//2
dbseek(lcPartCode)
lcPartName := alltrim(partner2->Shortname)
//partner2->(F_DBUNLOCK())
//partner2->(dbCloseArea())
DBPOP()
// RESULT!
lRes := lcMyName+' '+lcPartName
|
но вот, хоть убейте не знал, что DBPOP() это ф-ия присваивания!!! и какого черта ее рез. пихается в ретурн! ну да ладно.....
Behemoth тебе гиганское спасибище!!!! |
|
Back to top |
|
|
|