Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1246381367
Чайник
2009-06-30 21:02
2010.03.28
Delphi 2009 - запись с вариантной частью


2-1264184513
Alexey
2010-01-22 21:21
2010.03.28
ID3 теги и кодировка


2-1264666767
Вася
2010-01-28 11:19
2010.03.28
аналог Set Of


15-1263058858
GanibalLector
2010-01-09 20:40
2010.03.28
Интерфейс


15-1262890350
AlexDan
2010-01-07 21:52
2010.03.28
подключение через проксисервер..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский