|
|
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
Иногда возникает необходимость отображать содержимое связанных по "SET RELATION TO ..." free-файлов не через Grid, а через Controll'ы, отображающие содержимое полей только ОДНОЙ (текущей) записи. При этом весьма удобно, если пользователь видит в одном из Controll'ов формы текущую позицию (в дочернем файле) в виде "n/k", где k - количество дочерних записей, соответствующих текущему значению связующего индекса главного dbf-файла, а n - порядковый номер ОЧЕРЕДНОЙ из этих "соответствующих" записей. Я обычно для этого "насильно" добавляю в каждый дочерний файл числовые поля N и K, значения которых перевычисляю каждый раз в методе INIT() запускаемой формы. Значения этих полей соответственно корректируются при вставке и удалении записей. Сами эти поля я связываю со свойствами ControlSource соответствующих "индикаторных" Controll'ов формы. Но, дело в том, что я и сам нахожу этот метод отслеживания текущей позиции в дочерних файлах несколько неуклюжим. Можно было бы попытаться обеспечить это полностью арифметическими методами отслеживания текущей позиции (без привлечения вспомогательных полей N и K), но при этом трудно обеспечить соответствие отображаемых значений при добавлении и удалении записей, а тем более - при непредвиденных сбоях в работе системы, не говоря уже о случаях с БОЛЬШИМ количеством записей в отображаемых файлах. Может, кто-нибудь сталкивался с подобной проблемой? Как вы ее решаете? Подкиньте идейку, плиз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 23:06 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
Ничего не понятно. Пример приведи Ты записи в табличной части нумеруешь по порядку при вводе? А зачем это надо? Никогда над этим не заморачивался, при выводе в отчете проставил 1,2,3 ... и достаточно, а зачем эту нумерацию хранить? А если хранишь, то зачем в Init() каждый раз перепроверять и пересчитывать? Опять же, если можно расчитать, то зачем хранить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2007, 11:20 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
Вот прилагаю пример в архиве. Разархивировать надо в C:\111\, чтобы рисунки на кнопках отображались (издержка демо, простите). То, о чем я спрашиваю, отображается в оранжевых TextBox'ах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2007, 14:34 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
Сорри, что не совсем в тему (идею так и не "прохавал"), но зачем держать в таблице поле "DR"? Ну и "memo" не совсем хорошо для ФИО... P.S. 2881006383 - это на самом деле не "Сидоров", а "СидоровА"! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2007, 18:33 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
To Redrik: Да будет вам! Сказано же - это только вырезка для демонстрации, и не более того. Поля, их форматы и содержимое сформированы только для примера. Я здесь на форуме уже приводил под членским ником свои функции преобразования кода в дату рождения, так что - плавали, знаем :)) И изобличение пола по коду там тоже обсуждалось. Ваш ответ, действительно не в тему. А если не козырять НЕтематической осведомленностью, то ответ требуется примерно следующий: нужна идея для более "уклюжего" механизма отслеживания и отображения текущего положения в дочерней таблице, чем через ее вспомогательные поля N и K. В контейнере баз данных это можно было бы возложить на хранимые процедуры, но в данном случае речь идет именно о свободных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2007, 19:17 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
RELATION - это слабо-управляемая конструкция. Как вариант, сделай параметризированное View или CursorAdapter. Т.е. выборку всех дочерних записей для одной записи главной таблицы. Тогда можно использовать Recno() и Reccount() из этой выборки для отображения n/k. Хотя, кончено, даже такое решение не универсальное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2007, 11:15 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
Не посмотрел. CursorAdapter появился только в VFP8. Значит, остается только View или прямая выборка по Select-SQL. Есть правда еще один вариант. Нечто среднее. Оставить RELATION, но и сделать дополнительную выборку. Только ключевого поля. Т.е. все те же Recno() и Reccount(), но у вспомогательной выборки. Связь по значению ключевого поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2007, 11:18 |
|
||
|
Вот еще вопрос ... Подкиньте идейку !
|
|||
|---|---|---|---|
|
#18+
Да я и сам понимаю, что универсальности тут быть не может. Тем более, представлениями не оперировал - как-то не сложилось у меня с контейнерами БД, предпочитаю free-tables. Видать, меня dbc-шками в детстве сильно напугали :)) А вот насчет частных выборок для уникальных значений ключевых полей - спасибо за подсказанное направление. Буду мыслить туда, кажется там есть определенные перспективы. Конечно, при большом числе записей в таблицах такой метод не подойдет, но у меня как раз случай с небольшим числом записей (до 300). Еще раз благодарю. Думаю, можно тему считать закрытой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2007, 22:56 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=198&tid=1589315]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 186ms |
| total: | 300ms |

| 0 / 0 |
