|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
Добрый день, Имеется три связанных таблицы Тип - Группа - Наименование Отображаются и редактируются на форме с тремя гридами. Если делать источниками гридов непосредственно таблицы и их там редактировать, то никаких вопросов не возникает, кроме одного - как их можно сортировать, например, по алфавиту ? А если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй? Подскажите, плиз, как лучше и правильней организовать сортировку в таком случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 10:27 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
Все гуру в субботу отдыхают, отвечу я, хоть в последнее время практикую мало, если что - пусть поправят потом DmitryKnЕсли делать источниками гридов непосредственно таблицы и их там редактировать, то никаких вопросов не возникает, кроме одного - как их можно сортировать, например, по алфавиту ? SET ORDER TO FieldXX например при клике на Header`ы грида. Индекс, естественно должен быть до этого создан. [quot DmitryKn] А если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй?[quot] тут мне непонятно ... вы имеету ввиду, что напр. в тбл. Группа есть поле НазвГруппы, которое джойном включено во вьюху Наименование, вы его [Группа.НазвГруппы] изменили и хотите это увидеть в гриде на вью Наименование? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 14:02 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
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 в таблицу я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 14:31 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
DmitryKn, Я имею ввиду под сохранением изменений при использовании view то, что обычно пишется в метод save формы: select table1 scan select viewtabl2 replace ... blabla.. scan viewtabl3 и все такое прочее. Очень коряво для моей формы такое сохранение, поэтому view использовать и нежелательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 14:37 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
DmitryKnПри попытке создать индекс требует открыть монопольно це правда. Я уже давненько напрямую таблицы в гридах как источник не использую, именно поэтому. Но в доисторические времена - Хедеры колонок по которым можно сортировать (соотв-но индексы уже созданы при разработке БД) делались жирным шрифтом и юзер здал, что на него можно ткнуть для сортировки. Лет 10 назад перешел на курсорадаптеры, даже при работе с родными .dbf. DmitryKnЕсли вместо таблиц подкладывать view, то как потом сохранять изменения ? Если мне склероз не изменяет, фоксовые вьюхи сохраняют данные в таблицы командой Tableupdate. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 15:01 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
DmitryKnА если использовать view, то совсем непонятно, как сохранить изменения в третьей таблице, если, например, были изменения во второй? Непонятно зачем в третьей сохранять если были изменения во второй? Если это не документ где при изменении табличной части меняется сумма документа. Это решается транзакцией, в которой сохраняется табличная часть и новая сумма в заголовок. В остальном view или курсор-адаптер на ту таблицу которую меняешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 19:57 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
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 грида, внести изменения прямо в таблицы, а при сохранении вернуть вью обратно? Насколько это хреновая идея? Руками еще не пробовал, как получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2017, 23:01 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
Вью давно не использовал, только курсорадаптеры. Там в параметрах настраивается какую таблицу и какие поля можно изменять. С помощью визардов это делается достаточно просто. Во вью вроде точно так же. Т.е. если ты сам предварительно не разрешишь сохранение изменений, то в БД изменения вообще не попадут. Даже если используется несколько таблиц, то изменения будут только в той, в которой разрешишь. Почитай книжку какую-нибудь на эту тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2017, 13:50 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
Dima TВью давно не использовал, только курсорадаптеры. Там в параметрах настраивается какую таблицу и какие поля можно изменять. С помощью визардов это делается достаточно просто. Во вью вроде точно так же. Т.е. если ты сам предварительно не разрешишь сохранение изменений, то в БД изменения вообще не попадут. Даже если используется несколько таблиц, то изменения будут только в той, в которой разрешишь. Почитай книжку какую-нибудь на эту тему. Какая разница, вью или курсорадаптер ? то есть, наверное, какая разница, курсорадаптеры не знаю. Тут смысл в чем - таблицы связаны, и записи таблицы имеют поле id, которое не редактируется, автоинкремент. Если мы удалим строку прямо в таблице - то в поле id просто выпадет строка, id пойдут, например, 1,2,3,5,6...и т.д. и им будут соответствовать , например, cname, каждому id как и было до удаления. А если внесем изменения, удалим строку, во вью или курсорадаптере и потом перепишем в таблицу, то в поле id записи так и пойдут, как были - 1,2,3,4,5, при этом удалится последняя запись, а для id 4 и 5 будут соответствовать уже другие значения cname. Ну и таблица связана - т.е. поедет все в следующей, подчиненной таблице. (( Какая-то хрень, простой справочник и так завис. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2017, 18:42 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
DmitryKn, Пока решил проблему так - при просмотре гридов на форме подкладываю вью, сортирую, делаю поиск и т.п. При редактировании меняю источники гридов на таблицы, вношу изменения, сохраняю, и снова меняю источник на вью. Таблицы пришлось отвязать друг от друга, синхронизировать с помощью set filter to Ну, может не изящно, но вроде работает. Если есть другие идеи, как решить - буду очень рад узнать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2017, 10:26 |
|
сортировка таблиц в грид
|
|||
---|---|---|---|
#18+
Вью - это запрос. Не запрашивай все. Схема такая У тебя 3 таблицы. Связанные. Т1->T2->T3 Получаешь данные из Т1 При установке на любую запись (в AfterRowColChange) делаешь запрос к T2 c where idT1=t1.id Аналогично с Т3 Никаких релэйшн и фильтров ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2017, 15:21 |
|
|
start [/forum/topic.php?fid=41&fpage=14&tid=1581955]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 162ms |
0 / 0 |