powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid и SQL запрос
6 сообщений из 6, страница 1 из 1
Grid и SQL запрос
    #33674461
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Ситуация следующая. На форме есть GRIDб нужно чтобы он получал данные с запроса. Например:
Select details, cost;
FROM sometable;
WHERE sometable.id=x
где x является id из другой таблицы, из которой он берется каждый раз из другого поля.

Пробовал это сделать через курсор, код расположен в event load event, также пробовал в init event. Оба event взяты относительно формы. Также в GRID поля RecordSourceType=1-Alias, Recordsource=temp.
Как было описано в Help\Populating Query Results in a Form Control.
Но к сожалению не работает, что делать?
...
Рейтинг: 0 / 0
Grid и SQL запрос
    #33674505
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. В INIT формы у вас должен быть уже известен критерий отбора (x)
2. В INIT формы выполняете код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
LOCAL lnX
WITH THSFORM
   .grdList.RecordSource = ""
   lnX = X && Не понял точно откуда вы берет X (поле ?!)
   SELECT details, cost ;
   FROM sometable.id=lnX ;
   INTO CURSOR cTemp
   SELECT cTemp
   GOTO TOP
   WITH .grdList
      .RecordSource = "cTemp"
      .Column1.ControlSource = "cTemp.details"
      .Column2.ControlSource = "cTemp.cost"
   ENDWITH
ENDWITH
Если в самой форме предполагается изменение по какому-нибудь событию изменение условия отбора (X), то лучше весь это код перенести в свой метод формы и вызывать его из конструктора (Init) и при изменении этого самого x

В Destroy формы (если вам курсор cTemp не нужен) неплохо бы выполнить:
Код: plaintext
USE IN SELECT("cTemp")
С уважением, Алексей
...
Рейтинг: 0 / 0
Grid и SQL запрос
    #33674507
Фотография SAM-FoxPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про Grid читать здесь . Может-поможет :)
Успехов.
...
Рейтинг: 0 / 0
Grid и SQL запрос
    #33674540
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spasibo bolshoje, ideja ponjatna, posle nebolshoj modifikacii srabotala :)
...
Рейтинг: 0 / 0
Grid и SQL запрос
    #33679868
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bolshoje spasibo. Zarabotala zaraza :)
...
Рейтинг: 0 / 0
Grid и SQL запрос
    #33680246
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создайте грид, добавьте к нему свойства:
id,flag_poisk,calias,csql

и потом наследуйте от него объекты, где Вам надо отображать данные

Тогда Вам нужно будет для обновления только 2 строки
thisform.mygrid.csql='select ......'
thisform.mygrid.init

В метод инит грида-родителя добавьте код
Код: 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.
LOCAL lcSql, lcNameAlias, lcField

LOCAL m.nCount, m.i
m.nCount= 0 
m.i= 0 
lcNameAlias	=	'['+this.calias+']'
DIMENSION af[ 1 , 1 ]

this.RecordSource=''

cSql	=	this.csql
SQLExec(gnconnect,cSQL,&lcNameAlias)  && для клиент-сервера

SELECT &lcNameAlias
IF this.flag_poisk= 1 
	LOCATE FOR id=this.id
	IF NOT FOUND()
		GO top
	ENDIF 
ENDIF

this.id	=	id
IF this.RecordSourceType= 1 
	this.RecordSource=&lcNameAlias

	m.nCount=AFIELDS(af,&lcNameAlias)
	
	FOR m.i= 1  TO this.ColumnCount
		 this.Columns(m.i).controlsource= af(m.i, 1 )
	ENDFOR

ENDIF 


Этот пример для клиент-сервера.
Для файл-сервера почти также, толькл вместо sqlexec(....)
надо вызывать &this.csql
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid и SQL запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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