powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / сортировка таблиц в грид
12 сообщений из 12, страница 1 из 1
сортировка таблиц в грид
    #39442628
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Имеется три связанных таблицы Тип - Группа - Наименование
Отображаются и редактируются на форме с тремя гридами.

Если делать источниками гридов непосредственно таблицы и их там редактировать, то никаких вопросов не возникает, кроме одного - как их можно сортировать, например, по алфавиту ?

А если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй?

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

DmitryKnЕсли делать источниками гридов непосредственно таблицы и их там редактировать, то никаких вопросов не возникает, кроме одного - как их можно сортировать, например, по алфавиту ?

SET ORDER TO FieldXX
например при клике на Header`ы грида. Индекс, естественно должен быть до этого создан.

[quot DmitryKn]
А если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй?[quot]
тут мне непонятно ... вы имеету ввиду, что напр. в тбл. Группа есть поле НазвГруппы, которое джойном включено во вьюху Наименование, вы его [Группа.НазвГруппы] изменили и хотите это увидеть в гриде на вью Наименование?
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39442680
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergej_SВсе гуру в субботу отдыхают, отвечу я, хоть в последнее время практикую мало, если что - пусть поправят потом

Гуру всегда поступают мудро
Sergej_SDmitryKnЕсли делать источниками гридов непосредственно таблицы и их там редактировать, то никаких вопросов не возникает, кроме одного - как их можно сортировать, например, по алфавиту ?

SET ORDER TO FieldXX
например при клике на Header`ы грида. Индекс, естественно должен быть до этого создан.


Что-то совсем поплыл я с этими индексами

в DubleClick хедера пишу
select table2
index on field2 tag fld2
set order to field2
go top

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

Если вместо таблиц подкладывать view, то как потом сохранять изменения ? Эти три связанных таблицы - суть справочники, из которых потом подтягиваются данные в документ по ключам. Если переписывать каждый раз таблицы поверху, то вероятность того, что все поплывет, стремится к 1. А других способов сохранить изменения из view в таблицу я не знаю.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39442681
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitryKn,

Я имею ввиду под сохранением изменений при использовании view то, что обычно пишется в метод save формы:

select table1
scan
select viewtabl2
replace ...
blabla..
scan viewtabl3

и все такое прочее. Очень коряво для моей формы такое сохранение, поэтому view использовать и нежелательно.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39442689
Sergej_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKnПри попытке создать индекс требует открыть монопольно

це правда. Я уже давненько напрямую таблицы в гридах как источник не использую, именно поэтому. Но в доисторические времена - Хедеры колонок по которым можно сортировать (соотв-но индексы уже созданы при разработке БД) делались жирным шрифтом и юзер здал, что на него можно ткнуть для сортировки.

Лет 10 назад перешел на курсорадаптеры, даже при работе с родными .dbf.

DmitryKnЕсли вместо таблиц подкладывать view, то как потом сохранять изменения ?

Если мне склероз не изменяет, фоксовые вьюхи сохраняют данные в таблицы командой Tableupdate.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39442734
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKnА если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй?
Непонятно зачем в третьей сохранять если были изменения во второй? Если это не документ где при изменении табличной части меняется сумма документа. Это решается транзакцией, в которой сохраняется табличная часть и новая сумма в заголовок.

В остальном view или курсор-адаптер на ту таблицу которую меняешь.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39442788
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TDmitryKnА если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй?
Непонятно зачем в третьей сохранять если были изменения во второй? Если это не документ где при изменении табличной части меняется сумма документа. Это решается транзакцией, в которой сохраняется табличная часть и новая сумма в заголовок.

В остальном view или курсор-адаптер на ту таблицу которую меняешь.

Я, как всегда, очень косноязычно свои проблемы излагаю, сорри.

Все таблицы связаны между собой, справочник что-то вроде "Номенклатура", Тип - Группа - Название, если есть изменения в первой, то обязательно будет и в остальных, если во второй, то будет и в третьей. Поля в таблицах, условно, в первой - ityp_id, ctype_name, второй - igr_id, ityp_id, cgr_name, третьей - igr_id, iname_id, cname. Обычный номенклатурный справочник. Заполняется по трем таблицам с отношениями без вопросов, только сортировать не могу, а вторую таблицу очень надо - многовато записей и бывает, дублируют - не по порядку, поэтому и не видно.

При использовании вью, перенос данных из вью в таблицу я представляю себе, как последовательный перебор записей с помощью scan и непосредственно запись с помощью replace, так вроде обычно делают.
В таком случае я опасаюсь, что, например, если будет удалена при редактировании строка во вью, такое редко, но бывает, скажем, во второй таблице, то при сохранении из вью в таблицы изменится соответствие в третьей - iname_id и cname.

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

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

Почитай книжку какую-нибудь на эту тему.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39442931
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TВью давно не использовал, только курсорадаптеры. Там в параметрах настраивается какую таблицу и какие поля можно изменять. С помощью визардов это делается достаточно просто. Во вью вроде точно так же. Т.е. если ты сам предварительно не разрешишь сохранение изменений, то в БД изменения вообще не попадут.
Даже если используется несколько таблиц, то изменения будут только в той, в которой разрешишь.

Почитай книжку какую-нибудь на эту тему.

Какая разница, вью или курсорадаптер ? то есть, наверное, какая разница, курсорадаптеры не знаю.

Тут смысл в чем - таблицы связаны, и записи таблицы имеют поле id, которое не редактируется, автоинкремент. Если мы удалим строку прямо в таблице - то в поле id просто выпадет строка, id пойдут, например, 1,2,3,5,6...и т.д. и им будут соответствовать , например, cname, каждому id как и было до удаления.

А если внесем изменения, удалим строку, во вью или курсорадаптере и потом перепишем в таблицу, то в поле id записи так и пойдут, как были - 1,2,3,4,5, при этом удалится последняя запись, а для id 4 и 5 будут соответствовать уже другие значения cname. Ну и таблица связана - т.е. поедет все в следующей, подчиненной таблице.

(( Какая-то хрень, простой справочник и так завис.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39443090
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitryKn,

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

Таблицы пришлось отвязать друг от друга, синхронизировать с помощью set filter to

Ну, может не изящно, но вроде работает.

Если есть другие идеи, как решить - буду очень рад узнать.
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39444143
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вью - это запрос.
Не запрашивай все.
Схема такая
У тебя 3 таблицы. Связанные. Т1->T2->T3
Получаешь данные из Т1
При установке на любую запись (в AfterRowColChange) делаешь запрос к T2 c where idT1=t1.id
Аналогично с Т3
Никаких релэйшн и фильтров
...
Рейтинг: 0 / 0
сортировка таблиц в грид
    #39445023
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor,

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


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