Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2010, 20:07   #1
akimov_aleks
Подтвердите свой е-майл
 
Регистрация: 31.01.2010
Сообщений: 12
По умолчанию SQL запрос и DBGrid

Добрый день. помогите с вопростом
есть бве таблици категория и новости
в DBGrid1 я загружаю таблицу категории
в DBGrid2 хочу загружать новости по категориям .
при на клике на DBGrid1 как переменной присвоить поле ID
в онклик DBGrid1 не могу написать код
Код:
begin
получить id из выделенной строки в DBGrid1
end;
begin
myQuery2.Close;
myQuery2.SQL.Clear;
myQuery2.SQL.text:='select title from post where category=:n';
myQuery2.params.parambyname('n').value:=?;// тут надо ID  из таблици категория
myQuery2.Open;
myQuery2.Active:=true;
end;
akimov_aleks вне форума Ответить с цитированием
Старый 28.04.2010, 03:17   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ну вот Вам, как вариант, навскидку, решение Вашей проблемы:

Кидаете на форму DBEdit1, DBEdit2, DBEdit3.
Настраиваете их на тот же DataSource, на который у Вас настроен DBGrid.
В свойстве FieldName у DBEdit1, например, указываете поле с фамилией
В свойстве FieldName у DBEdit2, например, указываете поле с именем
В свойстве FieldName у DBEdit3, например, указываете поле с отчеством.

Затем пишите такой код, например, на событии OnClick компонента DBGrid1:
Код:
begin
получить id из выделенной строки в DBGrid1
end;
begin
myQuery2.Close;
myQuery2.SQL.Clear;
myQuery2.SQL.text:='select ID from <категория> where fam=' + QuotedStr(DBEdit1.Text) + ' and Name=' + QuotedStr(DBEdit2.Text) + ' and otchest=' + QuotedStr(DBEdit3.Text);
myQuery2.Open;
myQuery2.Active:=true;

//полученный ID например присваиваете сюда:
label1.Caption:=IntToStr(myQuery2.FieldByName('ID').AsInteger;
end;
А затем, уже можете использовать полученный ID как вам нужно. Например в вашем случае:
Код:
begin
myQuery2.Close;
myQuery2.SQL.Clear;
myQuery2.SQL.text:='select title from post where category=:n';
myQuery2.params.parambyname('n').value:=StrToInt(Lable1.Caption);
myQuery2.Open;
//myQuery2.Active:=true; думаю, что лишняя строка
end;
Я бы выкрутился в вашей ситуации так
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2010, 10:52   #3
KAMENYKA
Пользователь
 
Аватар для KAMENYKA
 
Регистрация: 06.12.2007
Сообщений: 87
По умолчанию

begin
получить id из выделенной строки в DBGrid1
end;
begin
myQuery2.Close;
myQuery2.SQL.Clear;
myQuery2.SQL.text:='select title from post where category=:n';
myQuery2.params.parambyname('n').va lue:=?;// тут надо ID из таблици категория
myQuery2.Open;
myQuery2.Active:=true;
end;

Ну вы же сами все написали уже! При премещении по гриду курсор и перемещаеться в датасете(наборе данных) и обротиться можно к нему запросто!

myQuery2.params.parambyname('n').va lue:=myQuery1.FieldByName('имя поля ID').value;

либо брать из самого грида:

myQuery2.params.parambyname('n').va lue:=DbGrid.Column[номер столбца с ID].value;-Насчет обращения к полю не уверен,я ДБгридом не пользуюсь но думаю вы разберетесь как получить значение ячейки,а вобще советую 1 способ!
KAMENYKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
DBGrid пуст ли запрос nikori БД в Delphi 9 16.06.2009 10:16
DBGrid и сложный запрос czuryk БД в Delphi 0 20.04.2009 17:57
Запрос не отображается на DBGrid Лукманов Александр БД в Delphi 13 25.02.2009 21:19
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15