![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте!!!
Вот посмотрите: у меня есть форма, на которой 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
|
|||
|
|||
|
Не пускает на тот форум!
Регится надо!DBLookupComboBox1 - на какой кверик ссылается? |
|
#3
|
|||
|
|||
|
Вообщем примерно выглядит так:
есть таблица авторов (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
|
||||
|
||||
|
О_О D: вот это даа... ну ладно, я попытаюсь так сделать
)) Спасибо!)) |
|
#5
|
||||
|
||||
|
Вот та картинка:
http://i050.radikal.ru/1012/fb/2c72abda72d3.jpg |
|
#6
|
||||
|
||||
|
Или если так, написать поиск для 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; |
|
#7
|
|||
|
|||
|
Из ппервого скрина ниче не понял!
![]() про ошибку правильно пишет, а че эт у вас поле просто так написано что то пропустили подозреваю Order by ![]() |
|
#8
|
||||
|
||||
|
А, всё, в общем исправила, теперь нормально
)) |
|
#9
|
||||
|
||||
|
Только теперь у меня в таблицу Покупатели не добавляются покупатели.
Она связана с таблицей Банк 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
|
|||
|
|||
|
вот именно по таким проблемам и не люблю Foreign key
а в покупатели вы в поле id_bank пишете ID которой нет в таблице банков? так? ![]() |
|
#11
|
||||
|
||||
|
Да, так!))
|
|
#12
|
|||
|
|||
|
ну так вот он и ругается на ссылочную целостность
![]() т.к. у вас установлен внешний ключ, то в поле id_bank должно быть значение которое есть в таблице банков. |
|
#13
|
||||
|
||||
|
да. только я к сожалению не могу вписать в поле id_bank никаких значений. Это наверное из-за того, что id_bank установлен, как счётчик?
|
|
#14
|
|||
|
|||
|
он не должен быть счетчиком, должен быть просто целым значением.
|
|
#15
|
||||
|
||||
|
Да, в общем теперь получилось
СПАСИИИБО БОЛЬШОЕ, ВАМ!!! )) |