Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.5 MB
Время: 0.037 c
4-1171050757
Dio
2007-02-09 22:52
2007.07.22
Обновление списка USB устройств


4-1170672620
vlad2
2007-02-05 13:50
2007.07.22
Размещение в памяти больших массивов


3-1176980413
nod
2007-04-19 15:00
2007.07.22
update sql с подзапросом


2-1182843090
Aragorn
2007-06-26 11:31
2007.07.22
Create(nil)


11-1166033779
NeeDiGeo
2006-12-13 21:16
2007.07.22
Глобальные клавиши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский