powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / грид
6 сообщений из 6, страница 1 из 1
грид
    #32308068
Новичок_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста
Таблица заказа Код, дата, Какой, итд , КОД ЕД. ИЗМЕРЕНИЯ
Таблица едениц измерения(справочник)-поля код ед.измерения, Назввание ед. измерения
один к многим(код-код-интегер), как понимаете.
В таблице по всем правилам реляционной модели храню код ед. измерения
Имеет место быть каскадный триггер упдейта, рестрикт удаления

Есть грид, на котором отражаются пункты заказа
КОД, ДАТА, итд и КОД ЕДЕНИЦЫ ИЗМЕРЕНИЯ
1)Хочу видеть не код еденицы измерения, а
название еденицы измерения в гриде
но только я пытаюсь в колумне прописать источник записи не код из таблицы заказов, а название из справочника+прописываю индекс----
отражается первая запись из справочника, а не согласно кодов
как быть
не хочется прописывать все ручками, помому что в заказе таких полей будет
несколько , как это сделать в дизайнере, какого свойства не вижу
таблицы в окружении формы
полько не посылайте прописать ручками отношения, открыть таблицы итд

2)и кстати в некоторых прогах видел хранять и код еденицы измерения,
и название вносят в таблицу заказов
а это то зачем. например измениться "кг" на "килограмм"
и чего будет?
или каждый раз при открытиии проверять, менять-стоит ли
благодарствую.....ппрошу внимательно ответить, сам долго бьюсь, помочь, прочитать некому, негде.
...
Рейтинг: 0 / 0
грид
    #32308110
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1)Хочу видеть не код еденицы измерения, а
название еденицы измерения в гриде


Пример:
my_alias - твоя таблица с кодом ед.изм.
spisediz - список ед.изм
pole5 = 'iif(seek(my_alias.kodediz,"spisediz","kodediz"),spisediz.naimr,"")'
thisform.Form1.grid1.column5.controlsource = pole5
...
Рейтинг: 0 / 0
грид
    #32308114
Новичек_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ
Как примерно отобразить, я понял, но кривовато как то...
как сделать проше
А вообще вопрос скорее был про структуру построения
Извините за не очень корректную постановку вопроса

Вопрос скорее о правильности структуры построения
Дано 2 вварианта, какой правильный
1)сделать
а)Таблица заказа Код, дата, Какой, итд , КОД ЕД. ИЗМЕРЕНИЯ
б)Таблица едениц измерения(справочник)-поля код ед.измерения, Назввание ед. измерения
один к многим(код-код-интегер), как понимаете.
2)а)Таблица заказа Код, дата, Какой, итд , ЕД. ИЗМЕРЕНИЯ(С)
Сделать индекс по полю ЕД. ИЗМЕРЕНИЯ(С) регуляр
б)Таблица едениц измерения(справочник)-поля код ед.измерения, Назввание ед. измерения(С)
Сделать индекс по полю Назввание ед. измерения (кандидат)
Создать отношение один к многим
попробовал так и так, заведенные триггеры удаления работают-не дают удалить из справочника запись если в ЗАКАЗАХ есть связанная запись
триггер обновления тоже работает-если изменить в справочнике
"кг" на "килограмм"(например), каскадно меняется в таблице заказов

второй вариант мне на данный момент более предпочтителен, потому что проще будет организовывать грид с заказами(он будет на основании только одной таблицы)-все вопросы отпадают.
1)Вообще правильно ли это?
2)Наверно не правильно и чем второй вариант мне грозит в будущем(подводных камней пока не вижу)
Благодарствую
...
Рейтинг: 0 / 0
грид
    #32309197
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по второму варианту и поле код_Ед.изм. в таблице единиц измерения становится вобщем-то не нужным. А еще можно так же поступить со справочником товаров, потом со справочником клиентов и.т.д. :)

Чтобы из нескольких нормализованных таблиц получить 1 удобную для просмотра пользователемтаблицу используйте View, Select * from или Set relation.
> отражается первая запись из справочника, а не согласно кодов
стало быть НЕ установили правильно отношения между таблицами в dataenviroment формы, поэтому и не соответствует наименование единицы коду в таблице zakaz. А должно быть примерно так:
.Relation1.Parentalias='zakaz'
.Relation1.Childalias='sp_edizm'
.Relation1.RelationalExpr='kod_edizm' &&поле в таблице zakaz
.Relation1.childorder='kod' &&индекс по коду в таблице sp_edizm
> подводных камней пока не вижу
Использование в таблице Zakaz вместо кодов самих длинных наименований. приведет
1) к "распуханию" самой таблицы, "распуханию" индекса по данному полю и к соответсвенно к снижению прозводительности;
2)для изменения наименования единицы вместо того чтобы изменить 1 запись в справочнике sp_edizm, потребуется изменить множество записей в таблице zakaz и еще куче таблиц, где фигурирует ссылка на ед.изм. И может оказаться, что в этот момент эти таблицы или хотя бы какая-нибудь одна нужная запись в них заблокированы другими пользователями. То что это делает триггер, не меняет сути.
...
Рейтинг: 0 / 0
грид
    #32309824
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edizm (kod, name) - справочник ед. изм.
zakaz (kod, data, kod_ed_izm) - таблица заказов
Для edizm создаешь индекс по коду (если он есть то просто устанавливаешь)

Код: plaintext
1.
2.
3.
4.
5.
sele edizm
set orde to kod
sele zakaz
set rela to kod_ed_izm into edizm
thisform.grid.recordsource =  "zakaz" 
thisform.grid.columns(i).controlsource =  "edizm.name" 

здесь i - номер столбца, в котором стоит zakaz.kod_ed_izm

В дизайнере:
1. В DataEnviroment устанавливаешь связь
2. Указываешь Grid.RecordSource
3. Указываешь Grid.Columns.ControlSource как в примере выше (можно просто выбрать из списка)
...
Рейтинг: 0 / 0
грид
    #32311018
Новичек_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, подсказали новичку
Будем делать по-людски
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / грид
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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