Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Два ГРИДА / 15 сообщений из 15, страница 1 из 1
20.12.2005, 17:13
    #33447308
Krushinskaya Olga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Помогите, пожалуйтста!
Весь день конопатю сайт, и проект.
У меня есть 2 таблицы ТАБ1 и ТАБ2 основных, связанные по коду.Причем ТАБ1 еще связана со справочниками СПР1, СПР2.
Если я делаю через Enviroment связываю их в ручную, а в форме делаю одному гриду источник-ТАБ1, а второму гриду ТАБ2, то все работает хорошо. При перемещении по первому гриду, второй грид меняет свои значения. Все было бы классно, но мне захотелось поиск сделать, чтобы при нажатии на заголовок грида, сортировалось по любым полям. И тут проблема.
1. Сортировка производится только по возрастанию. Это я меняю thisform.dataenvironment.cursor1.order="kod" Как сделать, чтобы было по убыванию?
2. К тому же некоторые поля в ТАБ1, связанны со справочниками, и соответственно в гриде1 выводятся значения со СПР1, как тогда в этом случае делать сортировку, ведь ТАБ1 в thisform.dataenvironment.cursor1, а СПР1 в thisform.dataenvironment.cursor3

Или все придется делать вручную?
Создавать курсор, в котором связываю ТАБ1 со СПР1, СПР2, СПР3 и кидать его в грид1 и создавать курсор 2 и кидать его в грид2,
...
Рейтинг: 0 / 0
20.12.2005, 17:27
    #33447359
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
По поводу сортировки по щелчку на колонке (и по возрастанию и по убыванию) посмотрите тут http://www.caws.atnet.ru/vfox/grid.html. Может поможет.
С уважением, Алексей
...
Рейтинг: 0 / 0
20.12.2005, 17:32
    #33447381
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Krushinskaya Olga...
1. Сортировка производится только по возрастанию. Это я меняю thisform.dataenvironment.cursor1.order="kod" Как сделать, чтобы было по убыванию?
Команда:
Код: plaintext
1.
2.
INDEX ON eExpression TO IDXFileName | TAG TagName 
   [ COLLATE cCollateSequence ] [OF CDXFileName] [FOR lExpression]
   [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]
ASCENDING - задает возрастающий порядок
DESCENDING - задает убывающий порядок
Krushinskaya Olga...
2. К тому же некоторые поля в ТАБ1, связанны со справочниками, и соответственно в гриде1 выводятся значения со СПР1, как тогда в этом случае делать сортировку, ведь ТАБ1 в thisform.dataenvironment.cursor1, а СПР1 в thisform.dataenvironment.cursor3
Или все придется делать вручную?
Создавать курсор, в котором связываю ТАБ1 со СПР1, СПР2, СПР3 и кидать его в грид1 и создавать курсор 2 и кидать его в грид2,
Лично я, сделал бы Local View параметризированный при необходимости.
...
Рейтинг: 0 / 0
20.12.2005, 17:51
    #33447442
Krushinskaya Olga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Хорошо, если делать через View
Как грамотнее? Создать View отдельно для одного грида и для другого. А потом в DE формы эти Viewшки связать, и выводить в гриды?
Или я вообще не так мыслю? Или надо их программно создавать при загрузке формы, и создавать грид в ручную, прописывая ему источники из Viewшек?
...
Рейтинг: 0 / 0
20.12.2005, 18:00
    #33447471
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
А что такое Local View и с чем его едят?
...
Рейтинг: 0 / 0
20.12.2005, 19:42
    #33447688
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Krushinskaya OlgaХорошо, если делать через View
Как грамотнее? Создать View отдельно для одного грида и для другого. А потом в DE формы эти Viewшки связать, и выводить в гриды?
Или я вообще не так мыслю? Или надо их программно создавать при загрузке формы, и создавать грид в ручную, прописывая ему источники из Viewшек?У каждого наверное свой подход. Как бы я сделал:
1. Конечно создал Local View из ТАБ1 связь с СПР1, связь с СПР2, связь с СПР3.
2. Создал параметризированный Local View для Grid2 из ТАБ2 с параметром. Ведь как-то ТАБ2 связывается с ТАБ1. Т.е. в этом Local View отображается только часть информации соответствующая только конкретной записи из ТАБ1.
3. При движении по записям по Grid1 т.е. в методе Grid1.AfterRowColChange определяется параметр или параметры из LocalView1 для составления LocalView2 и используя функцию REQUERY("LocalView2") переопределял источник данных для Grid2 и перепоказывал его.
Примерно так я делаю.
НедоходящийА что такое Local View и с чем его едят?Смотри Help по CREATE SQL VIEW:
Код: plaintext
1.
2.
CREATE [SQL] VIEW [ViewName ] [REMOTE]   
[CONNECTION ConnectionName [SHARE] | CONNECTION DataSourceName]
   [AS SQLSELECTStatement]
...
Рейтинг: 0 / 0
20.12.2005, 20:12
    #33447734
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Для справки:

Порядок сортировки в существующем индексе можно менять динамически через команду

Код: plaintext
1.
2.
3.
4.
SET ORDER TO
  [nIndexNumber | IDXIndexFileName | [TAG] TagName [OF CDXFileName] 
  [IN nWorkArea | cTableAlias] 
  [ASCENDING | DESCENDING]]

Т.е., если есть индекс по полю kod, то настроить его в режиме по убыванию можно так:

Код: plaintext
SET ORDER TO TAG kod IN MyTab DESCENDING

Пересоздавать индекс для этого не нужно.
...
Рейтинг: 0 / 0
20.12.2005, 22:24
    #33447876
Krushinskaya Olga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Владимир СА, вроде понятно, спасибо, завтра попробую
...
Рейтинг: 0 / 0
20.12.2005, 22:30
    #33447882
Krushinskaya Olga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
ВладимирМ!
SET ORDER TO ... - хорошо если одна таблица, а если в ТАБ есть поле код_спр, по которому вообще не надо сортировать, а надо сортировать по полю имя_спр, которое находитя в таблице СПР, и связано по этому полю код_спр. Тогда действительно без запросов не обойтись.

а еще я ни раз читала, пишут просто SET ORDER TO без указания индекса, тогда что происходит? Индекс обнуляется?
...
Рейтинг: 0 / 0
21.12.2005, 00:34
    #33447967
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Krushinskaya Olgaа еще я ни раз читала, пишут просто SET ORDER TO без указания индекса, тогда что происходит? Индекс обнуляется?
В FoxPro существует такое понятие "главный индекс". Это индекс, под управлением которого таблица находится в данный момент. Т.е. этот индекс определяет логический порядок следования записей в данный момент .

Оним из способов указания главного индекса и является команда SET ORDER.

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

Наглядно это видно в BROWSE-окне. Т.е. просто попробуй давать в командном окне команды вроде

Код: plaintext
1.
2.
3.
4.
5.
6.
SET ORDER TO kod
BROWSE
SET ORDER TO kod DESCENDING
BROWSE
SET ORDER TO
BROWSE
...
Рейтинг: 0 / 0
21.12.2005, 13:04
    #33449057
Krushinskaya Olga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
ВладимирМ
Вчера наткнулась на один Ваш примерчик. (К сожалению, потеряла ссылку) Хотела спросить: Вот в форме есть метод nrecno_assign. Когда он срабатывает или запускается?
...
Рейтинг: 0 / 0
21.12.2005, 13:10
    #33449095
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
>Вот в форме есть метод nrecno_assign. Когда он срабатывает или запускается?
Когда изменяется значение свойства nrecno
...
Рейтинг: 0 / 0
21.12.2005, 13:56
    #33449270
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Visual FoxPro executes code in an Access method when querying the value of a property, typically by using the property in an object reference, storing the property value to a variable, or displaying the property value with the question mark (?) command.

Visual FoxPro executes code in an Assign method when you attempt to change the property value, typically by using the STORE command or = operator to assign a new value to the property.
...
Рейтинг: 0 / 0
21.12.2005, 14:20
    #33449386
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
Krushinskaya OlgaВладимирМ
Вчера наткнулась на один Ваш примерчик. (К сожалению, потеряла ссылку) Хотела спросить: Вот в форме есть метод nrecno_assign. Когда он срабатывает или запускается?
Если смотреть пример, то это событие срабатывает когда дается команда вроде

ThisForm.nRecno=recno("b_l_chan")

Т.е. когда происходит попытка программного изменения значения свойства nRecno.

Вообще-то, можно же было запустить пример в отладчике и посмотреть, что именно вызывает срабатывание данного события.
...
Рейтинг: 0 / 0
21.12.2005, 15:05
    #33449563
Krushinskaya Olga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два ГРИДА
ВладимирМ, да-да я разобралась. Спасибо.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Два ГРИДА / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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