nordk wrote: |
Давайте составим табличку Комментарий имя поля Например Тип адреса P_type Т.е. у нас будет три запроса и к каждому напишем строку запроса для ввода и имя поля куда будем класть |
Code: |
partner->(RECLOCK())
partner->p_typ:=p_typ partner->p_vid:=p_vid partner->p_post:=p_post partner->(F_DBUNLOCK()) |
Code: |
PARTNER->( QINPUT(10,15,12,65, ;
{{"Введите тип партнера:","P_TYPE"}, ; {"Введите вид партнера:","P_VID"}, ; {"Введите E-Mail......:","P_POST"} ; }, ; 1,{"s_t","s_v"},{,,REPLICATE("X",30)}, ; ,,,,,, ; 'RESTOFF') ) |
Code: |
function main() Local p_vid,p_typ,p_post Local aRef Local aSet,aSetKey altd() aSet:=SaveSet() aSetKey:=SaveSetKey() NETUSE("PART_T","part_t.dbf",,.F.) //справочник типов партнеров NETUSE("PART_V","part_v.dbf",,.F.) //справочник видов партнеров PART_T->(OrdSetFocus("PART_T")) PART_V->(OrdSetFocus("PART_V")) p_typ:=partner->p_typ //подтянули текущее значение типа p_vid:=partner->p_vid //подтянули текущее значение вида p_post:=partner->p_post //подтянули текущее значение емэйла //определим справочник типов part_t->( MAKEREFER("s_t","Тип партнера",2,{" Код "," Тип "},; {3,5,16}, "n/w,w+/n",{"CODE"},{"aIn[1]"},'UPPER(aIn[1])',; {{||FIELD->CODE},{||FIELD->NAME}}; ,,,,,,,,,,,,,,,,,'cFind$UPPER(NAME)')) //определим справочник видов part_v->( MAKEREFER("s_v","Вид партнера",2,{" Код ","Населенный пункт "},; {3,5,16}, "n/w,w+/n",{"TYPE"},{"aIn[2]"},'UPPER(aIn[1]+aIn[2])',; {{||FIELD->TYPE},{||FIELD->NAME}}; ,,,,,,; {||part_v->( SETSCOPE('UPPER(CODE)',UPPER(aIn[1])) )},; {||part_v->( SETSCOPE() )},; ,,,,,,,,,'cFind$UPPER(NAME)')) if NoOrYes("Изменять информацию о партнере",2,{" Да "," Нет "})=1 PARTNER->( QINPUT(10,15,14,70, ; {{"Введите тип партнера:","P_TYP"}, ; {"Введите вид партнера:","P_VID"}, ; {"Введите E-Mail......:","P_POST"} ; }, ; 1,{"s_t","s_v"},{,,REPLICATE("X",30)}, ; ,,,,,, ; 'RESTOFF') ) endif part_t->( DBCLOSEAREA() ) part_v->( DBCLOSEAREA() ) RestSetKey(aSetKey) RestSet(aSet) return nil |
vla wrote: |
Ну что-же, вот в таком виде в целом уже работает.
Остались некоторые моменты: - при открытии второго справочника (s_v) не работает фильтр по первому справочнику (по s_t); - если текущее значение в s_t =1, то при нажатии на Ф2 или кей даун справочник открывается на значении 2: - s_v ведет себя аналогично - открывается на последнем значении; |
Quote: |
- а можно-ли до открытия справочника по Ф2 видеть не только код, но и название пункта ? |
Quote: |
- при попытке пройти s_t без выбора из справочника (просто стрелка вниз) справочник открывается принудительно; |
Quote: |
- переменные для хранения текущих значений теперь, однако, без надобности ? |
Quote: |
Все эти три пункта завязаны на индекс Вероятно он кривой. Надо бы его построить средствами БЭСТа. |
Quote: |
- а можно-ли до открытия справочника по Ф2 видеть не только код, но и название пункта ? А вот это честно говоря не понял - а что слева комментария разве нет ? |
Quote: |
Это правильно - так MakeRefer настроили - там стоит параметр 2
в описании есть что это параметр принудительного справочника |
Code: |
//это для проверки предположения о кривости индекса
NetUseExc('PART_T',"part_t.dbf") INDEX ON UPPER(CODE) TAG PART_T TO ("part_t.cdx") PART_T->(dbclosearea()) NetUseExc('PART_V',"part_v.dbf") INDEX ON UPPER(CODE+TYPE) TAG PART_V TO ("part_v.cdx") PART_V->(dbclosearea()) |
vla wrote: |
До открытия справочника виден только код. Без расшифровки. А в БЭСТе в таких случаях справа расшифровка есть. Можно ли так-же ?
|
Quote: |
Вставьте перед скопом SayAndWait('ok') и если перед входом в справочник надпись появиться - запятые не напутал, не появиться - напутал. Это должен быть параметр bPreDisp |
vla wrote: | ||
Щаас я его ... создание в программу вставлю и посмотрю ... |
nordk wrote: | ||
Да можно с помощью bScrInit Описание блока кода смотри в описании Инитлист В нем можно сделать поиск по коду в БД и через SayScreen прописать или заранее определеить в переменную и ее прописать. Тогда после выхода из справочника надо также менять значение этой переменной и прорисовывать на экране |
vla wrote: | ||
Вот ломаю голову, как в блок кода вставить команду ... Они же должны чем-то разделяться, команды-то |
Code: |
{||{SayAndWait("Ok"), part_v->( SETSCOPE('UPPER(CODE)',UPPER(aIn[1])) )}} |
vla wrote: | ||
Это nTypRefer (параметр 3)? |
Дениска wrote: | ||||||
Может так:
? Параметр bPreDisp должен быть 17-й. Проверить можно посчитав запятые или с помощью SayAndWait(). |
vla wrote: |
Не-а... Не работает такая конструкция. Параметр вроде семнадцатый - пересчитал раз 5 ... |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours