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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2009, 12:47   #1
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию Помогите, пожалуйста разобраться с поиском в БД (Delphi7)

Отдельное спасибо, за предыдущую помощь в разработке этой базы данных Михалычу!!!

Не получается запрос в таблице Абоненты, подскажите, что не так делаю.

procedure TForm3.RadioButton1Click(Sender: TObject);
begin
DataModule2.TAbonent.IndexFieldName s :='Family';
end;

procedure TForm3.FindEditChange(Sender: TObject);
begin
if Length(FindEdit.Text)=0 then // если FindEdit пуст
DBGrid1.DataSource:=DataModule2.FIN D_DS // отображать FIND_DS
else // иначе
begin
// запрос на отображение в гриде по любому совпадению текста в FindEdit

DataModule2.FINDQuery.SQL.Text:=
'SELECT * FROM Abonent WHERE (Family LIKE '+QuotedStr(FindEdit.Text+'%')+')';
DataModule2.FINDQuery.Open;
DBGrid1.DataSource:=DataModule2.FIN D_DS;
end;
end;

База прилагается ))

Заранее большое спасибо!
Вложения
Тип файла: rar Television_Company.rar (400.1 Кб, 9 просмотров)
KARUSHEV вне форума Ответить с цитированием
Старый 27.01.2009, 13:28   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А чего удивляться-то? У вас FIND_DS на какой датасет подцеплен?
Правильно, на таблицу абонентов. Вот вам и отображается неизменная таблица абонентов - даже если сделать забытое вами
DataModule2.FINDQuery.Close;
перед
DataModule2.FINDQuery.SQL.Text:='.. .'
mihali4 вне форума Ответить с цитированием
Старый 27.01.2009, 13:40   #3
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Не понимаю, у меня же поиск идет по таблице Абоненты? Или мне нужно создать другую таблицу?
KARUSHEV вне форума Ответить с цитированием
Старый 27.01.2009, 13:42   #4
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Извините, за такие вопросы, уже весь в учебниках зарылся, очень сложно разбираться с нуля.
KARUSHEV вне форума Ответить с цитированием
Старый 27.01.2009, 13:44   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да просто у FIND_DS в качестве параметра DataSet должно быть указано FINDQuery, а не TAbonent...
Вы же хотите увидеть данные не из TTable, а из TQuery...
mihali4 вне форума Ответить с цитированием
Старый 27.01.2009, 13:47   #6
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

у меня выбирается в параметре DataSet только таблицы, может я не так что делаю?
KARUSHEV вне форума Ответить с цитированием
Старый 27.01.2009, 18:45   #7
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Да просто у FIND_DS в качестве параметра DataSet должно быть указано FINDQuery, а не TAbonent...
Вы же хотите увидеть данные не из TTable, а из TQuery...
Так и не разобрался, как можно указать FINDQuery, пошел другим путем для поиска данных: Locate.

Все работает ))

procedure TForm3.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked

then
begin
if not DataModule2.TAbonent.Locate('Family ', Form3.FindEdit.Text, []) then
ShowMessage ('Запись не найдена');
end

else
if RadioButton2.Checked
then begin
if not DataModule2.TAbonent.Locate('Name', Form3.FindEdit.Text, []) then
ShowMessage ('Запись не найдена');
end

else
if RadioButton3.Checked
then begin
if not DataModule2.TAbonent.Locate('City', Form3.FindEdit.Text, []) then
ShowMessage ('Запись не найдена');
end

else
if RadioButton4.Checked
then begin
if not DataModule2.TAbonent.Locate('Street ', Form3.FindEdit.Text, []) then
ShowMessage ('Запись не найдена');
end;
end;

Начну разбираться с самым сложным для меня: формированием таблицы счетов...
KARUSHEV вне форума Ответить с цитированием
Старый 27.01.2009, 19:25   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от KARUSHEV Посмотреть сообщение
у меня выбирается в параметре DataSet только таблицы, может я не так что делаю?
А что - вручную ввести эти буковки FINDQuery тоже не получается?
mihali4 вне форума Ответить с цитированием
Старый 27.01.2009, 19:32   #9
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Менять нужно в Object Inspector? Если так, то в ручную не получается. Может можно где то в другом месте прописать?

Выдает ошибку FIND_DS: Circular datalinks are not allowed

Если у Вас получилось скиньте, пожалуйста, исправленную базу.
KARUSHEV вне форума Ответить с цитированием
Старый 27.01.2009, 19:37   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от KARUSHEV Посмотреть сообщение
Выдает ошибку FIND_DS: Circular datalinks are not allowed
Очистите свойство DataSource у FINDQuery и будет вам счастье.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста разобраться с калькулятором KARUSHEV Помощь студентам 5 14.01.2009 18:04
Пожалуйста помогите разобраться) Atij1 Общие вопросы C/C++ 4 13.04.2008 20:32