powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вот еще вопрос ... Подкиньте идейку !
8 сообщений из 8, страница 1 из 1
Вот еще вопрос ... Подкиньте идейку !
    #34537068
VFP7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иногда возникает необходимость отображать содержимое связанных по "SET RELATION TO ..." free-файлов не через Grid, а через Controll'ы, отображающие содержимое полей только ОДНОЙ (текущей) записи. При этом весьма удобно, если пользователь видит в одном из Controll'ов формы текущую позицию (в дочернем файле) в виде "n/k", где k - количество дочерних записей, соответствующих текущему значению связующего индекса главного dbf-файла, а n - порядковый номер ОЧЕРЕДНОЙ из этих "соответствующих" записей. Я обычно для этого "насильно" добавляю в каждый дочерний файл числовые поля N и K, значения которых перевычисляю каждый раз в методе INIT() запускаемой формы. Значения этих полей соответственно корректируются при вставке и удалении записей. Сами эти поля я связываю со свойствами ControlSource соответствующих "индикаторных" Controll'ов формы.
Но, дело в том, что я и сам нахожу этот метод отслеживания текущей позиции в дочерних файлах несколько неуклюжим. Можно было бы попытаться обеспечить это полностью арифметическими методами отслеживания текущей позиции (без привлечения вспомогательных полей N и K), но при этом трудно обеспечить соответствие отображаемых значений при добавлении и удалении записей, а тем более - при непредвиденных сбоях в работе системы, не говоря уже о случаях с БОЛЬШИМ количеством записей в отображаемых файлах.
Может, кто-нибудь сталкивался с подобной проблемой? Как вы ее решаете? Подкиньте идейку, плиз :)
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34537299
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понятно. Пример приведи

Ты записи в табличной части нумеруешь по порядку при вводе? А зачем это надо? Никогда над этим не заморачивался, при выводе в отчете проставил 1,2,3 ... и достаточно, а зачем эту нумерацию хранить?
А если хранишь, то зачем в Init() каждый раз перепроверять и пересчитывать?
Опять же, если можно расчитать, то зачем хранить?
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34537494
VFP7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот прилагаю пример в архиве. Разархивировать надо в C:\111\, чтобы рисунки на кнопках отображались (издержка демо, простите). То, о чем я спрашиваю, отображается в оранжевых TextBox'ах.
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34537634
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, что не совсем в тему (идею так и не "прохавал"), но зачем держать в таблице поле "DR"?
Ну и "memo" не совсем хорошо для ФИО...
P.S. 2881006383 - это на самом деле не "Сидоров", а "СидоровА"! ;-)
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34537656
VFP7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Redrik:
Да будет вам! Сказано же - это только вырезка для демонстрации, и не более того. Поля, их форматы и содержимое сформированы только для примера. Я здесь на форуме уже приводил под членским ником свои функции преобразования кода в дату рождения, так что - плавали, знаем :)) И изобличение пола по коду там тоже обсуждалось. Ваш ответ, действительно не в тему.
А если не козырять НЕтематической осведомленностью, то ответ требуется примерно следующий:
нужна идея для более "уклюжего" механизма отслеживания и отображения текущего положения в дочерней таблице, чем через ее вспомогательные поля N и K. В контейнере баз данных это можно было бы возложить на хранимые процедуры, но в данном случае речь идет именно о свободных таблицах.
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34537970
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RELATION - это слабо-управляемая конструкция.

Как вариант, сделай параметризированное View или CursorAdapter. Т.е. выборку всех дочерних записей для одной записи главной таблицы. Тогда можно использовать Recno() и Reccount() из этой выборки для отображения n/k. Хотя, кончено, даже такое решение не универсальное...
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34537971
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не посмотрел. CursorAdapter появился только в VFP8. Значит, остается только View или прямая выборка по Select-SQL.

Есть правда еще один вариант. Нечто среднее. Оставить RELATION, но и сделать дополнительную выборку. Только ключевого поля. Т.е. все те же Recno() и Reccount(), но у вспомогательной выборки. Связь по значению ключевого поля.
...
Рейтинг: 0 / 0
Вот еще вопрос ... Подкиньте идейку !
    #34538477
VFP7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я и сам понимаю, что универсальности тут быть не может. Тем более, представлениями не оперировал - как-то не сложилось у меня с контейнерами БД, предпочитаю free-tables. Видать, меня dbc-шками в детстве сильно напугали :))
А вот насчет частных выборок для уникальных значений ключевых полей - спасибо за подсказанное направление. Буду мыслить туда, кажется там есть определенные перспективы. Конечно, при большом числе записей в таблицах такой метод не подойдет, но у меня как раз случай с небольшим числом записей (до 300).
Еще раз благодарю. Думаю, можно тему считать закрытой.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вот еще вопрос ... Подкиньте идейку !
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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