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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2015, 19:16   #1
иванлеон
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 31
По умолчанию Выполнение запросов Access с параметром из Delphi

В Access уже есть готовые запросы

Код SQL
Код:
SELECT Группы.Группа, МатЦенности.Наименование, МатЦенностиПоЗаказу.МЦ_ID, МатЦенности.ЕдИзм, Sum(МатЦенностиПоЗаказу.Количество) AS Количество, Avg(МатЦенностиПоЗаказу.Цена) AS Цена, Sum([МатЦенностиПоЗаказу].[Количество]*[МатЦенностиПоЗаказу].[Цена]) AS Сумма
FROM (Группы INNER JOIN МатЦенности ON Группы.ID = МатЦенности.ГруппаID) INNER JOIN (Заказы INNER JOIN МатЦенностиПоЗаказу ON Заказы.NЗаказа = МатЦенностиПоЗаказу.NЗаказа) ON МатЦенности.Шифр = МатЦенностиПоЗаказу.МЦ_ID
WHERE (((Заказы.ДатаПриема)>=[:pDate1] And (Заказы.ДатаПриема)<=[:pDate2])) OR (((Заказы.ДатаСдачи)>=[:pDate11] And (Заказы.ДатаСдачи)<=[:pDate22]))
GROUP BY Группы.Группа, МатЦенности.Наименование, МатЦенностиПоЗаказу.МЦ_ID, МатЦенности.ЕдИзм
ORDER BY Группы.Группа, МатЦенности.Наименование;
Они идут с параметрами, как диапазон дат.
Можно как-нибудь из Delphi передать эти параметры в базу Access и отображать эти запросы через ADOTable. Просто, если запросы без параметров они и так отображаются.
Конечно, можно программно заносить даты в запрос ADOQeury. Но здесь у меня возникла проблема с форматом дат и вообще выполнением запроса.
Вот код заполнения запроса программно, он не работает

Код:

function Re_date(dt:string):string;// приводит дату к виду год-месяц-число
var// по другому запрос не работает
  s1,s2,s3:string;
begin

s1:=Copy(dt,1,Pos('.',dt)-1);
Delete(dt,1,Pos('.',dt));

s2:=Copy(dt,1,Pos('.',dt)-1);
Delete(dt,1,Pos('.',dt));

s3:=dt;

result:=s3+'-'+s2+'-'+s1;


end;

....

x1:=DateToStr(dtp1.Date);// дата из датетаймпикер
x2:=DateToStr(dtp2.Date);

y1:=DateToStr(dtp3.Date);
y2:=DateToStr(dtp4.Date);

x1:=Re_date(x1);
x2:=Re_date(x2);

y1:=Re_date(y1);
y2:=Re_date(y2);

Form1.qry1.SQL.Add('SELECT Группы.Группа, МатЦенности.Наименование, МатЦенностиПоЗаказу.МЦ_ID, МатЦенности.ЕдИзм, Sum(МатЦенностиПоЗаказу.Количество) AS Количество, Avg(МатЦенностиПоЗаказу.Цена) AS Цена,');
Form1.qry1.SQL.Add(' Sum([МатЦенностиПоЗаказу].[Количество]*[МатЦенностиПоЗаказу].[Цена]) AS Сумма');
Form1.qry1.SQL.Add('FROM (Группы INNER JOIN МатЦенности ON Группы.ID = МатЦенности.ГруппаID) INNER JOIN (Заказы INNER JOIN МатЦенностиПоЗаказу ON Заказы.NЗаказа = МатЦенностиПоЗаказу.NЗаказа) ON МатЦенности.Шифр = МатЦенностиПоЗаказу.МЦ_ID');
Form1.qry1.SQL.Add('WHERE (((Заказы.ДатаПриема)>='+x1+' And (Заказы.ДатаПриема)<='+x2+')) OR (((Заказы.ДатаСдачи)>='+y1+' And (Заказы.ДатаСдачи)<='+y2+'))');
Form1.qry1.SQL.Add('GROUP BY Группы.Группа, МатЦенности.Наименование, МатЦенностиПоЗаказу.МЦ_ID, МатЦенности.ЕдИзм');
Form1.qry1.SQL.Add('ORDER BY Группы.Группа, МатЦенности.Наименование');

Form1.qry1.Open;


Спасибо за внимание!
иванлеон вне форума Ответить с цитированием
Старый 23.05.2015, 19:48   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Через ADOTable запрос нельзя однозначно. ADOQuery - ищи параметризированные запросы, хоть здесь на форуме, хоть где хошь, уже надоело про них писать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.05.2015, 21:30   #3
SunnyCrash
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 45
Радость

Скинь исходник. Походу дело в календаре поставь дам где время по нулям 0 (ноль) мож ты еще время ищешь
SunnyCrash вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi + Access + ADO, запрос к запросу с параметром Sasha_S БД в Delphi 4 08.07.2014 13:06
Access и Delphi слишком много запросов к БД BelkaLet4ik БД в Delphi 27 20.01.2012 09:58
Выполнение запросов Dima-fenomen Microsoft Office Access 4 11.03.2010 23:15
Выполнение запросов к БД rcr БД в Delphi 17 22.05.2009 16:28
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59