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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2015, 19:43   #1
Анжеликааа
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 30
По умолчанию Поиск в БД

Здравствуйте!
у меня БД InterBase

такой запрос на создание таблицы
Код:
select IZDELIE.NAZVANIE, IZDELIE.KATEGORIA, CEX.ID_CEX, CEX.NAZWANIE, BRIGAD.ID_BRIGAD
 from IZDELIE, CEX, BRIGAD
WHERE IZDELIE.ID_BRIGAD = BRIGAD.ID_BRIGAD AND CEX.ID_BRIGAD = BRIGAD.ID_BRIGAD
Мне необходимо осуществить поиск по двум столбцам
IZDELIE.KATEGORIA и CEX.NAZWANIE

пишу код на поиск
Код:
procedure TForm4.BitBtn1Click(Sender: TObject);
begin
if (Form4.ComboBox1.Text = 'Категория')
then begin
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select * From IZDELIE where  IZDELIE.KATEGORIA LIKE'+#39+'%'+Edit1.Text+'%'+#39);
IBQuery1.Open;
end
else if (Form4.ComboBox1.Text = 'Цех')
then begin
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select * From CEX where CEX.NAZWANIE LIKE'+#39+'%'+Edit1.Text+'%'+#39);
IBQuery1.Open;
end;

end;
Но ноль реакции у dbgrid
Помогите!

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

Цитата:
такой запрос на создание таблицы
Это не создание таблицы.
Цитата:
Но ноль реакции у dbgrid
Всмысле он пуст или в нем ничего не поменялось?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 20:57   #3
Анжеликааа
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это не создание таблицы.

Всмысле он пуст или в нем ничего не поменялось?
Он отображает данные.
Ничего не поменялось.
Анжеликааа вне форума Ответить с цитированием
Старый 06.01.2015, 21:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм...
Я бы сделал так:
1) Прошелся отладкой по коду, что выше приведен. Доходит ли вообще до Open.
2) Если доходит то изменил бы запрос, дописав first 1 перед * в запросе. Если этот запрос сработет то выведется одна единственная строка. Так можно узнать что сам запрос отрабатывает и грид к нему подключен корректно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 21:49   #5
Анжеликааа
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 30
По умолчанию

Вы программист со стажем, а я всего лишь студентка, для меня откладка эта темный лес
Анжеликааа вне форума Ответить с цитированием
Старый 06.01.2015, 21:53   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Проблема в том, что по вышеприведенному коду можно только гадать что происходит.
Ошибок в нем я не вижу, поэтому и предложил отладку.
Ладно. Пойдем лесом:
Код:
if (Form4.ComboBox1.Text = 'Категория')
then begin
ShowMessage('Выбираем по категории');
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select * From IZDELIE where  IZDELIE.KATEGORIA LIKE'+#39+'%'+Edit1.Text+'%'+#39);
IBQuery1.Open;
end
else if (Form4.ComboBox1.Text = 'Цех')
then begin
ShowMessage('Выбираем по цеху');
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select * From CEX where CEX.NAZWANIE LIKE'+#39+'%'+Edit1.Text+'%'+#39);
IBQuery1.Open;
end;
Запусти. Какое из сообщений вывалится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 22:14   #7
Анжеликааа
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 30
По умолчанию

Нажимаю на Категорию, сообщение о категории и столбец с цехом становится пустым.
Нажимаю на Цех, выскакивает сообщение о цехе и столбец с категорией и названием изделия становятся пустыми
Анжеликааа вне форума Ответить с цитированием
Старый 06.01.2015, 22:28   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А это потому что у тебя был запрос связывающий две таблицы, а потом ты переключилась на запрос с только одной таблицей.
Тебе нужно делать так:
Код:
procedure TForm4.BitBtn1Click(Sender: TObject);
begin

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select IZDELIE.NAZVANIE, IZDELIE.KATEGORIA, CEX.ID_CEX, ');
IBQuery1.SQL.Add('CEX.NAZWANIE, BRIGAD.ID_BRIGAD');
IBQuery1.SQL.Add(' from IZDELIE, CEX, BRIGAD');
IBQuery1.SQL.Add('WHERE IZDELIE.ID_BRIGAD = BRIGAD.ID_BRIGAD ');
IBQuery1.SQL.Add('AND CEX.ID_BRIGAD= BRIGAD.ID_BRIGAD');

if (Form4.ComboBox1.Text = 'Категория')then 
 IBQuery1.SQL.Add(' and IZDELIE.KATEGORIA LIKE '+QuotedStr('%'+Edit1.Text+'%')) else
if (Form4.ComboBox1.Text = 'Цех')
 IBQuery1.SQL.Add(' and CEX.NAZWANIE LIKE '+QuotedStr('%'+Edit1.Text+'%'));

IBQuery1.Open;
end;

end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 22:34   #9
Анжеликааа
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 30
По умолчанию

Не работает этот код.
Если осуществлять поиск по Цеху, то выводит пустую таблицу.

Если осуществлять поиск по Критерию, то при вводе названия данного из второй строки выводит первую и так наоборот с первой строкой. А если ввести данное из третьей строки, то выводит пустую таблицу.
Анжеликааа вне форума Ответить с цитированием
Старый 06.01.2015, 22:56   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда я пас. Надо проект смотреть чтоб понять что там не выходит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь в доработке программы на языке паскаль (бинарный поиск, поиск перебором) DimzNOVIchok45 Помощь студентам 0 13.10.2014 20:11
Реализовать два метода поиска строк в массиве: поиск перебором, бинарный поиск на языке Pascal DimzNOVIchok45 Помощь студентам 7 19.09.2014 21:40
Обработка одномерного массива - поиск среднего, поиск минимального, сортировка (Паскаль) nadez Паскаль, Turbo Pascal, PascalABC.NET 3 18.03.2014 08:45
Поиск Easyway Microsoft Office Excel 5 23.05.2012 17:14
Поиск в БД sting1920 БД в Delphi 1 15.03.2010 00:22