Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2015, 01:33   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Варианты наполнение DBComboBox

Доброе время суток,
1. Есть таблица (в БД), в ней поле, значение которого может повторяться в других записях этой же табл. (если его выберет пользователь), например «Фирма-производитель»
Есть ли на данный момент, более простой способ наполнения DBComboBox, уникальными значениями с этого же поля этой же таблицы, нежели брать и каждый раз в начале «вставки», «редактирования», запросом DISTINCT, вынимать все уникальные записи из поля?

2. в той же таблицы есть три поля «фамилия», «почтовый адрес», «телефон». У меня стоит DBComboBox, только на «фамилия». Т.е. я заполняю DBComboBox фимилиями, и я хочу чтоб при выборе фамилии, сразу подставлялся и адрес и телефон, Т.е. это мне нужно создать двумерный массив, куда на ровне с заполнением DBComboBox, я буду его заполнять «почтовый адрес», и «телефон». А потом при выборе пользователем определенной фамилии в DBComboBox, я буду тянуть из этого массива дополнительные данные, для вставки в соответствующие поля.
Верно?

Заранее спасибо.

Последний раз редактировалось KBO; 27.11.2015 в 01:45.
KBO вне форума Ответить с цитированием
Старый 27.11.2015, 10:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А может лучше будет использовать DBLookupComboBox для этих целей?
Можно даже для него выделить отдельный Датасет в котором провернуть запрос с DISTINCT-ом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2015, 02:45   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Извиняюсь я не точно сказал..
в 1 и 2 вопросе - оказывается уже несколько таблиц.

Тогда в DataSet нужно создать вычисляемые поля, куда скидывать все данные по «Фирма-производитель», «фамилия», «почтовый адрес», «телефон»?

но если с фирмой все просто:
"
Код:
select distinct(ORGANIZATION) from TABLE1 where ORGANIZATION is not null
union all
select distinct(ORGANIZATION) from TABLE2 where ORGANIZATION is not null
"

то данными пользователя...
в TABLE1 - есть "фамилия", "Имя", "Ученое звание", "Ученая категория", "Должность"
в TABLE2 - есть "фамилия, Имя, Отчество" (одно поле), "Телефон", "e-mail"

Последний раз редактировалось KBO; 28.11.2015 в 03:20.
KBO вне форума Ответить с цитированием
Старый 28.11.2015, 15:48   #4
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

В результате получилось 2 запроса
№1
Код:
select distinct(KEEP_ORGANIZATION) from TABLE1 where KEEP_ORGANIZATION is not null
union all
select distinct(STORED_ETALON) from TABLE2 where STORED_ETALON is not null
№2
Код:
select distinct(KEEP_LAST_NAME), KEEP_NAME, KEEP_DEGREE, KEEP_RANK, KEEP_POSITION
 from TABLE1 where KEEP_LAST_NAME is not null
union all
select distinct(KEEP_LAST_NAME), KEEP_NAME, KEEP_PATRONYMIC, KEEP_TELEPHONE, KEEP_E_MAIL from TABLE2 where KEEP_LAST_NAME is not null
которые я бы хотел объединить в один запрос,
А вот как это сделать?
KBO вне форума Ответить с цитированием
Старый 28.11.2015, 15:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если я правильно тебя понял то:
Код:

select distinct(KEEP_LAST_NAME), KEEP_NAME, KEEP_DEGREE, KEEP_RANK, KEEP_POSITION
 from TABLE1 where KEEP_LAST_NAME is not null
union all
select distinct(KEEP_LAST_NAME), KEEP_NAME, KEEP_PATRONYMIC, KEEP_TELEPHONE, KEEP_E_MAIL from TABLE2 where KEEP_LAST_NAME is not null
union all
select distinct(KEEP_ORGANIZATION),'','','','' from TABLE1 where KEEP_ORGANIZATION is not null
union all
select distinct(STORED_ETALON),'','','','' from TABLE2 where STORED_ETALON is not null
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2015, 16:13   #6
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Да, да это оно, но есть
небольшая коллизия,
значение поля "KEEP_ORGANIZATION", в результате попадает в поле "KEEP_LAST_NAME". и "KEEP_PATRONYMIC" забивается полем "KEEP_DEGREE".
Нельзя ли их распараллелить, каким-нибудь образом?
Здесь же "as", не будет же работать...

...или можно в последних строках запроса
Код:
...
select distinct(KEEP_ORGANIZATION),'-','','','' from GOV_ETALON where KEEP_ORGANIZATION is not null
union all
select distinct(STORED_ETALON),'-','','','' from REGISTER_ETALON where STORED_ETALON is not null
например
а "DBLookupComboBox " по организициям, каким-то образом будет ориентироваться на второй ключ "-"

Последний раз редактировалось KBO; 28.11.2015 в 17:06.
KBO вне форума Ответить с цитированием
Старый 28.11.2015, 18:18   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нельзя ли их распараллелить, каким-нибудь образом?
А выровнять... м.м.м...
Код:
CAST(Имя поля as char(100))
Каждое текстовое так.
Мне иногда так и приходилось делать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2015, 18:30   #8
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А выровнять... м.м.м...
Код:
CAST(Имя поля as char(100))
Каждое текстовое так.
Мне иногда так и приходилось делать.
Нет, нет, я не то имел в виду, просто в результате запроса, который вы написали
- в поле "KEEP_LAST_NAME" вносится данные и с "KEEP_ORGANIZATION" (а для источника DBLookupComboBox - это не очень, т.е. отображаются и фамилии и названия организации);
- поле "KEEP_PATRONYMIC" вообще нет.

Последний раз редактировалось KBO; 28.11.2015 в 18:35.
KBO вне форума Ответить с цитированием
Старый 28.11.2015, 18:39   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а. Ну так расставь поля как они должны быть. Если KEEP_ORGANIZATION нужно на второе место то:
Код:
select '', distinct(KEEP_ORGANIZATION)
Если на третье то
Код:
select '','', distinct(KEEP_ORGANIZATION)
И так далее. Перечисляй их в нужном порядке жеж.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2015, 18:44   #10
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

я так уже пробывал, на строке
Код:
... 
select '','','','', distinct(KEEP_ORGANIZATION) from GOV_ETALON where KEEP_ORGANIZATION is not null
ошибка: "Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 22, column 21.
distinct.
"

Последний раз редактировалось KBO; 28.11.2015 в 18:48.
KBO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отобразить в одном DBComboBox соответствующие данные другого DBComboBox sergeykom БД в Delphi 14 06.07.2016 14:50
Div и его наполнение. МОЛЛь HTML и CSS 1 15.05.2013 14:57