Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

как проверить есть ли 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.014 c
2-1264528150
Евгений Р.
2010-01-26 20:49
2010.03.28
Cast в Ado-запросе


3-1220515408
DVM
2008-09-04 12:03
2010.03.28
ID последней добавленной записи


2-1264342999
Делфиец
2010-01-24 17:23
2010.03.28
Как разом очистить всю таблицу


1-1246429266
Василий Иванов_22
2009-07-01 10:21
2010.03.28
меню в ресурсе


2-1264114096
Евгений Р.
2010-01-22 01:48
2010.03.28
Как изменить свойство Required поля Access