Delphi И Sql Несколько Вопросов

Fexys

New member
22.01.2012
3
0
#1
Есть несколько таблиц:
Основная, где помимо простых полей хранятся ID других таблиц
Побочные, где ключ и 1-2 поля (являются, что-то типа обычного списка)
Рис: Tabl - основная табл. Info - другие таблицы. Edit-Update - окно доб\редакт.

1)Как сделать процедуру в SQL для добавления записи (вроде просто, но чет не могу сообразить).
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Процедура добавления записи для данных в 1ой таблице</div></div><div class="sp-body"><div class="sp-content">
Create procedure New_Film (@NazvRus nvarchar(50), @NazvAngl nvarchar(50), @Strana nvarchar(50), @janr nvarchar(50), @Rej nvarchar(50), @god nvarchar(20))
as
Begin
insert into Films values ((select isnull (max(id)+1,1) from Films), @NazvRus, @NazvAngl, @Strana, @janr, @Rej, @god)
end

Но как сделать такое же, если данные находятся в разных таблицах?

2) Подскажите что можно использовать вместо DBLookupCombobox(используется для добавления\редакт полей табл)? Т.е. нужно чтобы при вводе текста выдавал продолжение имеющееся в списке, если нет, то позволял добавить в опр. таблицу.

3)Можно ли в DBGrid при наведении на строку всплывало сообщение (что-то типа подсказки) с большим текстом (в данном случае с описанием фильма). Честно не смотрел еще и не знаю как. И еще не знаю как это реализовать в БД:
- Либо создавать к каждому полю текстовый файл и при запросе (и при наведении в Grid на строку) выводил текст из него.
- Либо в бд создать отдельную таблицу с nchar (max) привязанную к основной
Не откажусь от других вариантов и способов решения. :)

4) Как реализовать поиск с такой структурой бд(на рисунке). Пробовал делать поиск по "представлению" через Like в DBEdit не вышло. Вроде выдавал ошибку на то что не существует View_8 файлов.

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">как-то так</div></div><div class="sp-body"><div class="sp-content">
procedure TForm23.DBEdit1Change (sender: TObject);
Var
asd : string;
begin
asd := QuotedStr('%'+search.Form23.DBEdit1.Text+'%');
with DM.QAll do
close;
SQL.Clear;
SQL.Add('Select * from View_8 where NazvRus like '+asd);
open;
end;
end;


5) Не обязательно, но вдруг если знаете. Окно в котором будут вводить текст и отправлять письмом на почту. такое реально и как?
 

Вложения

sinkopa

Well-known member
17.06.2009
344
4
#2
1)Как сделать процедуру в SQL для добавления записи (вроде просто, но чет не могу сообразить).
2) Подскажите что можно использовать вместо DBLookupCombobox.
3)Можно ли в DBGrid при наведении на строку всплывало сообщение
Не откажусь от других вариантов и способов решения. :)
4) Как реализовать поиск с такой структурой бд(на рисунке). Пробовал делать поиск по "представлению" через Like
5) Не обязательно, но вдруг если знаете. Окно в котором будут вводить текст и отправлять письмом на почту. такое реально и как?
Сколько вопросов сразу... это ж "неделю" только надо чтобы до конца все вопросы дочитать... а отвечать... и подумать страшно... ;)

(1) SQL оператор JOIN. читайте "гуглохелп".
(2) Не совсем понятно чего именно вы хотите добиться в итоге... Ну например возъмите обычный комбобокс, заполните его данными из таблицы... кнопкой или нажатию ENTER чего нибудь куданибудь добавляете...
Только... Вы же надеюсь отдаете себе отчет, что придется все поля записи добавлять в таблицу... т.е. в моем понимании все равно сначала должна появиться некая форма где надо будет занести "недостающие" поля. А потом уже жать "ОК" и добавлять... или там только один "столбец" в таблице?
(4) Like должен работать. Ищите ошибку в строке которую вы передаете в SQL.Add (собираете в переменную asd). Они корректные? Может проблема в русских буквах? В какой кодировке строки в таблице хранятся?
(3), (5) и еще мнооого чего интересного на все случаи жизни:
http://delphiworld.narod.ru/_all_articles_.html
 

Fexys

New member
22.01.2012
3
0
#3
(2) Не совсем понятно чего именно вы хотите добиться в итоге... Ну например возъмите обычный комбобокс, заполните его данными из таблицы... кнопкой или нажатию ENTER чего нибудь куданибудь добавляете...
Только... Вы же надеюсь отдаете себе отчет, что придется все поля записи добавлять в таблицу... т.е. в моем понимании все равно сначала должна появиться некая форма где надо будет занести "недостающие" поля. А потом уже жать "ОК" и добавлять... или там только один "столбец" в таблице?
(4) Like должен работать. Ищите ошибку в строке которую вы передаете в SQL.Add (собираете в переменную asd). Они корректные? Может проблема в русских буквах? В какой кодировке строки в таблице хранятся?
(3), (5) и еще мнооого чего интересного на все случаи жизни:
http://delphiworld.narod.ru/_all_articles_.html
(2) Таблицы состоят из 2х столбцов: id и данные. Просто хочу немного упростить, чтобы не вбивать отдельно в другом окне данные.
(4) кодировка nchar, должен считывать русский. По поводу корректности, в видео все работало, списал код от туда
http://www.youtube.com/watch?v=Sm_AjtUndQ8...ayer_detailpage

За ссыль спасибо.