• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Fexys
  • Дата начала
F

Fexys

Есть несколько таблиц:
Основная, где помимо простых полей хранятся 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) Не обязательно, но вдруг если знаете. Окно в котором будут вводить текст и отправлять письмом на почту. такое реально и как?
 

Вложения

  • Tabl.JPG
    Tabl.JPG
    90,4 КБ · Просмотры: 560
  • Edit_Update.JPG
    Edit_Update.JPG
    34,6 КБ · Просмотры: 512
  • Info.JPG
    Info.JPG
    69,9 КБ · Просмотры: 538
  • Структура.JPG
    Структура.JPG
    52,8 КБ · Просмотры: 327
S

sinkopa

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

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

Fexys

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

За ссыль спасибо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!