Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.12.2010, 13:11
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
Восклицание SQL Запрос выборки

Здравствуйте!!!
Вот посмотрите: у меня есть форма, на которой
DBGrid1, ADOQuery1, DataSource1, DataSource2, DBLookupComboBox1 и кнопка Button1:
http://www.programmersforum.ru/attac...5&d=1292482849
Помогите пожалйста с запросом: нужно в SQL для ADOQuery1 написать запрос, который бы оставлял в BDGrid1 только те поля, которые относятся к выбранному из вариантов в DBLookupComboBox1,
т.е. осуществить поиск по автору при нажатии кнопки Button1.

Если обычный запрос выборки, то он выглядит так ведь:
(например оставить только Пелевина)
Код:
SELECT TOP 1000 [id_kniga]
      ,[name_kniga]
      ,[avtor]
      ,[stranic]
      ,[izdatel]
      ,[god_izdan]
      ,[cena]
      ,[id_postav]
  FROM [book].[dbo].[kniga]
  WHERE avtor = 'В. Пелевин'
Но тут же наверное нужен с переменными запрос?
Помогите пожалуйста!!!
Ответить с цитированием
  #2  
Старый 16.12.2010, 13:17
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Не пускает на тот форум! Регится надо!
DBLookupComboBox1 - на какой кверик ссылается?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #3  
Старый 16.12.2010, 13:27
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Вообщем примерно выглядит так:
есть таблица авторов (id, avtor) (автор же может много книг написать, так зачем нам дублировать?!)

в таблице kniga поле автор в лес отправляем, и заменяем его на idAvtor

к ней обращается кверик1 (Select id, avtor
from SprAvtor
order by avtor)
Датасоурсе1= кверик1
DBLookupComboBox1=Датасоурсе1
DBLookupComboBox1.keyfield=id
2 раза щелкаем по квери1 открывается редактор полей добавляем все поля.

в квери 2 пишем запрос (
SELECT TOP 1000 [id_kniga]
,[name_kniga]
,[avtor]
,[stranic]
,[izdatel]
,[god_izdan]
,[cena]
,[id_postav]
FROM [book].[dbo].[kniga] k
LEFT JOIN SprAvtor s on s.Id=k.IdAvtor
WHERE IdAvtor=:id
в Датасоурсе для квери 2 проставляем датасоурсе1
датасоурсе2=квери2
дбгрид=датасоурсе2

где то так
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #4  
Старый 16.12.2010, 17:32
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

О_О D: вот это даа... ну ладно, я попытаюсь так сделать )) Спасибо!))
Ответить с цитированием
  #5  
Старый 16.12.2010, 19:11
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Вот та картинка:
http://i050.radikal.ru/1012/fb/2c72abda72d3.jpg
Ответить с цитированием
  #6  
Старый 16.12.2010, 19:30
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Или если так, написать поиск для Edit1:
http://s011.radikal.ru/i317/1012/42/fbc1d70432e9.jpg
Только у меня почему-то не работает и появляется такая ошибка:
http://s015.radikal.ru/i330/1012/1c/d30f3e7433c2.jpg
А вот эта процедура:
Код:
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
with ADOQuery1 do begin
Close;
//SQL.Clear;
SQL.Add('SELECT DISTINCT id_kniga,name_kniga,avtor,stranic,izdatel,god_izdan,cena,id_postav FROM kniga');
SQL.Add('WHERE avtor LIKE'+quotedstr(Edit1.text+'%'));
SQL.Add('name_kniga');
Open;
end;
end;
Как можно такую же процедуру поиска через Edit1 написать для кнопки Button1?
Ответить с цитированием
  #7  
Старый 16.12.2010, 20:41
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Из ппервого скрина ниче не понял!

про ошибку правильно пишет, а че эт у вас поле просто так написано что то пропустили подозреваю Order by
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #8  
Старый 16.12.2010, 23:15
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
Радость

А, всё, в общем исправила, теперь нормально ))
Ответить с цитированием
  #9  
Старый 17.12.2010, 00:45
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Только теперь у меня в таблицу Покупатели не добавляются покупатели.
Она связана с таблицей Банк id_bank.
Вот здсь должно быть всё понятно, ошибки снова:
http://s46.radikal.ru/i112/1012/d9/13287039239d.jpg
P.S. В табл. "Банки" id_bank - ключ и счётчик,
в табл. "Покупатели" id_bank тоже счётчик... но потом я убрала его, а ключ - inn_pokup.
Связаны эти две таблицы - id_bank.

Последний раз редактировалось Bloo, 17.12.2010 в 00:48.
Ответить с цитированием
  #10  
Старый 17.12.2010, 09:09
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

вот именно по таким проблемам и не люблю Foreign key

а в покупатели вы в поле id_bank пишете ID которой нет в таблице банков? так?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #11  
Старый 17.12.2010, 10:03
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Да, так!))
Ответить с цитированием
  #12  
Старый 17.12.2010, 10:20
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

ну так вот он и ругается на ссылочную целостность
т.к. у вас установлен внешний ключ, то в поле id_bank должно быть значение которое есть в таблице банков.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #13  
Старый 17.12.2010, 10:33
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

да. только я к сожалению не могу вписать в поле id_bank никаких значений. Это наверное из-за того, что id_bank установлен, как счётчик?
Ответить с цитированием
  #14  
Старый 17.12.2010, 10:41
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

он не должен быть счетчиком, должен быть просто целым значением.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #15  
Старый 17.12.2010, 10:54
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Да, в общем теперь получилось СПАСИИИБО БОЛЬШОЕ, ВАМ!!! ))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter