Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178

Выборка строк таблицы по значениям столбца через начения в DBComboBox

14.05.2014, 02:11. Показов 4595. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача в следующем(возможно банальна(не судите строго)): 1) Есть таблица DBGrid 'Ispolnenie' в ней 5 столбцов, важен 5-й 'Статус'. Так же на форме присутствует DBComboBox1 со значениями 'НЕ Обработан','Обработан','В Обработке'.
Дык вот, Надо чтобы по выбору в DBComboBox1, допустим значения 'Не Обработан', в DBGrid присутствовали только те строки с данными у которых в колонке 'Статус' было написано 'Не Обработан' и по такой же схеме на остальные значения 'НЕ Обработан','В Обработке'.
2) Еще одно, опять же DBComboBox2!!!: Та же таблица DBGrid 'Ispolnenie' в ней 5 столбцов, важны 1-й'Дата', 2-й'Адрес', 3-й'Вид работ'. и DBComboBox2(загвоздка))). Тут задача другая(возможно не менее банальная(ну не судите строго))
Итак: Осуществляем "поиск" код поиска могу прикрепить, он НЕ через Locate , больше выборка чтоли. Дак вот: Необходимо прицепить (каким образом???) к DBComboBox2 не значения ячеек в каком то столбце, А осуществить Выбор столбца. Т.е. нажимаем на DBComboBox2 вылезают Наименования, тех самых, столбцов 1-й'Дата', 2-й'Адрес', 3-й'Вид работ'., выбираем допустим 1-й'Дата' и в DBEdite пишем допустим 2014, и в DBGrid он выводит все строки с данными у которых в колонке 'Дата' 2014 год или 13.05.2014. Вот как то так. По возможности конечно, но очень прошу помогите кодом.... Спасибо))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2014, 02:11
Ответы с готовыми решениями:

Выборка из таблицы по двум значениям
Всем бобра! У меня стоит такая задача мне необходимо сделать выборку из такой вот таблички id|product_id|option_id|option_value ...

Выборка из таблицы по двум значениям
Всем бобра! У меня стоит такая задача мне необходимо сделать выборку из такой вот таблички id|product_id|option_id|option_value 1 | ...

Автозаполнение таблицы. Выборка по 2 значениям и суммирование.
Ребята, подскажите, пожалуйста! Как можно реализовать выборку как в этом файле. Хочется очень автоматизировать, но мозг не доходит пока...

17
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
14.05.2014, 02:31
Лучший ответ Сообщение было отмечено Slalom как решение

Решение

1)
Delphi
1
2
3
adoquery1.sql.clear;
adoquery1.sql.add('select * from ispolnenie where Статус='+dbcombobox1.text+'');
adoquery1.active:=true;
2)
Комбобокс не нужен, у поля Дата должен быть соответствующий тип
Delphi
1
2
3
adoquery1.sql.clear;
adoquery1.sql.add('select * from ispolnenie where year(Дата)='+edit1.text+'');
adoquery1.active:=true;
1
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
14.05.2014, 02:41  [ТС]
Это ко второму относится, по первому пока ))) вопросов нет, все понятно.Mr_Progger, А как же мне выбрать другой столбец? Т.е. у меня их 3 штуки по которым поиск нужен. Я и хотел для этого комбобокс. Но вот как в него запихать именно наименования(ориентированные)) столбцов, чтобы при выборе пункта дата искал по столбцу дата при выборе объект искал по столбцу объект и т.д. и к стати СПАСИБО за оперативность!!!Mr_Progger,
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
14.05.2014, 03:03
Delphi
1
ADOConnection1.GetFieldNames('ispolnenie',combobox2.Items);
Если пункт 1 понял, то дальше всё понятно должно быть
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
14.05.2014, 03:05
Цитата Сообщение от Slalom Посмотреть сообщение
Необходимо прицепить (каким образом???) к DBComboBox2 не значения ячеек в каком то столбце, А осуществить Выбор столбца.
А что кроме TDBCombobox других комбобоксов не существует? Нафига тут именно TDBCombobox?
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
14.05.2014, 13:51  [ТС]
Возможно и другой вариант! Вы как предлогаете решить?

Добавлено через 2 минуты
Mr_Progger, спасибо, как я понимаю потом та же процедура.
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
15.05.2014, 22:31  [ТС]
Code
1
2
3
4
5
6
procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
adoquery1.sql.clear;
adoquery1.sql.add('select * from iTZ where СТАТУС='+DBComboBox1.text+'');
 ADOQuery1.Active:=true;
end;
Ругается на 'СТАТУС=' но подозреваю не в этом дело((( Что делать?

Добавлено через 9 минут
Mr_Progger, Хелп???!!!))
0
0 / 0 / 1
Регистрация: 13.04.2014
Сообщений: 3
15.05.2014, 22:35
Замените слово "СТАТУС=" на название Вашего столбца в таблице iTZ.... например "Status=" или как Вы его обозвали при создании... сомневаюсь, что он у Вас назван по-русски
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
16.05.2014, 00:12
Название поля вручную писать не нужно, ты же хотел чтоб юзер сам выбирал из выпадающего списка по какому полю делаем поиск.
Delphi
1
2
3
4
5
6
begin
ADOConnection1.GetFieldNames('iTZ',combobox1.Items);
adoquery1.sql.clear;
adoquery1.sql.add('select * from iTZ where '+combobox1.text+'='+edit1.text+'');
ADOQuery1.Active:=true;
end;
Вторая строка в коде выцыпляет все поля из таблицы iTZ.
В эдит юзер вбивает руками что ищем.
Этот весь код надо положить например в кнопку

Добавлено через 7 минут
Поправочка
Это помести на открытие формы
Delphi
1
ADOConnection1.GetFieldNames('iTZ',combobox1.Items);
остальной код в кнопку
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
16.05.2014, 00:50  [ТС]
Mr_Progger, Блин, ну все же правильно почему не работает???(((( И так и так пробовал, даже по заданному столбцу не получается(( Что не так может быть?

Добавлено через 8 минут
Подставлять она подставляет в комбокс и вроде все норм но по кнопке
Code
1
select * from iTZ where '+combobox1.text+'='+edit1.text+''
после равно или равно не нравится ему. Почему?

Добавлено через 19 минут
Mr_Progger, Он работает но ищет только по значениям которые в цифрах, а по словам ругается"не допустимое значение". (( Есть идеи?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33417 / 21525 / 8238
Регистрация: 22.10.2011
Сообщений: 36,932
Записей в блоге: 12
16.05.2014, 01:09
Цитата Сообщение от Slalom Посмотреть сообщение
Есть идеи?
Есть. Обернуть строковые значения кавычками.
Delphi
1
adoquery1.sql.add('select * from iTZ where '+combobox1.text+'='+QuotedStr(edit1.text));
, или использовать параметры.
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
16.05.2014, 08:40  [ТС]
UI, Использовать параметры? Как! Срочно пример!!!)))
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
16.05.2014, 09:20
Delphi
1
2
3
4
5
6
7
8
begin
adoquery1.sql.clear;
adoquery1.sql.add('select * from iTZ where '+combobox1.text+'=:vstavka');
try
adoquery1.Parameters.ParamByName('vstavka').Value:=strtoint(edit1.text);
except adoquery1.Parameters.ParamByName('vstavka').Value:=edit1.text;;
ADOQuery1.Active:=true;
end;
Рекомендую отказатся от идеи давать возможность юзеру выбирать поле для поиска
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
16.05.2014, 09:27  [ТС]
Mr_Progger, как тогда реализовать поиск по нужному столбцу либо по всему сразу?
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
16.05.2014, 09:34
Наверняка в программе требуется поиск всего по нескольким полям, сделать несколько кнопок для каждого поиска или выбор поля в радиогруп. Ну а если в процесе работы возможно изменение числа полей в таблице, такую структура базы надо пересмотреть.
1
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
16.05.2014, 13:14  [ТС]
Поиск по 4 столбцам, несколько кнопок не вариант, радиогруп не совсем красиво, хотя возможно. А теоритически если не полную фразу ввести в поле едита он найдет строки где в фразах находится этот отрезок? Или обязательно надо точно писать что ищешь и он ищет только то что написал? Просто покаэпроверить не могу.

Добавлено через 3 часа 26 минут
Mr_Progger, ?
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
17.05.2014, 13:25  [ТС]
Mr_Progger, Все работает!! Спасибо! А можно ли как то зделать чтобы поиск был не со 100% сответственностью. Т.е. Ввел не Палка , а Пал или ка??????? Вместо равно пишу like. Вроде как там можно че то с % делать? Знает кто может?
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
18.05.2014, 15:18
Лучший ответ Сообщение было отмечено Slalom как решение

Решение

select * from iTZ where ''+edit1.text+'%' вроде так. Должно искать все строки содержащие edit1.text

Добавлено через 10 минут
Или так select * from iTZ where '%'+edit1.text+'%'
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2014, 15:18
Помогаю со студенческими работами здесь

Подбор по значениям столбца другой таблицы
Добрый день форумчане. На работе дали задание, а я честно говоря не очень хорошо знаю данную область. Ситуация в следующем. Есть книга...

Заполнить ListBox выборкой по значениям из другого столбца таблицы
Доброе время суток, уважаемые форумчане! Не могу никак сообразить, как сделать выборку из таблицы перебором строк и заполнить листбокс...

Выборка столбца таблицы в строку
Всем доброго времени суток. Возникла необходимость выбрать все значения столбца в одну строку через разделитель (скажем, запятую). Может...

Доступ к значениям сводной таблицы через VBA
Вопрос 1. С помощью каких методов и свойств Pivot Table в VBA можно получить доступ к значению выделенной ячейки в «общем» виде. Т.е мне...

Пробежаться по всем значениям поля Потребитель и занести каждое значение в DBComboBox
Привет всем! Есть таблица Потребители(Потребитель) и компонент DBComboBox. Подскажите, пожалуйста, как пробежаться по всем значениям...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru