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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.10.2006, 13:00   #1
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию SQL - запросы в Delphi

anaid
База данных в Access, пользовательский интерфейс в Delphi.
Необходимо, чтобы при нажатии на кнопку, происходило суммирование данных (денежн.) по заданному критерию (временной интервал).
Когда пишу запрос для события Button1Click:
ADOQUERY1.SQL.Add('SELECT Sum(Round([Balansov_stoimost]*[Kolichestvo])) AS Ostatok');
ADOQUERY1.SQL.Add('FROM OM_1_2_Perechen_produkcii_na_sklade ');
ADOQUERY1.SQL.Add('WHERE [Tekushaya_data]>= #10/05/1990#
Выскакивает ошибка Access violation at adress 1B041FC6 in module msjet40.dll

Virtson
1) Adoconnection должен быть активным
2) [Tekushaya_data] пиши без [ ]
3) еще нужно группировать по полю, по которому суммируешь
GROUP BY ...
zetrix вне форума
Старый 01.11.2006, 15:22   #2
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

В проектируемой базе не могу выполнить запрос , где данные берутся из 2-х таблиц, в результате хотел бы вывести таблицу с 2-мя полями из 1-й таблицы и 1 поле из второй, но выскакивает ошибка.
Может для QUERY что-то в свойствах не так?
Вот код:
IF COMBOBOX1.ItemIndex=0 then
begin
query1.SQL.Add(' SELECT Avto.Инвентарный_номер, Avto.Марка, SUM( Azs.Выдано_литров * Fprice.ЦЕНА )');
query1.SQL.Add(' FROM "avto.DB" Avto');
query1.SQL.Add(' INNER JOIN "AZS.DB" Azs');
query1.SQL.Add(' ON (Avto.Инвентарный_номер = Azs.Инвентарный_номер)');
query1.SQL.Add(' INNER JOIN "Fprice.db" Fprice');
query1.SQL.Add(' ON (Azs.топливо = Fprice.топливо)');
query1.SQL.Add(' BY Avto.Инвентарный_номер, Avto.Марка');
end;
Nikola вне форума
Старый 02.11.2006, 08:41   #3
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

Цитата:
Сообщение от Nikola Посмотреть сообщение
query1.SQL.Add(' BY Avto.Инвентарный_номер, Avto.Марка');
end;
1)что это значит? может 'ORDER BY'..
2) нужно группировать ! если используешь SUM()
Берегите друг друга!
Virtson вне форума
Старый 05.11.2006, 15:53   #4
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Virtson Посмотреть сообщение
1)что это значит? может 'ORDER BY'..
2) нужно группировать ! если используешь SUM()
С этим разобрался, поместил в одну строчку, т е query1.text.sql.text:=' ' итд. и всё заработало, а в конце Group by, просто я недокопировал.
Nikola вне форума
Старый 05.11.2006, 16:13   #5
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

Ну вот, ещё одна проблема: теперь нужно из четырёх таблиц вывести одну. Таблицы такие:
1 avto.DB<Avto.Inv, Avto."Date", Avto.Cost, Avto.Marka>,
2 AZS.DB<Azs.Nvp, Azs.Inv, Azs.Fuel, Azs.Vl>,
3 Fprice.DB<Fprice.Fuel, Fprice.Price>,
4 remont.DB<Remont.Inv, Remont.Crack, Remont.Cost>
нужно сформировать:
<avto.inv,avto.marka,cost> , где cost - общие затраты на авто с инвентарным ном. avto.inv, которое получается путём суммирования затрат на топливо(sum(azs.vl*fprice.price)) , ремонт(remont.cost) и покупку(avto.cost).
Вот код моего запроса:
SELECT Avto.Inv, Avto.Marka, sum(azs.vl*fprice.price)+SUM(REMONT .COST)+AVTO.COST
FROM "avto.DB" Avto, "AZS.DB" Azs, "Fprice.DB" Fprice, "remont.DB" Remont
where avto.inv=azs.inv and avto.inv=remont.inv and azs.fuel=fprice.fuel
group by avto.inv, avto.marka

Но подсчитывает неправильно, проверил вручную, можно что-то исправить или добавить, как вы думаете?
Nikola вне форума
Старый 05.11.2006, 17:32   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Подмигивание ...

Цитата:
Сообщение от Nikola Посмотреть сообщение
Н
group by avto.inv, avto.marka

Но подсчитывает неправильно, проверил вручную, можно что-то исправить или добавить, как вы думаете?
затраты на топливо зависят, и от Inv номера, и от марки
группировка по marka лишьня возможно
Берегите друг друга!
Virtson вне форума
Старый 05.11.2006, 20:34   #7
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Virtson Посмотреть сообщение
затраты на топливо зависят, и от Inv номера, и от марки
группировка по marka лишьня возможно
Марка не мешает, проверил. Факт: если авто 1 раз заправился и 1 раз был на ремонте , то подсчитывается правильно
Nikola вне форума
Старый 05.11.2006, 21:14   #8
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
Лампочка

Цитата:
Сообщение от Nikola Посмотреть сообщение
Марка не мешает, проверил. Факт: если авто 1 раз заправился и 1 раз был на ремонте , то подсчитывается правильно
А если один из этих параметров нулевой, то программа начинает выдавать не тот ответ?
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 05.11.2006, 21:39   #9
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
А если один из этих параметров нулевой, то программа начинает выдавать не тот ответ?
Вообще в моей БД авто не может только ремонтироваться либо только заправляться. Но если это так, то расчет для авто не будет сделан. Но как тогда быть , если авто имеет только стоимость покупки?
Nikola вне форума
Старый 05.11.2006, 21:57   #10
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

пробуй перед просчетом суммы формировать запрос к базе по параметрам. проверять значение ячейки, если не нулевое, то к строке добавляем запрос на значение ячейки. в итоге получаем запрос к базе со строковой переменной, в которой нет нулевых параметров, итог: вычисление верно.
я так думаю.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Закрытая тема


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запросы SQL в Delphi antoni БД в Delphi 13 02.09.2008 00:53
Запросы к БД xDjarx БД в Delphi 6 14.05.2008 17:04
Многотабличные запросы! (модификация данных). MSSQL +Delphi MoGiLsHiKK БД в Delphi 1 25.12.2007 16:21
Запросы к БД H@Z@RD Общие вопросы Delphi 3 28.03.2007 01:39