powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Про подмену SelectCMD в курсорадептере
5 сообщений из 5, страница 1 из 1
Про подмену SelectCMD в курсорадептере
    #36767612
После подмены селекткмд в курсорадаптере почему-то не срабатывает метод курсоррефреш.

Делаю так: Разбираю старый селекткмд, вырезаю предложение WHERE и формирую его заново в зависимости от состояния контролов на форме. Потом вызываю метод рефрешкурсор — реакции никакой. Пришлось сделать так:

Код: 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.
* подменяем селекткмд
pcSelectCMD=thisform.dataEnvironment.cadObject.SelectCmd

pcSelectCMD=ALLTRIM(STREXTRACT(pcSelectCMD,'','WHERE', 1 , 1 + 2 ))+' where .t.'

IF thisform.chkColor.Value= 1 
	pcSelectCMD=pcSelectCMD+' and catest.ccolor=?curcolor.ccolor'
ENDIF 
IF thisform.chkMaterial.Value= 1 
	pcSelectCMD=pcSelectCMD+' and catest.cmaterial=?curmaterial.cmaterial'
ENDIF 

* просто посмотреть команду
_vfp.StatusBar=pcSelectCMD

thisform.dataEnvironment.CadObject.SelectCMD=pcSelectCMD

* обновление курсора через курсоррефреш не работает почему-то
*thisform.dataEnvironment.cadObject.CursorRefresh()

* работает обновление через курсорфилл
thisform.grid1.Tag=thisform.grid1.RecordSource
thisform.grid1.RecordSource=''
thisform.dataEnvironment.cadObject.CursorFill()
thisform.grid1.RecordSource=thisform.grid1.Tag

thisform.grid1.Refresh()

Пример в приложенном файле, что я делаю неправильно, подскажите.
...
Рейтинг: 0 / 0
Про подмену SelectCMD в курсорадептере
    #36767636
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШестипаловПример в приложенном файле, что я делаю неправильно, подскажите.

Вы изменяете саму строку селекткмд - этого делать нельзя!!!!

длина (структура) селекткмд меняться не должна!

вопрос:
курсорадаптер для родных таблиц или ?

для родных - решается применением макроподстановки
- для ms sql - оборачиванием "плясок" в хранимую процедуру.
...
Рейтинг: 0 / 0
Про подмену SelectCMD в курсорадептере
    #36767736
прошелмимо,

авторВы изменяете саму строку селекткмд - этого делать нельзя!!!!

Ну, в общем, я это подозревал :-)

авторкурсорадаптер для родных таблиц или ?

Да, для родных.

автордля родных - решается применением макроподстановки

Не могли бы вы показать, как это можно решить в моём случае?
...
Рейтинг: 0 / 0
Про подмену SelectCMD в курсорадептере
    #36767801
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
toCAD.cWhere = '&?pcWhere'

Кад имеет ассайн метод и клеит строку:
text to this.SelectCmd noshow textmerge pretext 15
select * from <<this.Tables>>
<<iif(!empty(this.cWhere),'where '+this.cWhere,'')>>
endtext


select * from ,,,, where &?pcWhere

получается селекткмд всегда одной длины и структуры

далее в кнопке "отбор по условию"

клеим условие
private pcWhere
pcWhere = iif(!empty(lnId), 'id = '+ltrim(str(lnId)), 'id>0') + ;
icase(lnTypeRecords=2,' and !del', lnTypeRecords=3,' and del', '')

(меняем строку после where в запросе)

при
if thisform.oCad.CursorRefresh()

происходит чудо.
...
Рейтинг: 0 / 0
Про подмену SelectCMD в курсорадептере
    #36768590
прошелмимо,

спасибо, буду разбираться :-)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Про подмену SelectCMD в курсорадептере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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