Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 28.09.2010, 06:39   #1
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
Репутация: 10
По умолчанию Как рассчитать возраст sql запрос

Всем привет помогите пожалуйста. Как мне сделать так чтобы при вводе цифры (лет) мне в таблице вывело именно тех кому столько лет.
Я делаю вроде правильно но в таблице удаляются последние строки и остается только первая .
Вот код.
Код Delphi

Код:
q2.SQL.Text:='select * from owner where DateDiff(year,date_of_birth,GetDate())='
+Edit1.Text+' and family_status ='+char(39)+Combobox1.Text+char(39)
+' and TypeOrg = '+char(39)+Combobox3.Text+char(39)+' and sex='+inttostr(RadioGroup1.Itemindex);
q2.Open;
form2.FormActivate(Sender);
q2.Close;

Последний раз редактировалось Stilet; 28.09.2010 в 08:00.
slai вне форума   Ответить с цитированием
Старый 28.09.2010, 08:22   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Чтобы ответить на вопрос нужно базу иметь.
Напиши просто
Код:
q2.SQL.Text:='select * from owner where DateDiff(year,date_of_birth,GetDate())='+Edit1.Text
Сработает?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 28.09.2010, 08:23   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,049
Репутация: 5656
По умолчанию

погодите-ка.
Ответ на уровне интуиции (ведь Вы не указали свой набор данных и заданные условия):

ведь у Вас в запросе, помимо возраста, ещё туева куча условий отбора (семейный статус, тип_организации, пол...)
вот, видимо, по ним и отбирается первая запись, а остальные не подходят под критерии отбора...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 28.09.2010, 08:35   #4
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
Репутация: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Чтобы ответить на вопрос нужно базу иметь.
Напиши просто
Код:
q2.SQL.Text:='select * from owner where DateDiff(year,date_of_birth,GetDate())='+Edit1.Text
Сработает?
Спасибо, но не работает.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
погодите-ка.
Ответ на уровне интуиции (ведь Вы не указали свой набор данных и заданные условия):

ведь у Вас в запросе, помимо возраста, ещё туева куча условий отбора (семейный статус, тип_организации, пол...)
вот, видимо, по ним и отбирается первая запись, а остальные не подходят под критерии отбора...
Вот весь код
Код:
procedure TForm2.FormActivate(Sender: TObject);
var q:integer;

begin
try
Q2.Open;
except
on e:exception do showmessage(e.Message)
end;
stringgrid2.Visible:=false;
stringgrid2.RowCount:=2;
q:=1;

while not Q2.Eof do
begin
StringGrid2.Cells[0,0]:= 'Фамилия';
StringGrid2.Cells[1,0]:= 'Имя';
StringGrid2.Cells[2,0]:= 'Отчество';
StringGrid2.Cells[3,0]:= 'Домашний телефон';
StringGrid2.Cells[4,0]:= 'Рабочий телефон';
StringGrid2.Cells[5,0]:= 'Мобильный телефон';
StringGrid2.Cells[6,0]:= 'Почта';
StringGrid2.Cells[7,0]:= 'Дата рождения';
StringGrid2.Cells[8,0]:= 'Семейное положение';
StringGrid2.Cells[9,0]:= 'Сфера дефтельности';
StringGrid2.Cells[10,0]:= 'Пол';

stringgrid2.Cells[0,q]:=Q2.fields[0].AsString;
stringgrid2.Cells[1,q]:=Q2.fields[1].AsString;
stringgrid2.Cells[2,q]:=Q2.fields[2].AsString;
stringgrid2.Cells[3,q]:=Q2.fields[3].AsString;
stringgrid2.Cells[4,q]:=Q2.fields[4].AsString;
stringgrid2.Cells[5,q]:=Q2.fields[5].AsString;
stringgrid2.Cells[6,q]:=Q2.fields[6].AsString;
stringgrid2.Cells[7,q]:=Q2.fields[7].AsString;
stringgrid2.Cells[8,q]:=Q2.fields[8].AsString;
stringgrid2.Cells[9,q]:=Q2.fields[9].AsString;
stringgrid2.Cells[10,q]:=Q2.fields[10].AsString;


Q2.Next;
inc(q);
stringgrid2.RowCount:=q+2;
end;
stringgrid2.Visible:=true;
if Q2.Active then Q2.Close;

combobox1.Clear;
Form2.Q2.SQL.Text:='select DISTINCT family_status from owner';
Form2.Q2.Open;
if Form2.Q2.Active then
begin
Form2.Q2.First;
while not q2.Eof do
BEGIN
Form2.ComboBox1.Items.Add(Form2.Q2.FieldByName('family_status').AsString);
Form2.Q2.Next;
END;
q2.Close;
END;

combobox3.Clear;
Form2.Q2.SQL.Text:='select DISTINCT typeorg from owner';
Form2.Q2.Open;
if Form2.Q2.Active then
begin
Form2.Q2.First;
while not q2.Eof do
BEGIN
Form2.ComboBox3.Items.Add(Form2.Q2.FieldByName('typeorg').AsString);
Form2.Q2.Next;
END;
q2.Close;
end;
end;

procedure TForm2.Button1Click(Sender: TObject); 
begin
q2.SQL.Text:='select * from owner where DateDiff(year,date_of_birth,GetDate())='
+Edit1.Text+' and family_status ='+char(39)+Combobox1.Text+char(39)+' and TypeOrg = '
+char(39)+Combobox3.Text+char(39)+' and sex='+inttostr(RadioGroup1.Itemindex);
q2.Open;
form2.FormActivate(Sender);
q2.Close;
end;

end.
При выборе пола, возраста, сферы деятельности, семейного положения. При нажатии кнопки в таблице должна происходить сортировка данных по заданным параметрам.

Последний раз редактировалось Stilet; 28.09.2010 в 11:44.
slai вне форума   Ответить с цитированием
Старый 28.09.2010, 10:31   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,049
Репутация: 5656
По умолчанию

Цитата:
Цитата:
q2.SQL.Text:='select * from owner where DateDiff(year,date_of_birth,GetDate ())='+Edit1.Text

Сработает?

Спасибо, но не работает.
Как именно не работает?!
Вы уверены, что вместо своего запроса написали вышеуказанный?
Какие данные в таблице?
я бы рекомендовал Вам сделать маленькую тестовую таблицу, запаковать её и выложить на форум...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 28.09.2010, 11:02   #6
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Как именно не работает?!
Вы уверены, что вместо своего запроса написали вышеуказанный?
Какие данные в таблице?
я бы рекомендовал Вам сделать маленькую тестовую таблицу, запаковать её и выложить на форум...
Получается она фильтрует только по годам, а мне надо чтобы при выборе всего Например:Сфера деятельности->Торговля (производство, госслужба и т.д.), Семейное положение -> женат(или не женат ), пол->мужской(женский) фильтровала данные.
Вот данные таблицы:
Фамилия
Имя
Отчество
Домашний телефон
Рабочий телефон
Мобильный телефон
Почта
Дата рождения
Семейное положение
Сфера дефтельности
Пол

Последний раз редактировалось slai; 28.09.2010 в 11:05.
slai вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
sql запрос - как упростить forzi БД в Delphi 7 06.04.2010 11:57
Подскажите как поправить SQL запрос МишаК SQL, базы данных 3 16.07.2009 16:22
Как выполнить SQL запрос, записанный в Memo artemavd БД в Delphi 8 26.03.2009 18:41
как составит запрос SQL bmb_66 БД в Delphi 2 11.03.2008 09:46


23:26.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.