Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Снова вопрос по гриду / 23 сообщений из 23, страница 1 из 1
19.07.2007, 09:10
    #34668934
k_a_t_e
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
Вопрос в принципе простой, как, зная столбец и строку ячейки грида, узнать ее содержимое.
...
Рейтинг: 0 / 0
19.07.2007, 09:15
    #34668943
Снова вопрос по гриду
Ну что же всех так и тянет использовать грид как электронную таблицу-то...

Грид показывает содержимое таблицы/курсора под ним. И значения надо брать оттуда, а не из грида. Нет в гриде никаких значений.

Если под столбцом понимается поле в таблице/курсоре, а курсор стоит на нужной строке, то искомое находится в YourTable.YourField
...
Рейтинг: 0 / 0
19.07.2007, 09:19
    #34668947
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
у грида есть источник

может в источнике по айди ключа и поискать?


так, к размышлению на будущее ...
еще лучше вариант
когда есть перегруженный кад
это объект
у него можно сделать метод типа гетвал ....
у него есть свойства, которые сообщают кто у него курсор
(а по курсору и взад и объект ищется)
есть свойства, сообщающие, кто у него ключик,
что можно трогать а чего нет
ну и т.д.
...
Рейтинг: 0 / 0
19.07.2007, 09:20
    #34668949
k_a_t_e
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
Дело в том,что грид строится не на основе таблицы (тогда действительно все ясно), а на основе запроса. Как быть в таком случае?
...
Рейтинг: 0 / 0
19.07.2007, 09:21
    #34668951
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
если не сложно, то простенький пример
сюда покажите
и опишите чего нужно

а мы порезвимся

я покажу чего-нить в стиле самоговорящий бубен-грид
...
Рейтинг: 0 / 0
19.07.2007, 09:23
    #34668956
Снова вопрос по гриду
автора на основе запроса

у запроса есть курсор
у курсора есть данные и ключи
ну и т.д. ...

и рекно и реккоунт у них есть
и олдвальюе у буферизованных найдете
ну и т.д.
...
Рейтинг: 0 / 0
19.07.2007, 09:26
    #34668961
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
автортак и тянет использовать грид

ну видят они объект,
понимают что это сущность ..
вот и добраться хотят ....

их бы сразу в ООП и сунуть
...
Рейтинг: 0 / 0
19.07.2007, 09:31
    #34668970
k_a_t_e
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
пришелмимо
у курсора есть данные и ключи
.
Мне не нужно выполнять поиск по ключам, данным.
Необходимо сделать следующее. Когда пользователь выбирает некоторую строчку в гриде, определить содержимое первой ячейки в гриде, то есть некоторое данное, с которым уже работать дальше.
P.S. запросы меняются, ибо произвожу сортировку данных.
...
Рейтинг: 0 / 0
19.07.2007, 09:45
    #34669009
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
пример рисуйте

я Вам вставлю в Ваш пример код
...
Рейтинг: 0 / 0
19.07.2007, 09:50
    #34669026
k_a_t_e
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
Собственно так заполняется грид.
Код: plaintext
1.
2.
3.
4.
5.
6.
thisform.Grid1.RecordSource =	'SElect Distinct abonent.clic_schet,abonent.cfio,ulitsa.ctext,abonent.ndom,'+;
								'abonent.nkvartira,domtip.ctext,normativ.ctext,isschet.ctext1 '+;
								"FROM abonent LEFT JOIN ulitsa ON abonent.nulitsaid = ulitsa.nulitsaid "+;
								"LEFT JOIN domtip ON abonent.ndomtip = domtip.ndomtip "+;
								"LEFT JOIN normativ ON abonent.ndomtip = normativ.ndomtip "+;
								"LEFT JOIN isschet ON abonent.n_nal_sch=isschet.isschet "+;
								"INTO CURSOR  me NOFILTER "
А теперь, зная номер выбранной строки, узнать abonent.cfio
P.S. прошу не ругаться , пишу на фоксе 2 недели и то не по собственному желанию (даже вопреки оному)
...
Рейтинг: 0 / 0
19.07.2007, 10:00
    #34669055
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
авторне по собственному желанию

нужен учитель,
иначе это превратится в кАшмар

лисичка не виновата

сейчас че-нить придумаем и покажем ООП в лисе
...
Рейтинг: 0 / 0
19.07.2007, 10:08
    #34669087
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
k_a_t_e... А теперь, зная номер выбранной строки, узнать abonent.cfio
... А номер строки откуда взялся?
...
Рейтинг: 0 / 0
19.07.2007, 10:34
    #34669189
Снова вопрос по гриду
Дело в том,что грид строится не на основе таблицы (тогда действительно все ясно), а на основе запроса. Как быть в таком случае?

А запрос не таблицу/курсор возвращает? Почему Вы решили, что здесь какой-то совершенно другой механизм?
...
Рейтинг: 0 / 0
19.07.2007, 10:59
    #34669304
k_a_t_e
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
авторА запрос не таблицу/курсор возвращает? Почему Вы решили, что здесь какой-то совершенно другой механизм?
Можно примерчик работы с курсором. Например как использовать recno()?
...
Рейтинг: 0 / 0
19.07.2007, 11:05
    #34669328
Снова вопрос по гриду
k_a_t_eСобственно так заполняется грид.
Код: plaintext
1.
2.
3.
4.
5.
6.
thisform.Grid1.RecordSource =	'SElect Distinct abonent.clic_schet,abonent.cfio,ulitsa.ctext,abonent.ndom,'+;
								'abonent.nkvartira,domtip.ctext,normativ.ctext,isschet.ctext1 '+;
								"FROM abonent LEFT JOIN ulitsa ON abonent.nulitsaid = ulitsa.nulitsaid "+;
								"LEFT JOIN domtip ON abonent.ndomtip = domtip.ndomtip "+;
								"LEFT JOIN normativ ON abonent.ndomtip = normativ.ndomtip "+;
								"LEFT JOIN isschet ON abonent.n_nal_sch=isschet.isschet "+;
								"INTO CURSOR  me NOFILTER "
А теперь, зная номер выбранной строки, узнать abonent.cfio
P.S. прошу не ругаться , пишу на фоксе 2 недели и то не по собственному желанию (даже вопреки оному)
Все достаточно просто. Надо указать точное количество столбцов (колонок) в Гриде (по умолчанию там стоит -1). Тогда к каждой колонке будут привязаны свои контролы (по умолчанию текст-боксы). После этого получить значение из ячейки можно так:
Код: plaintext
1.
2.
3.
* i - номер колонки в гриде... как его получить - другой вопрос
* номер активной строки отслеживается Гридом автоматически
messagebox(thisform.Grid1.Columns(i).text1.Text)
...
Рейтинг: 0 / 0
19.07.2007, 11:13
    #34669372
Снова вопрос по гриду
таблицы (тогда действительно все ясно),

Курсор - это точно такая же таблица. А с таблицей, судя по цитате, Вам все должно быть ясно. Какие еще примерчики? Что Вы блуждаете в даже не в трех, а вокруг одной сосны? Еще раз спрашиваю, почему Вы решили, что здесь используется какой-то особенный механизм? Зачем Вы сами себе проблему на ровном месте ищете?
...
Рейтинг: 0 / 0
19.07.2007, 11:17
    #34669391
k_a_t_e
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
Станислав С...кий, огромное спасибо, то что надо.
...
Рейтинг: 0 / 0
19.07.2007, 11:19
    #34669398
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
обратите внимание на пример

если ВЫ это поймете,то облегчите себе жизнь
...
Рейтинг: 0 / 0
19.07.2007, 11:20
    #34669405
Снова вопрос по гриду
Все достаточно просто. Надо указать точное количество столбцов (колонок) в Гриде (по умолчанию там стоит -1). Тогда к каждой колонке будут привязаны свои контролы (по умолчанию текст-боксы). После этого получить значение из ячейки можно так:

* i - номер колонки в гриде... как его получить - другой вопрос
* номер активной строки отслеживается Гридом автоматически
messagebox(thisform.Grid1.Columns(i).text1.Text)



И чем это лучше получения содержимого поля таблицы прямым обращением к полю? Если все равно содержимое текстбокса определяется содержимым поля? Просто почесать левое ухо левой рукой - это не круто, а вот правой, да еще через одно место - вот это круть немерянная, хоть и будет это тем же чесанием и того же левого уха.
...
Рейтинг: 0 / 0
19.07.2007, 11:22
    #34669413
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
k_a_t_eМожно примерчик работы с курсором. Например как использовать recno()?
Функция recno() возвращает номер текущей записи в таблице (курсоре), причем независимо от порядка сортировки при использовании индексов.

обычно используется для запоминания текущей записи, для последующего возврата на нее же:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
lnRe = recno()
... что-то расчитываем с перемещением по записям
skip
...
scan
endscan
... возвращаем указатель на ту же запись
go (lnRe)

Если под recno() подразумевалась фраза "... А теперь, зная номер выбранной строки ...", то recno() тут не надо, нужная запись и так текущая (при перемещении грид перемещает указатель в отображаемой таблице), достаточно просто взять значения полей:
Код: plaintext
MessageBox(me.cFio)
Именно me а не abonent , т.к. результат запроса курсор me
...
Рейтинг: 0 / 0
19.07.2007, 11:27
    #34669433
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
2 k_a_t_e

посмотрите пример, который я приложил
если возникнут вопросы, то я отвечу

Важно просто понять механизм и подход
...
Рейтинг: 0 / 0
19.07.2007, 11:28
    #34669441
Снова вопрос по гриду
проходящий. Все достаточно просто. Надо указать точное количество столбцов (колонок) в Гриде (по умолчанию там стоит -1). Тогда к каждой колонке будут привязаны свои контролы (по умолчанию текст-боксы). После этого получить значение из ячейки можно так:

* i - номер колонки в гриде... как его получить - другой вопрос
* номер активной строки отслеживается Гридом автоматически
messagebox(thisform.Grid1.Columns(i).text1.Text)



И чем это лучше получения содержимого поля таблицы прямым обращением к полю? Если все равно содержимое текстбокса определяется содержимым поля? Просто почесать левое ухо левой рукой - это не круто, а вот правой, да еще через одно место - вот это круть немерянная, хоть и будет это тем же чесанием и того же левого уха.
Я же не говорил, что это правильно... И что так надо всегда делать...(На самом деле, я всегда использую прямое обращение к полям таблицы...) Но как альтернативный вариант - с пивом потянет...
...
Рейтинг: 0 / 0
19.07.2007, 11:47
    #34669531
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос по гриду
подмените метод

получилась балалайка
с пом.кот, можно ссылаться
от объекта к источнику с извратом и возвратом

Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
lparameters tnId, tcFields
if empty(tcFields)
	this.cError = 'не хорошо! не передали список полей!'
	return .f.
endif
lcOldAlias = alias()
lnOldRec = recno()
if alias()<>this.Alias
	select (this.Alias)
endif
* если передали айди, то ищем по ключу,
* нет возвращаем значения той записи, на которой стоим
if !empty(tnId)
	* на взлете нужно индекс сотворить, но возиться в данном примере нет смысла
	locate for (this.KeyFieldList) = tnId
	if !found(this.Alias)
		this.cError = 'нет такого айди!'
		return .f.
	endif
endif
local luReturn
if at(',',tcFields)> 0 
	local lnFields, laFields( 1 )
	luReturn = createobject('empty')
	for lnFileds= 1  to alines( laFields, tcFields,',')
		*... нет времени - дошаманю
	endfor
else
	dimension luReturn( 1 )
	try
		scatter fields (tcFields) to luReturn   &&= curval(tcFields,this.Alias)
		luReturn = luReturn( 1 )
	catch
		luReturn = .f.
		this.cError = 'нет такого поля!'
	endtry
endif
if !empty(lcOldAlias) and alias()<>lcOldAlias
	select (lcOldAlias)
endif
if !empty(lnOldRec) and recno()<>lnOldRec
	locate record lnOldRec
endif
return luReturn
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Снова вопрос по гриду / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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