Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 отчего seek не 'seek'-ает  [new]
startFOX
Member

Откуда:
Сообщений: 153
Прошу прощения за подобную игру слов, не удержался :)

Проблема вот в чём

Есть форма быстрого поиска: либо по номеру страх. номера, либо по ФИО. Поиск по № пенс. номера проходит на ура, НО

поиск по ФИО в среде VFP работает, а вот если сварить exe-шник и отдельно запустить быстрый
поиск по ФИО, то не позиционируется. В чем может быть дело?

P.S. VFP7
17 ноя 06, 11:39    [3414017]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
alex11100
Guest
set near ...
set exact ...
ну и индекс allt upper lower и само выражение в сике
17 ноя 06, 11:41    [3414044]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1547
И правильные языковые настройки, т.е. config.fpw и т.д.
17 ноя 06, 11:46    [3414108]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
startFOX
Member

Откуда:
Сообщений: 153
Прошу прощения, не привел исходники...
recOld = RECNO()
IF NOT EMPTY(This.Value)
   SET EXACT OFF
   
*----------- НОМЕР ПЕНСИОННОГО АБОНЕНТА   
   IF thisform.optiongroup1.option2.Value = 1 && по № страхового свидетельства
     SET ORDER TO 1   && ALLTRIM(NPSU) 
*     IF NOT SEEK(ALLTRIM(this.Value),'vce', 'npsu_idx') THEN 
     IF NOT SEEK(ALLTRIM(this.Value)) THEN 
       GO recOld
     ELSE 
       thisform.grid2.Refresh && Показывем найденную запись
     ENDIF
   ENDIF   

*----------- ФАМИЛИЯ АБОНЕНТА   
   IF thisform.optiongroup1.option1.Value = 1 && по фамилии абонента
     strFIO = UPPER(ALLTRIM(thisform.edt_snils.Value) + ALLTRIM(thisform.edt_name.Value))
*     IF NOT SEEK(strFIO,'vce', 'fio_d') THEN 
     SET ORDER TO 2   && UPPER(ALLTRIM(FM)+ALLTRIM(IM)+ALLTRIM(OT)) 
     IF NOT SEEK(ALLTRIM(strFIO)) THEN 
       GO recOld
     ELSE 
       thisform.grid2.Refresh && Показывем найденную запись
     ENDIF
   ENDIF   
   
thisform.grid2.SetFocus
this.SetFocus  
thisform.lbl_fio.Caption = ALLTRIM(fm) + ' ' + ALLTRIM(im) +' ' +ALLTRIM(ot)
   
ENDIF
17 ноя 06, 11:48    [3414132]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
alex11100
Guest
почистите свой код
уберите лишние функции - куча аллтримов не нужных
не дергайте тег - там в сике можно указать и алиаз и имя тега

по номеру тега не ссылайтесь - безобразие

сет ниар поставьте
покажите фоксу где остановиться нужно - в хелпе читайте
17 ноя 06, 11:53    [3414170]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
startFOX
Member

Откуда:
Сообщений: 153
Э-э-х
"Уж сколько раз твердили миру..."

Sergey Sizov

И правильные языковые настройки, т.е. config.fpw и т.д.


Спасибо, совсем забыл про заветный "config.fpw". Вопрос исчерпан.
17 ноя 06, 11:56    [3414190]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
startFOX
Member

Откуда:
Сообщений: 153
2 alex11100

Так что ли? Будем учиться писать грамотно...

recOld = RECNO()
IF NOT EMPTY(This.Value)
   SET EXACT OFF
   SET NEAR ON 
   
*----------- ПЕНСИОННЫЙ НОМЕР АБОНЕНТА   
   IF thisform.optiongroup1.option2.Value = 1 && по № страхового свидетельства
     SET ORDER TO ALLTRIM(NPSU) 
     IF NOT SEEK(ALLTRIM(this.Value),'vce', 'npsu_idx') THEN 
       GO recOld
     ELSE 
       thisform.grid2.Refresh && Показывем найденную запись
     ENDIF
   ENDIF   

*----------- ФАМИЛИЯ ИМЯ АБОНЕНТА   
   IF thisform.optiongroup1.option1.Value = 1 && по фамилии абонента
     strFIO = UPPER(ALLTRIM(thisform.edt_snils.Value) + ALLTRIM(thisform.edt_name.Value))
     SET ORDER TO UPPER(ALLTRIM(FM)+ALLTRIM(IM)+ALLTRIM(OT)) 
     IF NOT SEEK(strFIO,'vce', 'fio_d') THEN 
       GO recOld
     ELSE 
       thisform.grid2.Refresh && Показывем найденную запись
     ENDIF
   ENDIF   
   
thisform.grid2.SetFocus
this.SetFocus  
thisform.lbl_fio.Caption = ALLTRIM(fm) + ' ' + ALLTRIM(im) +' ' +ALLTRIM(ot)
   
ENDIF
17 ноя 06, 12:04    [3414252]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
Dima T
Member

Откуда:
Сообщений: 15272
startFOX
2 alex11100

Так что ли? Будем учиться писать грамотно...

...
     SET ORDER TO ALLTRIM(NPSU) 
...
     SET ORDER TO UPPER(ALLTRIM(FM)+ALLTRIM(IM)+ALLTRIM(OT)) 


Ты думаешь это грамотно? Запусти.
17 ноя 06, 12:23    [3414438]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
Владимир СА
Member

Откуда:
Сообщений: 7881
startFOX
Так что ли? Будем учиться писать грамотно...

1. SET ORDER TO убрать надо, т.к. ты уже определил в функции SEEK по каким индексам идет поиск.
2. SET EXACT OFF
SET NEAR ON
Эти установки лично я делаю в стартовом файле.
17 ноя 06, 12:29    [3414490]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
Dima T
Member

Откуда:
Сообщений: 15272
Крайне не желательно использовать alltrim() в индексных выражениях.
Например в твоем индексе по UPPER(ALLTRIM(FM)+ALLTRIM(IM)+ALLTRIM(OT)) сортировка будет так:
Иванов Андрей
Иванова Анна
Иванов Петр
17 ноя 06, 12:32    [3414530]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
alex11100
Guest
ну до грамотности далеко

thisform.optiongroup1 может одновременно быть надавлено несколько кнопок?
вот у узнавай именно у группы значение

у фокса есть ду кейс


через пол года
ты не разберешься, что в thisform.edt_snils.Value и его тип

ну напиши вверху

local lcFamily
lcFamily = thisform.edt_snils.Value

ну и пользуй дальше переменную,
что ты форму дергаешь, зисформ, зисформ
17 ноя 06, 12:50    [3414680]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
ORAselect
Member

Откуда:
Сообщений: 145
Мужик, а поискать select * from where ... не пробовал? Гарантированая безгемогность!
19 ноя 06, 14:52    [3420849]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
ORAselect
Member

Откуда:
Сообщений: 145
И, кстати, показывать результаты, возвращенные запросом. Совсем красота.
19 ноя 06, 14:54    [3420854]     Ответить | Цитировать Сообщить модератору
 Re: отчего seek не 'seek'-ает  [new]
startFOX
Member

Откуда:
Сообщений: 153
ORAselect
Мужик, а поискать select * from where ... не пробовал? Гарантированая безгемогность!


Знаете ли, хамить здесь не нужно. А select-ом осуществлять быстрый поиск, кажется, не очень хорошо. По-моему, значительно удобней и практичней использовать индексы.

Остальные замечания постараюсь учесть...
20 ноя 06, 09:13    [3422126]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить