Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запросы с использованием компонентов FibPlus, FireBird + FibPlus 
:(
    Опции темы
_andrews_
Дата 26.2.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 23.12.2006

Репутация: нет
Всего: нет



Использую Delphi7 + FibPlus. Необходимо осуществить поиск, фильтрацию. Как программно, при нажатии на кнопку, поменять запрос в компоненте PFibDataSource? Или может не там менять нужно. Подскажите, плиз)
PM MAIL   Вверх
superVad
Дата 26.2.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Вообщето нет такого компонента как PFibDataSource, может имелось ввиду не DataSource а DataSet тогда запрос можно так поменять:

Код

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  pFIBDataSet1.Close;
  pFIBDataSet1.SelectSQL.Clear;
  pFIBDataSet1.SelectSQL.Add('select ... и так далее');
  pFIBDataSet1.SelectSQL.Add('from ... и так далее');
//построчно можно добавлять запрос (можно все и в одну строку)
  pFIBDataSet1.Open;
end;


фильтрацию на уже открытые данные делать можно так:

Код

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  pFIBDataSet1.Filter:='Поле1=чтототам and Поле2<=чтототам';
  pFIBDataSet1.Filtered:=True;
end;

PM MAIL   Вверх
_andrews_
Дата 26.2.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 23.12.2006

Репутация: нет
Всего: нет



Поправка: 
Как программно, при нажатии на кнопку, поменять запрос в компоненте PFibDataSet?
PM MAIL   Вверх
superVad
Дата 26.2.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Читай выше, я там вроде все уже написал (мой сотый пост  smile )
PM MAIL   Вверх
_andrews_
Дата 27.2.2007, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 23.12.2006

Репутация: нет
Всего: нет



ПРи попытке осуществить выше описанное выводит ошибку, типа 

pFIBDataSet not in Edit or Inser mode

Есть таблица Фильмы и таблица Должники(Клиенты) (БД "Домашняя видеотека"). Нужно, чтобы выводился запрос по Нику должника со всеми его фильмами...
Может быть с запросом не то. Подскажите, плиз
Пишу вот такое:
Код

with pFIBDSFilm do
    begin
      Close;
      SelectSQL.Clear;
      SelectSQL.Add('select film.name_f, klient.name_k');
      SelectSQL.Add('from film, klient where film.kod_k=klient.kod_k');
      SelectSQL.Add('and klient.nick_k like '' ');
      SelectSQL.Add(''''+Edit1.Text+'''');
      SelectSQL.Add('%''''');
      Open;
    end;


Прошу на кавычки и прочую ерунду пока внимания не обращать...Меня интересует принцип работы... Плиз
PM MAIL   Вверх
superVad
Дата 27.2.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Вообще такая ошибка выдаеться если ты пытаешся добовлять или редактировать данные в ДатаСете не вызвав перед этим Edit или Append. В этом коде мне не понятно почему она возникает.

Попробуй запрос переписать вот так:

Код

with pFIBDSFilm do
begin
  Close;
  SelectSQL.Clear;
  SelectSQL.Add('select a.name_f, b.name_k');
  SelectSQL.Add('from film a, klient b');
  SelectSQL.Add('where a.kod_k=b.kod_k and b.nick_k like :param1');
  ParamByName('param1').AsString:=Edit1.Text+'%';
  Open;
end;


А вообще этот запрос ты в айбиэксперте проверял? Все отбираеться как надо?
PM MAIL   Вверх
_andrews_
Дата 27.2.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 23.12.2006

Репутация: нет
Всего: нет



Упростил схему, добавил Edit

Код

with pFIBDSFilm do
    begin
      Close;
      Edit;
      SelectSQL.Clear;
      SelectSQL.Add('select film.name_f, klient.nick_k fom film, klient where film.kod_k=klient.kod_k');
      Open;
    end;


ошибка таже...
PM MAIL   Вверх
superVad
Дата 27.2.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Блин...
Не надо эдит ставить тыж не редактируеш данные. Я просто там описал случаи когда такая ошибка может появляться к твоей задаче это не относиться.

Когда дебажиш прогу то на какой строке вылетает?

Какая у тебя delphi?

Это сообщение отредактировал(а) superVad - 27.2.2007, 14:39
PM MAIL   Вверх
Alex
Дата 1.3.2007, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



_andrews_, мой тебе совет если хочешь нормально научится работать с FIB+ прочти сначала документацию. Она на русском и там нет ничего лишнего http://www.devrace.com/files/fibplus_dg_6_4.zip
И ознакомься со списком статей http://www.devrace.com/ru/fibplus/articles/#143

PS:
После прочтения и тех примеров, что даны у тебя исчезнет 80% всех вопросов по этой библиотеки.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
jemiko
Дата 6.8.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.5.2003

Репутация: нет
Всего: нет



Цитата(superVad @ 27.2.2007,  11:01)
Попробуй запрос переписать вот так:

Код

with pFIBDSFilm do
begin
  Close;
  SelectSQL.Clear;
  SelectSQL.Add('select a.name_f, b.name_k');
  SelectSQL.Add('from film a, klient b');
  SelectSQL.Add('where a.kod_k=b.kod_k and b.nick_k like :param1');
  ParamByName('param1').AsString:=Edit1.Text+'%';
  Open;
end;

Этот запрос правильный, 
но а если сделать  

SelectSQL.Add('where a.kod_k=b.kod_k and b.nick_k like % :param1 %');
или так
SelectSQL.Add('where a.kod_k=b.kod_k and b.nick_k like ''% :param1 %''');

То уже выдает ошибку.

Кто может помочь?

D2006, FB 2.0, FIB 6.7

Извините, разобрался. Спасибо.

Это сообщение отредактировал(а) jemiko - 6.8.2007, 12:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1081 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.