4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
1

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

14.05.2014, 02:11. Показов 3955. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2014, 02:11
Ответы с готовыми решениями:

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

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

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

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

17
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
14.05.2014, 02:31 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
Это ко второму относится, по первому пока ))) вопросов нет, все понятно.Mr_Progger, А как же мне выбрать другой столбец? Т.е. у меня их 3 штуки по которым поиск нужен. Я и хотел для этого комбобокс. Но вот как в него запихать именно наименования(ориентированные)) столбцов, чтобы при выборе пункта дата искал по столбцу дата при выборе объект искал по столбцу объект и т.д. и к стати СПАСИБО за оперативность!!!Mr_Progger,
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
14.05.2014, 03:03 4
Delphi
1
ADOConnection1.GetFieldNames('ispolnenie',combobox2.Items);
Если пункт 1 понял, то дальше всё понятно должно быть
0
пофигист широкого профиля
4682 / 3118 / 857
Регистрация: 15.07.2013
Сообщений: 17,983
14.05.2014, 03:05 5
Цитата Сообщение от Slalom Посмотреть сообщение
Необходимо прицепить (каким образом???) к DBComboBox2 не значения ячеек в каком то столбце, А осуществить Выбор столбца.
А что кроме TDBCombobox других комбобоксов не существует? Нафига тут именно TDBCombobox?
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
14.05.2014, 13:51  [ТС] 6
Возможно и другой вариант! Вы как предлогаете решить?

Добавлено через 2 минуты
Mr_Progger, спасибо, как я понимаю потом та же процедура.
0
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
15.05.2014, 22:31  [ТС] 7
Код
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 8
Замените слово "СТАТУС=" на название Вашего столбца в таблице iTZ.... например "Status=" или как Вы его обозвали при создании... сомневаюсь, что он у Вас назван по-русски
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
16.05.2014, 00:12 9
Название поля вручную писать не нужно, ты же хотел чтоб юзер сам выбирал из выпадающего списка по какому полю делаем поиск.
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  [ТС] 10
Mr_Progger, Блин, ну все же правильно почему не работает???(((( И так и так пробовал, даже по заданному столбцу не получается(( Что не так может быть?

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

Добавлено через 19 минут
Mr_Progger, Он работает но ищет только по значениям которые в цифрах, а по словам ругается"не допустимое значение". (( Есть идеи?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32760 / 21105 / 8139
Регистрация: 22.10.2011
Сообщений: 36,362
Записей в блоге: 8
16.05.2014, 01:09 11
Цитата Сообщение от 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  [ТС] 12
UI, Использовать параметры? Как! Срочно пример!!!)))
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
16.05.2014, 09:20 13
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  [ТС] 14
Mr_Progger, как тогда реализовать поиск по нужному столбцу либо по всему сразу?
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
16.05.2014, 09:34 15
Наверняка в программе требуется поиск всего по нескольким полям, сделать несколько кнопок для каждого поиска или выбор поля в радиогруп. Ну а если в процесе работы возможно изменение числа полей в таблице, такую структура базы надо пересмотреть.
1
4 / 4 / 0
Регистрация: 28.09.2012
Сообщений: 178
16.05.2014, 13:14  [ТС] 16
Поиск по 4 столбцам, несколько кнопок не вариант, радиогруп не совсем красиво, хотя возможно. А теоритически если не полную фразу ввести в поле едита он найдет строки где в фразах находится этот отрезок? Или обязательно надо точно писать что ищешь и он ищет только то что написал? Просто покаэпроверить не могу.

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

Решение

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

Добавлено через 10 минут
Или так select * from iTZ where '%'+edit1.text+'%'
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2014, 15:18
Помогаю со студенческими работами здесь

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

Выборка столбца таблицы в строку
Всем доброго времени суток. Возникла необходимость выбрать все значения столбца в одну строку через...

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru