Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизПроблема с Lookup-полем Найти похожие ветки
← →
bss (2007-04-17 13:30) [0]Я использую 3 таблицы: Сотрудники (Persons), Организации (Organizations), Подразделения (Departments)
Таблица Departments имеет ссылку на организацию (Organization_id)
Таблица Persons имеет ссылки Organization_id т Department_id.
Для показа в DBGrid делаю 2 lookup-поля - OrganizationName (связь между Persons и Organizations по Organization_ID) и DepartmentName (связь между Persons и Departments по Department_ID). При загрузке данные в гриде отображаются нормально, но при попытке отсортировать данные в столбцах или при переходе между записями в столбце DepartmentName начинают появляться какие-то "левые" значения. При закрытии окна и загрузке его заново все опять отображается нормально.
В чем может быть проблема?
← →
Sergey13 © (2007-04-17 13:33) [1]> [0] bss (17.04.07 13:30)
> Таблица Persons имеет ссылки Organization_id т Department_id.
Зачем Organization_id если есть Department_id?
← →
bss (2007-04-17 13:35) [2]Не для всех людей заносится информация о подразделении, например, для командировочных указывается только организация
← →
Sergey13 © (2007-04-17 13:42) [3]> [2] bss (17.04.07 13:35)
А как относятся командировочные к сотрудникам? Что за предметная область?
> но при попытке отсортировать данные в столбцах
Каким образом?
> в столбце DepartmentName начинают появляться какие-то "левые" значения
Набор данных Department должен быть открыт и на него не должны накладываться никакие фильтры.
← →
bss (2007-04-17 13:47) [4]На самом деле не сотрудники, а посетители в организацию, которым надо выписывать пропуска, а это могут быть как и постоянные сотрудники, так и временные или командировочные.
Сортировка по нажатию на заголовки столбцов. Считывается имя поля и добавляется в запрос ORDER BY <имя поля>
← →
Sergey13 © (2007-04-17 14:01) [5]> [4] bss (17.04.07 13:47)
> и добавляется в запрос ORDER BY <имя поля>
И какое поле при сортировке дает такой результат? Любое?
← →
bss (2007-04-17 14:04) [6]На самом деле "левые" значения в столбце DepartmentName появляются при любом действии с запросом (при попытке редактирвоать данные, при открытии его заново)
← →
Sergey13 © (2007-04-17 14:26) [7]> [6] bss (17.04.07 14:04)
> На самом деле "левые" значения в столбце DepartmentName
А что значит "левые"? Должна быть "бухглтерия", а появляется "дирекция юмористических программ центрального телевидения"? Или что?
← →
bss (2007-04-17 14:29) [8]похоже, что первые попавшиеся значения из справочника подразделений
← →
Sergey13 © (2007-04-17 14:37) [9]> [8] bss (17.04.07 14:29)
Что значит "первые попавшиеся значения"? Первые 2, 3 , 10? Непонятно это как то все. Что делаешь со справочными наборами данных во время работы?
← →
bss (2007-04-18 13:37) [10]Я заметила, что это происходит, когда в таблице Persons есть Organization_ID, а Department_ID=NULL или 0. Тогда на в столбце DepartmentName для этой строки появляются "левые" значения...
← →
Sergey13 © (2007-04-18 14:21) [11]> [10] bss (18.04.07 13:37)
> а Department_ID=NULL или 0
Как это NULL или 0? NULL и 0 это абсолютно разные вещи.
← →
bss (2007-04-18 14:29) [12]Null
← →
Sergey13 © (2007-04-18 15:44) [13]> [12] bss (18.04.07 14:29)
Где то у тебя проблема с данными или с их интерпретацией, ИМХО. Если в поле NULL, то лукап-поле должно быть пустым.
← →
Виталий Панасенко © (2007-04-18 16:58) [14]не проще ли использовать EhLib - там для БДЕ есть поддержка сортировки(тоже добавляется ORDER BY судя по исходникам).. Возможно, реализовано более аккуратно. А, возможно,
> Sergey13 © (18.04.07 15:44) [13]
на 100% прав.Хотя
> Если в поле NULL, то лукап-поле должно быть пустым.
это не так.. для Paradox, например.
← →
bss (2007-04-18 17:07) [15]база MySQL.
Насколько я понимаю, EhLib нельзя использовать для коммерческих программ. Или это не так?
← →
Виталий Панасенко © (2007-04-18 17:19) [16]до 3,5(или 6) можно.. да, 3,6(у меня) разрешает(нет прямого запрета или иных оговорок. только то, что граждане и организации бывшего СССР имеют право использовать бесплатно). а вот с 4-и нельзя
← →
bss (2007-04-20 13:34) [17]На самом деле не отображаются правильно все lookup-поля в гриде, для которых ключевое поле в таблице Persons = Null или номеру, которого нет в справочнике, откуда отображается наименование в lookup-поле.
База данных - MySQL.
Компоненты доступа - ZeosDB
В чем может быть дело?
← →
Sergey13 © (2007-04-20 13:47) [18]> или номеру, которого нет в справочнике
Это как это? А ссылочная целостность напрочь отсутствует что-ли?
← →
bss (2007-04-20 13:57) [19]временно удалялась, чтобы поэксперементировать. Так что такой ситуации быть не должно, а вот значение Null вполне возможно
← →
Sergey13 © (2007-04-20 14:04) [20]> [19] bss (20.04.07 13:57)
> временно удалялась, чтобы поэксперементировать.
Странные у вас эксперименты.
> а вот значение Null вполне возможно
Я уже писал про интерпретацию данных на клиенте. Вполне вероятно, что NULL у вас транслируется в нечто "похожее", например в 0 или "".
← →
bss (2007-04-20 14:07) [21]Как это можно обойти?
← →
Sergey13 © (2007-04-20 14:10) [22]> [21] bss (20.04.07 14:07)
Найти то место в компонентах, где это происходит, и исправить. Но это, напомню, мое предположение, а не утверждение. И ни с Zeos-ом ни с мускулом я не работал.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c