Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];
Внизкак проверить есть ли string среди combobox.items Найти похожие ветки
← →
helluvaname (2010-01-25 15:38) [0]задача - заполнить combobox уникальными значениями из двух столбцов таблицы.
Сначала заполняю уникальными значениями из одного столбца с помощью SELECT DISTINCT.
Далее требуется заполнить уникальными значениями из другого столбца, и при заполнении проверять, не содержаться ли они уже в combobox.
Вопрос - как эту проверку осуществлять?
← →
Сергей М. © (2010-01-25 15:40) [1]см. св-во TStringList.Duplicates
← →
Ega23 © (2010-01-25 15:45) [2]
> Сначала заполняю уникальными значениями из одного столбца
> с помощью SELECT DISTINCT.
не забудь
Select distinct LTrim(RTrim(Field))
А то будут строки
"1";
" 1";
" 1 ";
← →
Jeer © (2010-01-25 17:34) [3]
> задача - заполнить combobox уникальными значениями из двух
> столбцов таблицы.
Неправильная задача - следствие неправильной архитектуры.
← →
helluvaname (2010-01-25 20:55) [4]чем же задача неправильная, а тем более архитектура?
← →
Сергей М. © (2010-01-25 21:01) [5]> чем же задача неправильная
Если правильная, то приведи аргументы в пользу размещения данных из этих двух полей одной таблицы в одном UI-списке.
← →
helluvaname (2010-01-25 23:20) [6]нет, Сергей М., дело обстоит несколько по-другому.
Jeer говорит что архитектура неправильная, я прошу его свои слова обосновать.
Просто интересно, как человек не знающий ничего о задаче делает такие выводы.
← →
Германн © (2010-01-26 02:02) [7]
> helluvaname (25.01.10 23:20) [6]
>
> нет, Сергей М., дело обстоит несколько по-другому.
> Jeer говорит что архитектура неправильная, я прошу его свои
> слова обосновать.
> Просто интересно, как человек не знающий ничего о задаче
> делает такие выводы.
>
Данный человек знает "жизнь". Поэтому и делает такие выводы.
А насчёт "задачи" увы не сохранил яркое высказывание Николая aka Sniknik о различии вопроса и задачи.
← →
Ega23 © (2010-01-26 07:41) [8]
> Jeer говорит что архитектура неправильная, я прошу его свои слова обосновать.
Присоединяюсь к Jeer. Скорее всего база коряво спроектирована.
> Просто интересно, как человек не знающий ничего о задаче делает такие выводы.
У этого человека весьма сурьёзный опыт, который не пропьёшь.
В принципе, я допускаю, что данная ситуация (в один комбик записи из разных таблиц пихать), хотя я сходу пример такой ситуации придумать не могу.
Но тут возникает вопрос: а нафига изобретать велосипед, если есть TDBComboBox?
← →
Jeer © (2010-01-26 10:36) [9]Есть грубый, но всем известный контр-вопрос: "А на фига козе баян ?"
Вот спрашивает человек: "Мужики ! Есть у меня обычный автомобиль, он катается взад и вперед, но мне надо чтобы он боком катился. Как ?"
В принципе, вопрос имеет право на существование и даже решение можно предложить и не одно, но также имеет право и ответ "А никак. Архитектура автомобиля "неправильная" для этого действия".
При этом я понятия не имею зачем тебе это было надо, т.е. не знаю твоей задачи.
Вот теперь и объясни, зачем смешивать разные сущности ( два поля) в одну ( общий список).
А если это одна сущность, зачем-то раскиданная в два поля - налицо ошибка проектирования.
Вот если это одна сущность, но имеют место ее "оттенки", то следует все же оставить одно поле для сущности и ввести доп.поле "оттенок".
← →
helluvaname (2010-01-26 10:52) [10]при учете накладных нужно заносить в таблицу склад "откуда" и склад "куда". для этого нужно два разных столбца. чтобы посчитать остаток на каком-либо складе нужно выбрать название склада в комбобоксе и нажать кнопочку "посчитать". столбец "откуда" может не содержать все уникальные записи столбца "куда" и наоборот, поэтому нужно выбрать все уникальные записи из обоих столбцов.
← →
Сергей М. © (2010-01-26 10:56) [11]Удалено модератором
← →
Сергей М. © (2010-01-26 10:58) [12]
> helluvaname (26.01.10 10:52) [10]
Для этой цели должен быть предусмотрен справочник складов.
← →
Jeer © (2010-01-26 11:13) [13]
> helluvaname (26.01.10 10:52) [10]
>
> при учете накладных нужно заносить в таблицу склад "откуда"
> и склад "куда".
Ну вот тебе и ошибка проектирования.
Как верно заметил тезка, тебе необходимо иметь отдельную таблицу-справочник "Склады". В ней всегда будет полный и уникальный список твоих складов.
Остатки обычно считаются не по накладным, а по состоянию склада(ов), формируемому в момент проводки накладной.
В принципе, можно и по накладным пересчитывать, но эти лишние "телодвижения" нужны больше для верификации и проверки целостности.
← →
Anatoly Podgoretsky © (2010-01-26 11:13) [14]> helluvaname (26.01.2010 10:52:10) [10]
Для того, чтобы посчитать остаток, не надо знать "Откуда", да и "куда" тоже. Надо знать приход и расход.
← →
oldman © (2010-01-26 11:38) [15]
> helluvaname (26.01.10 10:52) [10]
Откуда:
a +10
b +20
Куда:
a -5
c -10
Должен получиться остаток 15
А получится что???
a +10
b +20
c -10
Теряшь цифры...
← →
helluvaname (2010-01-26 11:41) [16]
> Anatoly Podgoretsky © (26.01.10 11:13) [14]
>
> Для того, чтобы посчитать остаток, не надо знать "Откуда",
> да и "куда" тоже. Надо знать приход и расход
гениально, Анатолий!
> Сергей М. © (26.01.10 10:58) [12]
>
>
> Для этой цели должен быть предусмотрен справочник складов.
>
возможно, а в чем преимущество?
← →
helluvaname (2010-01-26 11:43) [17]
> oldman © (26.01.10 11:38) [15]
Вы о чем?
← →
Ega23 © (2010-01-26 11:51) [18]
> возможно, а в чем преимущество?
Читать про нормализацию БД.
← →
oldman © (2010-01-26 11:56) [19]
> helluvaname (26.01.10 10:52) [10]
У вас там что, названия складов меняются раз в час?
Ведь в [12] написано.
Будешь иметь справочник всегда под рукой.
И при вводе накладных, и при расчетах.
Заполняй свои комбобоксы один раз и пользуй.
← →
Сергей М. © (2010-01-26 11:56) [20]
> в чем преимущество?
В нормализации БД.
Любой мало-мальски приличной БД положено быть нормализованой.
← →
Плохиш © (2010-01-26 12:02) [21]
> helluvaname (25.01.10 15:38)
>
> задача - заполнить combobox уникальными значениями из двух
> столбцов таблицы.
> Сначала заполняю уникальными значениями из одного столбца
> с помощью SELECT DISTINCT.
> Далее требуется заполнить уникальными значениями из другого
> столбца, и при заполнении проверять, не содержаться ли они
> уже в combobox.
> Вопрос - как эту проверку осуществлять?
Не надо никаких проверок осуществлять, SQL-сервер, как всегда партизанский, сам это сделает, кодеру просто нужно иметь начальные знания SQL.
← →
12 © (2010-01-26 12:10) [22]
> Плохиш © (26.01.10 12:02) [21]
+1
+
Интерфейс должен быть только интерфейсом. Вся логика пусть будет на сервере.
Что если завтра война? (перешли на другой язык / иное)
← →
Jeer © (2010-01-26 14:44) [23]
> Вся логика пусть будет на сервере.
Не забудь добавить: "Это мое частное мнение"
← →
12 © (2010-01-26 15:11) [24]ok :), imho
хотя не вижу чем это может быть плохо. Сервер с БД чаще переживает своих GUI клиентов
← →
Ega23 © (2010-01-26 15:29) [25]Всё взаимосвязано.
← →
MsGuns © (2010-01-26 16:53) [26]select distinct S.A from
(select distinct Col1 as A from Table1
union
select distinct Col2 as A from Table1) S
← →
12 © (2010-01-26 18:12) [27]
> select distinct S.A from
> (select Col1 as A from Table1
> union
> select Col2 as A from Table1) S
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.004 c