powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Рвется База :)
57 сообщений из 57, показаны все 3 страниц
Рвется База :)
    #36819070
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. У меня периодически возникает проблема с отображением данных в гриде, появляется белая полоса, так что половина данных скрывается под ней. А когда щелкаешь по гриду, то на той строке, куда попадаешь, данные видны становятся или если прокручивать грид туда-сюда, то данные иногда появляются.

Звонят возмущенные пользователи и орут что у них:"База рвется!"

глюки грида во вложении
...
Рейтинг: 0 / 0
Рвется База :)
    #36819162
Фильтр используется?
...
Рейтинг: 0 / 0
Рвется База :)
    #36819203
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ffffffffffffffffffffffffffffff,

Имеется ввиду LockScreen. Я к, сожалению, в чужом коде не очень пока разобралась.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819234
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМFfffffffffffffffffffffffffffff,

Имеется ввиду LockScreen. Я к, сожалению, в чужом коде не очень пока разобралась.

покажите нам немного кода
(отбор данных и привязку к источнику)
к чему грид привязан?
напрямую к таблице?

если лочится экран на время "танцев",

то в конце должно быть нечто

thisform.LockScreen = .f.
....grid...setfocus()
...
Рейтинг: 0 / 0
Рвется База :)
    #36819342
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Были глюки с прорисовкой грида, правда немного другие. Причиной оказалось плотное прилегание контролов друг-к-другу. Фокс криво отрисовывал форму при навигации по гриду.
Для проверки поставь у грида Themes = .F. если проблема в этом, то пройдет.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819346
sqlnew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если много записей (больше 2000-3000) на индексированной таблице с фильтром возможны такие зависания.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819389
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlnew,

Это происходит не на одной форме, а периодически на каждой, где есть грид. В таблицах очень много записей.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819390
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код попозже приведу.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819413
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlnew,

поставила .themes=.f., но ничего не изменилось.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819437
sqlnew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМsqlnew,

поставила .themes=.f., но ничего не изменилось.

Это не ко мне ;-)
...
Рейтинг: 0 / 0
Рвется База :)
    #36819439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМпоставила .themes=.f., но ничего не изменилось.
Тогда надо простенький пример повторяющий глюк чтобы увидеть его живьем. Как вариант - сохранить показываемую таблицу в отдельную DBF-ку, поправить форму чтобы она работала отдельно от проекта и выложить все сюда.

PS После чего такое началось? Можно еще пооткатывать последние изменения.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819446
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlnew,

сори, ошиблась маленько.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819497
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Началось все после того, как мы с 6 версии foxpro перешли на 9-ю.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819556
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМDima T,

Началось все после того, как мы с 6 версии foxpro перешли на 9-ю.

переписывать "танцы с бубнами" будем?
покажите код.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819571
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМНачалось все после того, как мы с 6 версии foxpro перешли на 9-ю.

1. Сервиспак 2 стоит? Если нет, то поставить
2. Убрать русский рантайм (удалить все копии vfp9rrus.dll). Его наличие по-простому проверяется так: русское системное меню при старте EXE и текст сообщений об ошибках русский. Если используется английский - все по-английски.
при установке фокса кладется в "C:\Program Files\Common Files\Microsoft Shared\VFP\"
...
Рейтинг: 0 / 0
Рвется База :)
    #36819580
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Да, стоит 2 сервиспак и русский рантайм.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819596
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМрусский рантайм.

Убивай vfp9rrus.dll.
Если не поможет - выкладывай пример с повторением глюка.
Стандартных лекарств от этого нет, это глюк движка фокспро, лечить можно только "методом научного тыка". И надо чтобы было куда "тыкать"
Кроме тебя похоже никто такого глюка еще не видел.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819630
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
русский рантайм не рекомендую использовать. Пользы от него никакой:
1. Русское дефолтное меню обычно заменяется на свое русское
2. Русские сообщения об ошибках все равно непонятны пользователю, а качество перевода таково что и разработчику не всегда понятно что за ошибка.

А вред серьезный: перевод идет с опазданием, поэтому не все ошибки исправленные в английском, исправлены в русском. Так было в 6-ке и в 9-ке тоже самое.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819685
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tрусский рантайм не рекомендую использовать. Пользы от него никакой:
1. Русское дефолтное меню обычно заменяется на свое русское
2. Русские сообщения об ошибках все равно непонятны пользователю, а качество перевода таково что и разработчику не всегда понятно что за ошибка.

А вред серьезный: перевод идет с опазданием, поэтому не все ошибки исправленные в английском, исправлены в русском. Так было в 6-ке и в 9-ке тоже самое.

ну шош тебе рус.рантайм то так не нравится?

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

не вижу необх-ти закладываться при распространении приложений
на работу оных под англицким раентаймом
и необходимости удаления русского.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819690
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что за наезд на рус.рантайм?

ну у меня все под рус.рантаймом работает
от Калининграда до Находки.
и что? ась?

может вначале на "танцы с бубном" посмотрим?
...
Рейтинг: 0 / 0
Рвется База :)
    #36819753
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимои что за наезд на рус.рантайм?

ну у меня все под рус.рантаймом работает
от Калининграда до Находки.
и что? ась?

может вначале на "танцы с бубном" посмотрим?
Угу, тут только переглючило чего-то у тебя.

Я в 6-ке наелся с мистикой от русского рантайма, в 9-ке уже попадал, с меня хватит.
Тем более есть способ запуска английского без удаления русского.
...
Рейтинг: 0 / 0
Рвется База :)
    #36819853
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМпериодически возникает проблема с отображением данных в гриде, появляется белая полосатакое бывает часто при использовании LOCKSCREEN.
Где было можно, я это поубирал, а где нельзя было полностью поубирать,- по ходу программы отключал действие этой команды (LOCKSCREEN = .F.), например, при необходимости вызова форм и др. действиях, задваивающих изображение и отбеливающих частично грид, а потом снова включал (LOCKSCREEN = .t.).
...
Рейтинг: 0 / 0
Рвется База :)
    #36820399
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tпрошелмимои что за наезд на рус.рантайм?

ну у меня все под рус.рантаймом работает
от Калининграда до Находки.
и что? ась?

может вначале на "танцы с бубном" посмотрим?
Угу, тут только переглючило чего-то у тебя.

Я в 6-ке наелся с мистикой от русского рантайма, в 9-ке уже попадал, с меня хватит.
Тем более есть способ запуска английского без удаления русского.

что тут?

ну нарвался, узнал как "обходить".
и что?

с тебя хватит - удачи.
чего орать то?
...
Рейтинг: 0 / 0
Рвется База :)
    #36820466
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что смогла выдрать из программы.

Есть главная форма lp_fmstart. В ней размещается контейнер Basecont(Class library : appl.vcx).
В этот контейнер грузятся пользовательские классы, в которых и спользуется грид из библиотеки appl.vcx
...
Рейтинг: 0 / 0
Рвется База :)
    #36820634
FoxSoftware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НадеждаМ,

либо фокс обнови, либо конфликт с библиотеками классов.
Делай отладку по шагам и по объектам.
Удали объект из формы на который есть подозрение что он вызывает конфликт, проверь без этого объекта, а потом отлаживай тот объект где обнаружилась плюха.
После как отладишь по отдельности, думай как уладить конфликт объектов в форме.
Возможно придётся заменить форму и диалог ввода на другой.
За тебя никто отлаживать тут не будет!
Могу помочь за определённую плату - время деньги.
...
Рейтинг: 0 / 0
Рвется База :)
    #36820740
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМВот что смогла выдрать из программы.
И чего прикажешь с этим делать?

Запускаю DO FORM lp_fmstart
получаю ошибку: File 'uprof.dbf' does not exist.

Все что я могу сказать по поводу этого кода: никаких аномалий не увидел, все работает нормально, только файлов кое-каких не хватает.

Изучать нерабочий кусок чужой проги тут никто не будет.
Я же вроде человеческим языком писал:
Dima TЕсли не поможет - выкладывай пример с повторением глюка.
Стандартных лекарств от этого нет, это глюк движка фокспро, лечить можно только "методом научного тыка". И надо чтобы было куда "тыкать"
Кроме тебя похоже никто такого глюка еще не видел.
Надо так выложить, чтобы распаковал, запустил и сразу глюк увидел.

Поэтому готовь пример кода так чтобы просто запускался (с файлом проекта и чтобы по кнопке "Build" EXE собирался) и чтобы глюк присутствовал (с инструкцией как его повторить).
Только сама сначала у себя все проверь перед тем как сюда слать.
...
Рейтинг: 0 / 0
Рвется База :)
    #36820808
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фокс у нас на работе стоит 9- лицензионный, сервис пак 2....
Разбираюсь я в ЧУЖОМ коде (тот кто писал это, уже давно уволился). Отладку по шагам делаю.
Удалять объекты пока не рискую, потому что не разобралась до конца что и к чему в ЧУЖОМ коде.

"За тебя никто отлаживать тут не будет!" - а я и не просила за меня что-то отлаживать )
"Могу помочь за определённую плату - время деньги" - это не ко мне, так как прога не моя лично :)
...
Рейтинг: 0 / 0
Рвется База :)
    #36820826
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо так выложить, чтобы распаковал, запустил и сразу глюк увидел.

Поэтому готовь пример кода так чтобы просто запускался (с файлом проекта и чтобы по кнопке "Build" EXE собирался) и чтобы глюк присутствовал (с инструкцией как его повторить).
Только сама сначала у себя все проверь перед тем как сюда слать.

В ближайшее время постараюсь сделать...немного разгребу с более глобальными проблемами :)
...
Рейтинг: 0 / 0
Рвется База :)
    #36820887
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМФокс у нас на работе стоит 9- лицензионный, сервис пак 2....
Разбираюсь я в ЧУЖОМ коде (тот кто писал это, уже давно уволился). Отладку по шагам делаю.
Удалять объекты пока не рискую, потому что не разобралась до конца что и к чему в ЧУЖОМ коде.

"За тебя никто отлаживать тут не будет!" - а я и не просила за меня что-то отлаживать )
"Могу помочь за определённую плату - время деньги" - это не ко мне, так как прога не моя лично :)


класс-форма mn_fmx
вот это безобразие:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
	IF  0  > sql_exec('{call count.dbo.mn_planfin}', 'plan')
        =messagebox  ("Во время выполнения SQL запроса произошла ошибка!",  0  +  16  +  0 , _SCREEN.CAPTION)	
		RETURN	
	ELSE
		loadgrid(.grid1, 'plan')
  	ENDIF
*  	SET STEP ON
  	*******Это право делает грид редактируемым****
  		.grid1.Readonly= !mnr.d51.p1
*!*			.grid1.a_add=!mnr.d51.p2
*!*	  		.grid1.a_del=!mnr.d51.p2
*!*	  		.grid1.a_edit=!mnr.d51.p2
  	**********************************************
  	
 		CURSORSETPROP('tables', 'planfin', 'plan')
		CURSORSETPROP('KeyFieldList', 'planfin_id', 'plan')
		CURSORSETPROP('UpdatableFieldList', 'planfin_id, LPU, SKIND, SREDSUM, SUMMA, PERIOD_N, PERIOD_K', 'plan')
		CURSORSETPROP('UpdateNameList', 'planfin_id planfin.planfin_id, LPU planfin.LPU, SKIND planfin.SKIND, SREDSUM planfin.SREDSUM, SUMMA planfin.SUMMA, PERIOD_N planfin.PERIOD_N, PERIOD_K planfin.PERIOD_K', 'plan')
		CURSORSETPROP('SendUpdates', .T., 'plan')
		CURSORSETPROP('buffering',  3 , 'plan')
		CURSORSETPROP('UpdateType',  1 , 'plan')
		CURSORSETPROP('WhereType',  3 , 'plan')

на курсорадаптер будем переделывать?

проц-ру или ф-ю
loadgrid покажите

+ из инита формы прыгать в зад нужно с фолсом
х.з. как там ф-ма рушится - для меня загадка.

к коду есть где придраться, поэтому предлагаю немного подточить для начала.
...
Рейтинг: 0 / 0
Рвется База :)
    #36820927
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоНадеждаМФокс у нас на работе стоит 9- лицензионный, сервис пак 2....
Разбираюсь я в ЧУЖОМ коде (тот кто писал это, уже давно уволился). Отладку по шагам делаю.
Удалять объекты пока не рискую, потому что не разобралась до конца что и к чему в ЧУЖОМ коде.

"За тебя никто отлаживать тут не будет!" - а я и не просила за меня что-то отлаживать )
"Могу помочь за определённую плату - время деньги" - это не ко мне, так как прога не моя лично :)


класс-форма mn_fmx
вот это безобразие:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
	IF  0  > sql_exec('{call count.dbo.mn_planfin}', 'plan')
        =messagebox  ("Во время выполнения SQL запроса произошла ошибка!",  0  +  16  +  0 , _SCREEN.CAPTION)	
		RETURN	
	ELSE
		loadgrid(.grid1, 'plan')
  	ENDIF
*  	SET STEP ON
  	*******Это право делает грид редактируемым****
  		.grid1.Readonly= !mnr.d51.p1
*!*			.grid1.a_add=!mnr.d51.p2
*!*	  		.grid1.a_del=!mnr.d51.p2
*!*	  		.grid1.a_edit=!mnr.d51.p2
  	**********************************************
  	
 		CURSORSETPROP('tables', 'planfin', 'plan')
		CURSORSETPROP('KeyFieldList', 'planfin_id', 'plan')
		CURSORSETPROP('UpdatableFieldList', 'planfin_id, LPU, SKIND, SREDSUM, SUMMA, PERIOD_N, PERIOD_K', 'plan')
		CURSORSETPROP('UpdateNameList', 'planfin_id planfin.planfin_id, LPU planfin.LPU, SKIND planfin.SKIND, SREDSUM planfin.SREDSUM, SUMMA planfin.SUMMA, PERIOD_N planfin.PERIOD_N, PERIOD_K planfin.PERIOD_K', 'plan')
		CURSORSETPROP('SendUpdates', .T., 'plan')
		CURSORSETPROP('buffering',  3 , 'plan')
		CURSORSETPROP('UpdateType',  1 , 'plan')
		CURSORSETPROP('WhereType',  3 , 'plan')

на курсорадаптер будем переделывать?

проц-ру или ф-ю
loadgrid покажите

+ из инита формы прыгать в зад нужно с фолсом
х.з. как там ф-ма рушится - для меня загадка.

к коду есть где придраться, поэтому предлагаю немного подточить для начала.

Я понимаю что это безобразие и, то что надо на курсорадаптер переделать, но это чуть попозже. loadgrid поищу выложу.
...
Рейтинг: 0 / 0
Рвется База :)
    #36820956
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ
Я понимаю что это безобразие и, то что надо на курсорадаптер переделать, но это чуть попозже. loadgrid поищу выложу.

1. именовать курсоры необходимо уник-ми именами
2. запрос к серверу вынести в отдельный метод,
котор. должен произойти до инита ф-мы (желат-но лоад ф-мы),
т.е. до старта инита должны быть получены все курсоры с сервера,
если это не произошло - ф-ма должна завалиться взад до инита.
в ините привязать контролы, либо из инита позвать метод-привязывалку.
3. дергать инит ф-мы в др. контролах - верх безобразия.
...
Рейтинг: 0 / 0
Рвется База :)
    #36821230
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот loadgrid
...
Рейтинг: 0 / 0
Рвется База :)
    #36821565
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМ,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
 WITH gr
      .VISIBLE = .F.
      .RECORDSOURCE = ''
*!*	стираем колонки
      DO WHILE .COLUMNCOUNT >  0 
        .DELETECOLUMN
      ENDDO
      .COLUMNCOUNT = clmcnt
      .RECORDSOURCE = rcds
      .READONLY = .T.

      FOR i =  1  TO clmcnt
        so = AT(';', grstr, i) +  1   && стартовая позиция порядкового номера столбца
        sw = AT(',', grstr,  3  * i -  2 ) +  1  && стартовая позиция ширина столбца
        sf = AT(',', grstr,  3  * i -  1 ) +  1  && стартовая позиция имя_поля
        sc = AT(',', grstr,  3  * i) +  1   && стартовая позиция заголовок столбца
        ord = VAL(ALLT(SUBSTR(grstr, so, sw - so -  1 )))
        wid = VAL(ALLT(SUBSTR(grstr, sw, sf - sw -  1 )))
        field_name = SUBSTR(grstr, sf, sc - sf -  1 )
        cap = SUBSTR(grstr, sc, IIF(i = clmcnt,  100 , AT(';', grstr, i +  1 ) - sc))
        .COLUMNS(i).REMOVEOBJECT('Text1')
        .COLUMNS(i).ADDOBJECT('Text1', 'Stext')
        .COLUMNS(i).COLUMNORDER = ord
        .COLUMNS(i).WIDTH = wid
        .COLUMNS(i).CONTROLSOURCE = IIF('.' $ field_name, field_name, rcds + '.' + field_name)
        .COLUMNS(i).CONTROLS( 1 ).CAPTION = cap
      ENDFOR

      .VISIBLE = .T.
      .REFRESH

    ENDWITH
    RETU .T.

это жесть жестяная и танцы с бубеном.
подсмотреть "танцы" с меньшими трудозатратами.
пример подобных танцев смотреть здесь:
тытынц
там есть метод обхода и начитки св-в колонкам класс-грида
SetColumnsHeadersProperties,
который в моем примере зовется автоматом
при привязке грида к источнику,
т.е. при присвоении св-ву RecordSource значения
(ассайн метод)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
lparameters tcRecordSource
This.RecordSource = tcRecordSource
if !empty(tcRecordSource)
	* определяем, привязан ли грид к источнику данных - курсорадаптеру
	local loCad
	try
		loCad = getcursoradapter(tcRecordSource)
	catch
	endtry
	if vartype(loCad)="O"
		* да, есть курсорадаптер,
		* у курсорадаптера есть настройки внешнего вида и др.различных св-в колонок
		this.setColumnsHeadersProperties(loCad)
	endif
endif

критика
1. возвращать из ХП с метаданными нужно всеже курсор, а не строку с разделителями
2. сам класс-грид должен быть со своими колонками и хедерами и т.д ...,
а не так как у Вас - голым голо.
3. ....


что делать:
1. в какой-то формочке сейчас обойти этот шаманский код
и позвать какой-то врем-й присвоитель
в который явно заслать грид
и ему руками присвоить все без удаления и подсовывания своих контролов
(нужно понять, что портит гриды),
т.е. вначале найдите тот мех-м, который у Вас "хромает".
2. также данные натянуть в методе лоад ф-мы

(т.е. изменить механизмы и посмотреть что будет твориться)

если это так, то немного накрутить ваш библ-й класс - дать ему своих колонок и хедеров,
что упростит далее разр-ку,
немного упростить и перекрутить настройку гридов из описателей настроек (метаданных)

посмотрите, у меня видимость грида не дергается
и устан-ся видимость контролов в колонках явно при добавлении,
не помню, но ????? может влияет на взлет и настройку.

также обратите внимание на то, что прим-е курсорадаптеров
облегчает разр-ку в плане того, что не нужно
затем танцевать над отвязкой дан.от грида и перенастройке
при обновлении данных - рефреше курсорадаптера
(в Вашем случае - Вы вынуждены дергать заново инит формы, что явл-ся надруг-вом
над собой и фокспро).

еще раз иными словами:
1. играемся с моим примером.
2. убеждаемся - нет глюков.
3. задаемся вопросом: значит у меня что-то криво.
4. начинаем "рыть" и править свой код.
...
Рейтинг: 0 / 0
Рвется База :)
    #36832795
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер. Начала по вашим примерам и примеру отсюда http://kodu.neti.ee/~juri4/vfp60/ca_03_ru.htm пробовать работать с cursoradapter.

В связи с чем возник вопрос: как в CA получить результат работы процедуры?

все тем же родным SQLEXEС - ом?
...
Рейтинг: 0 / 0
Рвется База :)
    #36832865
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМДобрый вечер. Начала по вашим примерам и примеру отсюда http://kodu.neti.ee/~juri4/vfp60/ca_03_ru.htm пробовать работать с cursoradapter.

В связи с чем возник вопрос: как в CA получить результат работы процедуры?

все тем же родным SQLEXEС - ом?
Зависит от того, что именно возвращает эта процедура и для чего она нужна. Можно ведь в свойстве CursorAdapter.SelectCmd вместо команды Select-SQL написать вызов процедуры. Ну, примерно так

Код: plaintext
CursorAdapter.SelectCmd = "Execute MyProc"

Если процедура MyProc возвращает некую выборку, то результат этой выборки будет отображен как курсор в CursorAdapter.

Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec().

CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter?
...
Рейтинг: 0 / 0
Рвется База :)
    #36832916
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ВладимирМ
Зависит от того, что именно возвращает эта процедура и для чего она нужна. Можно ведь в свойстве CursorAdapter.SelectCmd вместо команды Select-SQL написать вызов процедуры. Ну, примерно так

Код: plaintext
CursorAdapter.SelectCmd = "Execute MyProc"

Если процедура MyProc возвращает некую выборку, то результат этой выборки будет отображен как курсор в CursorAdapter.

Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec().

CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter?[/quot]


Процедура "MyProc" - хранимая процедура MSSQL SERVER 2005. Она именно возвращает некую выборку.
...
Рейтинг: 0 / 0
Рвется База :)
    #36833657
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec().

CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter?

Владимир, чего сказать то пытались?
Рассуждение о бренности бытия и о конях в вакууме?

Когда-же Вы приоритеты измените в сторону абстрактных приемов,
скорости разработки и сопровождения, стаб-ти работы прилож-й
на фокспро?
...
Рейтинг: 0 / 0
Рвется База :)
    #36834176
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоВладимирМ
Хотя, разумеется, если рассматривать некий "общий случай" (сферического коня в вакууме), то, разумеется, придется использовать SQLExec().

CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter?
Владимир, чего сказать то пытались?
Рассуждение о бренности бытия и о конях в вакууме?

Когда-же Вы приоритеты измените в сторону абстрактных приемов,
скорости разработки и сопровождения, стаб-ти работы прилож-й
на фокспро?
Так как только появятся абстрактные задачи не привязанные ни к каким конкретным условиям, так сразу...

Когда же Вы поймете, что не существует "абстрактных приемов"? Все приемы очень даже "конкретные". Есть куча сопутствующих требований, которые просто необходимо выполнить. А ради неких "абстрактных приемов" переписывать готовое приложение с нуля никто и никогда не будет.

Вот я и спрашиваю в последнем топике об этих "сопутствующих требованиях". Точнее, зачем вообще на клиенте нужнен результат работы хранимой процедуры? Что с этим результатом предполагается делать? А далее уже можно советовать, подойдет для этих задач CursorAdapter или нет. Стоит ли тянуть весь "паровоз" "абстрактных приемов" ради данной конкретной задачи?
...
Рейтинг: 0 / 0
Рвется База :)
    #36834281
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да уж.

а если не будет вопрошающий переписывать?
а елси он изучает новые приемы?

Когда же Вы поймете, что не существует абстрактные классы,
приемы ООП, которые позволяют сократить трудозатраты
и сопровождение продуктов.


Зачем Вы начали беседу про SQLExec()?
Вас спросили как получить обновляемый курсорадаптер
в селекткмд которого вызов ХП, в ответ - вновь куча рассуждений.
Зачем, я Вас спрашиваю, - в ответ "понос".

Затем тянуть, что это облегчает разработку.

авторТочнее, зачем вообще на клиенте нужнен результат работы хранимой процедуры? Что с этим результатом предполагается делать?
Вам уже ответили - это выборка.

автор А далее уже можно советовать, подойдет для этих задач CursorAdapter или нет.
а почему он не подойдет для ХП, которая вернет выборку с данными?

Вы и не задавались задачей выяснять, что за выборка, а лили вновь "понос" про обертки и т.д.,
немного иногда разбавляйте тем, что это абстрактный класс, который облегчает разработку.
Как и конкретными примерами я уже "разбавлю".

не нужно рассказывать про сфер.коней, рассказывать о необъятном исп-и ХП,
что ХП может возвращать коней и нести бред.
можно вопрошавшему дать конкретный пример,
где в селекткмд будет вызов ХП, а далее уже он сам задаст вопрос,
что я типа не выборку возвращаю, а ...,
или там 10 курсоров.

исп-е курсорадаптера предполагает некоторые принципы и способы написания ХП,
вот про это и нужно было намекнуть.
...
Рейтинг: 0 / 0
Рвется База :)
    #36834615
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот всегда так. Полная каша в изложении своих мыслей и полнейшее игнорорование того, о чем вообще идет разговор. Реакция на отдельные слова, а не на смысл этих слов. Поэтому напомню, с чего все началось.

НадеждаМ : как в CA получить результат работы процедуры?
ВладимирМ : CursorAdapter.SelectCmd = "Execute MyProc". Но в общем случае SQLExec()
прошелмимо : Когда-же Вы приоритеты измените в сторону абстрактных приемов
???
ВладимирМ : Какие инструменты использовать, зависит от решаемой задачи
прошелмимо : Зачем Вы начали беседу про SQLExec()?
???

Не замечаете странностей в подобной дискуссии? Дальше еще веселее

ВладимирМ : Зависит от того, что именно возвращает эта процедура и для чего она нужна
НадеждаМ : Процедура ... возвращает некую выборку
ВладимирМ : Что с этой выборкой предполагается делать на клиенте?
прошелмимо : Вы и не задавались задачей выяснять, что за выборка, а лили вновь "понос" про обертки и т.д.,
???

Хорошо, уточним про "обертку"

ВладимирМ : CursorAdapter, прежде всего, создавался как "обертка" над командой Select-SQL. Все вокруг этого и крутится. Ну, по простому: сделали выборку записей, изменили записи, сбросили изменений обратно. Если Вам требуется нечто, отличное Select-SQL, то следует подумать, а нужен ли Вам CursorAdapter?
прошелмимо :исп-е курсорадаптера предполагает некоторые принципы и способы написания ХП, вот про это и нужно было намекнуть

Обратите внимание, что, в отличие от Вас, я говорю вовсе не о "принципах написания", а о "принципах использования". О целях, а не о средствах их достижения.

Если то, что я написал, расходится с Вашим пониманием, того, для чего предназначен CursorAdapter, то где Ваше определение?
...
Рейтинг: 0 / 0
Рвется База :)
    #36834640
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Если то, что я написал, расходится с Вашим пониманием, того, для чего предназначен CursorAdapter, то где Ваше определение?

Да. Вам лучше молчать - уже все написано про "обертки".
кроме "обертка" Вы сообщить ничего не можете.
примеров использования не создали.

создайте примеры и научите разработчиков использовать.
просто писать кучу слов не нужно - уже все написано.
...
Рейтинг: 0 / 0
Рвется База :)
    #36834674
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит, для чего предназначен CursorAdapter Вы не знаете? Не то, что он делает, а для чего его следует использовать? Жаль...
...
Рейтинг: 0 / 0
Рвется База :)
    #36834776
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как удалить запись через CA?

Как применить вот эти свойства?
CursorAdapter.DeleteCmd [ = cCommand ]
CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType]
CursorAdapter.DeleteCmdDataSource [ = cDataSource]
...
Рейтинг: 0 / 0
Рвется База :)
    #36834788
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМКак удалить запись через CA?

Как применить вот эти свойства?
CursorAdapter.DeleteCmd [ = cCommand ]
CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType]
CursorAdapter.DeleteCmdDataSource [ = cDataSource]

Вам не нужно применять эти команды.
Вам нужно получить с пом ХП с ключами курсор,
правильно настроить св-ва курсорадаптера.

Далее такой курсор буде обновляемым, т.е изм-я из него будут автоматич-ки сохр-ся на сервер
(генериться команды обновл-я, удаления, добавл-я записей)
...
Рейтинг: 0 / 0
Рвется База :)
    #36834790
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЗначит, для чего предназначен CursorAdapter Вы не знаете? Не то, что он делает, а для чего его следует использовать? Жаль...

старый, упертый глупец - главный вредитель.
убейся о стол, негодяй.
...
Рейтинг: 0 / 0
Рвется База :)
    #36834799
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМКак удалить запись через CA?

Как применить вот эти свойства?
CursorAdapter.DeleteCmd [ = cCommand ]
CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType]
CursorAdapter.DeleteCmdDataSource [ = cDataSource]

завтра буд рисовать пример.
Вам показать курсорадаптер
с селекткмд = "exec .... @cTT=..." ?

постановка задачи:
ХП будет возвращать 1 курсор и кад будет настроен таким образом,
что при изм-и данных на клиенте будут авт-ки произв-ся соотв-е изм-я в таблице на сервере,
сервер используем ms sql 2005.

?
...
Рейтинг: 0 / 0
Рвется База :)
    #36834804
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо

завтра буд рисовать пример.
Вам показать курсорадаптер
с селекткмд = "exec .... @cTT=..." ?

постановка задачи:
ХП будет возвращать 1 курсор и кад будет настроен таким образом,
что при изм-и данных на клиенте будут авт-ки произв-ся соотв-е изм-я в таблице на сервере,
сервер используем ms sql 2005.

?

Да, с примерчиком можно, а то пытаюсь тут что-то сообразить, но криво работает че-то. Да постановка задачи именно такая.
...
Рейтинг: 0 / 0
Рвется База :)
    #36834809
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМпрошелмимо

завтра буд рисовать пример.
Вам показать курсорадаптер
с селекткмд = "exec .... @cTT=..." ?

постановка задачи:
ХП будет возвращать 1 курсор и кад будет настроен таким образом,
что при изм-и данных на клиенте будут авт-ки произв-ся соотв-е изм-я в таблице на сервере,
сервер используем ms sql 2005.

?

Да, с примерчиком можно, а то пытаюсь тут что-то сообразить, но криво работает че-то. Да постановка задачи именно такая.

ок, ждите - завтра на коленке нарисую
...
Рейтинг: 0 / 0
Рвется База :)
    #36834825
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подобный пример (есть список док-в - ):
там обсуждении ссылка на бд:
http://sql.ru/forum/actualthread.aspx?tid=784178&hl=ms+sql+2005
клиент.часть:
http://sql.ru/forum/actualfile.aspx?id=9327206

смотрите настройки курсорадаптера documents
selectcmd = exec selectDocums @dBeginDate = ?this.DateBegin, @dEndDate = ?this.DateEnd
и т.д

код удаления Вы увидите в кнопке удалить на списочной класс-форме
(это не повторять - там все руками,
в реальной разр-ке так не поступают - работают универсальные классы).
...
Рейтинг: 0 / 0
Рвется База :)
    #36834836
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо,

Да мне хотя-бы пока на домашнем примере попробовать )
...
Рейтинг: 0 / 0
Рвется База :)
    #36835352
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМпрошелмимо,

Да мне хотя-бы пока на домашнем примере попробовать )

отдаю "слона".

пример содержит скрипты script.sql для создания объектов в БД
1. на сервере создать БД mytest, выполнить скрипты

2. распаковать в папку, перенастроить пути в файликах
разработка.lnk
config.cfg
path.prg
(если не хочется это делать - создайте папки
и распакуйте по такому пути c:\forum\пример_с_хп\)

3. нажать разработка.lnk
он ссылается на объект
"C:\Program Files\Microsoft Visual FoxPro 9\vfp9.exe" -cc:\forum\пример_с_хп\config.cfg
(если пути к среде разработки отличаются - исправить)

при отличающихся имени сервера, пароле и имени БД править
код в классе app - метод login
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
With oServer

	.ServerName      = ".\SQLSERVER2005"
	.DBName           = "myTest"
	.User_name       = "sa"
	.User_PassWord = "as"
...

пример демонстрирует спис.форму редактирования,
получение курсора посредством ХП.
показан пример разработки абстрактного инструмента
настройки курсорадаптера,
показан универсальный инструмент для
сохр-я изм-й, отобр-я ошибок и т.д. ...
...
Рейтинг: 0 / 0
Рвется База :)
    #36835436
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к списочной ф-ме прикручен класс-грид с сортировкой и т.д.
...
Рейтинг: 0 / 0
Рвется База :)
    #36835633
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМКак удалить запись через CA?

Как применить вот эти свойства?
CursorAdapter.DeleteCmd [ = cCommand ]
CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType]
CursorAdapter.DeleteCmdDataSource [ = cDataSource]
Я попытаюсь объяснить принцип работы с удаленными данными. Думаю, тогда будет проще понять о чем вообще речь.

Итак, основа основ - это запрос к серверу. Команда Select-SQL (CursorAdapter.SelectCmd), пусть и выполняемая внутри хранимой процедуры. Эта команда возвращает некую выборку. Очевидно, что выборка - это не есть исходная таблица. Это другая таблица. Физически другая. Даже расположенная в другом месте.

Следовательно, модификация этой другой таблицы никак не затронет исходную таблицу, на основе которой эта выборка и делается. Необходимо предпринять ряд действий, чтобы изменения из выборки попали в исходные таблицы.

Существуют стандартные команды для модификаций таблиц. Insert-SQL, Update-SQL, Delete-SQL. Следовательно, для выполнения модификации необходимо сформировать соответствующие команды и передать их на сервер. Что необходимо знать, чтобы сформировать эти команды?

1. Имя таблицы, которую будем модифицировать (CursorAdapter.Tables)
2. Поле или набор полей, по которым можно однозначно идентифицировать запись. Так называемое, ключевое поле или первичный ключ (CursorAdapter.KeyFieldList)
3. Какие поля будем модифицировать (CursorAdapter.UpdatableFieldList). Список полей через запятую.
4. Из каких полей выборки (на клиенте) брать информацию для обновления полей на сервере. Так сказать "карта соответствия" (CursorAdapter.UpdateNameList). Какое поле на клиенте какому полю на сервере соответствует. Список пар полей через запятую.

Собственно, это и есть минимально необходимый набор настроек CursorAdapter, чтобы обеспечить автоматическое обновление данных на сервере. В большинстве случаев этого вполне достаточно. Есть еще ряд "тонких" настроек, но значения по-умолчанию этих "тонких" настроек, опять же, в большинстве случаев, как раз те, что нужно.

Объект CursorAdapter при возникновении события сохранения внесенных изменений на основании этих 4 настроек автоматически формирует необходимые команды на модификацию (Insert-SQL, Update-SQL, Delete-SQL) и также автоматически отправляет их на сервер.

Что является этим самым "событием сохранения внесенных изменений"?

В FoxPro есть такое понятие как "буферизация". Если представить исходную выборку (исходную таблицу) как лист бумаги с некоторым текстом, то буферизация - это прозрачная калька, положенная поверх этого листа. Внося изменения, Вы "пишите" эти изменения не сразу на лист, а на эту самую прозрачную кальку. Затем, при возникновении определенного события, происходит перенос изменений с "кальки" на собственно лист.

К чему это все? А к тому, что результат выборки в CursorAdapter всегда находится в режиме оптимистической буферизации. По умолчанию, в режиме оптимистической буферизации строк (3), но может быть переключен в режим оптимистической буферизации таблиц (5). Установить для него режим пессимистической буфериазции или отключить буферизацию совсем - невозможно.

Это значит, что выполняя модификации в курсоре, полученном из CursorAdapter, фактически, Вы модифицируете буфер этого курсора. Как следствие, под событием "сохранения внесенных изменений" понимается процесс "сброса буфера" или, другими словами, переноса изменений из буфера в сам курсор

Сброс буфера происходит

В режиме строковой буферизации

1. При попытке перехода на другую запись
2. При попытке закрытия курсора
3. По команде TableUpdate()

В режиме табличной буферизации только по команде TableUpdate() и никак иначе.

Именно по этой причине, чаще всего, устанавливают режим табличной буферизации (5), чтобы исключить неконтролируемый сброс буфера. Неконтролируемый программистом.

Как следствие, процесс сохранения внесенных изменений запускается командой TableUpdate()

А зачем же тогда сделаны дополнительные свойства вроде CursorAdapter.DeleteCmd, CursorAdapter.InsertCmd, CursorAdapter.UpdateCmd? Ведь команды на модификацию будут сформированы автоматически.

А это сделано на тот случай, если команды, автоматически формируемые CursorAdapter для обновления данных Вас не устраивают. В этом случае при сбросе буфера (по команде TableUpdate()) будут использованы команды, указанные в этих свойствах.

Соответственно, выбор за Вами. Если 4-х стандартных настроек (Tables, KeyFieldList, UpdatableFieldList, UpdateNameList) достаточно для заложенной в приложении логики обновления данных, то этим и следует ограничиться. Если же этого недостаточно, то следует проанализировать насколько логика приложения отличается от логики CursorAdapter и либо полностью подменять эту логику, либо "слегка" корректировать. CursorAdapter предоставляет возможность сделать и то, и другое.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Рвется База :)
    #37666089
L.Lisichka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. В поисках информации по работе с курсорадаптером натолкнулась на эту тему. Скачала пример_с_хп, стала разбираться. Вроде все получается, только вот не понятно одно: как в SQL выражение добавить условие where? Пока у меня простой запрос, для отображения данных. Но в дальнейшем понадобится и поиск по условию.

Завтра приведу код.
...
Рейтинг: 0 / 0
Рвется База :)
    #37666506
L.Lisichka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
Клас курсорадаптер взят из приведенного выше примера "пример_с_хп"
&& в лоаде формы
PUBLIC  tcSql_updateTableName, 	;  	&& таблица на сервере	
	        tcCADkeyFieldList, 		;	&& ключь-линк в таблице
		tcCADupdatableFieldList,;	&& обновляемые поля в таблице  (список через запятую)
		tcCADcursorSchema, 		;	&& схема - преобразов-е типов  (список через зяпятую)
		tcWhere, 				;	&& условие в запросе (выражение после WHERE)
		tcSelectedFieldsList,   ;	&& поля в строке запроса (необяз-й параметр)
		tcGroupBy,				;	&& строка - список через запятую
		tcOrderBy,				;	&& строка - список через запятую
		tcSelectCmdADD,			;	&& добавчик к SelectCmd
		tcSelectCmd,			;   && если уж совсем нестандартный запрос
		tcAliasName,			;	&& имя алиаза
		tlLockCursorFill,		;	&& T - не произойдет загрузка данных в курсор
		tcTimeStampFieldsList       && && список полей TimeStamp

WITH THIS
	SET TALK OFF
	SET OPTIMIZE ON

	.combo1.LISTINDEX = 1 
	.combo1.VALID
	.grid1.RECORDSOURCE = ''

	tcAliasName='fin'
	tcSelectCmd='exec count.dbo.mn_fin;2'
	tcSql_updateTableName='mnfin'
	tcCADkeyFieldList='fin_id'
	tcCADUpdateNamelist='lpucode mnfin.lpucode, date mnfin.date, sum mnfin.sum, prim mnfin.prim, skind mnfin.skind, ndoc mnfin.ndoc, rf mnfin.rf, god mnfin.god, priz mnfin.priz, paydate mnfin.paydate, paynum mnfin.paynum, ostatok mnfin.ostatok'
	tcCADupdatableFieldList='lpucode, date, sum, prim, skind, ndoc, rf, god, priz, paydate, paynum, ostatok'
	tcCADcursorSchema=''
						
	.ocad = CREATEOBJECT("cad_test2") 
		
	select (tcAliasName)		
		
	COUNT TO cnt1
	GO TOP
		
	IF cnt1 > 0

                .grid1.recordsource=tcAliasName   	
  			
  		.grid1.Refresh()	
	ENDIF
	
ENDWITH

&& в кнопке поиска
WITH this.parent

	IF empty(.text1.value)
		 = MESSAGEBOX("Введите критерии поиска!", 0 + 64 + 0, _SCREEN.CAPTION)
		.text1.setfocus
		RETURN .f.
	else
		
                par(2)=.text1.value

		DO case
			CASE .combo1.LISTINDEX = 1 &&поиск по lpucode 
			&& что сюда вставить?
			      
			CASE .combo1.LISTINDEX = 2
				
			
			CASE .combo1.LISTINDEX = 3
				
		ENDCASE			

	if .oCad.CursorRefresh()
		IF USED(tcAliasName)
  			SELECT (tcAliasName)
			COUNT TO cnt1
			GO TOP
    		        IF cnt1 > 0

                                .grid1.recordsource=tcAliasName   	
  			
  		                .grid1.Refresh()	

		        ELSE
			        = MESSAGEBOX("Не найдено!", 0 + 64 + 0, _SCREEN.CAPTION)
			ENDIF				
		ENDIF
	else
	
	messagebox('Ошибка')	
endif

endwith 
...
Рейтинг: 0 / 0
Рвется База :)
    #37666546
L.Lisichka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DO case
CASE .combo1.LISTINDEX = 1 &&поиск по lpucode
попробовала вставить
tcWhere = 'where '+iif(!empty(par(2)), 'lpu = '+ltrim(str(par(2))), '')

но ничего не происходит
даже после .oCad.CursorRefresh()
...
Рейтинг: 0 / 0
Рвется База :)
    #37666759
L.Lisichka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста разобраться с этим классом. Как сделать поиск по условию.
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Рвется База :)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]