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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.11.2006, 22:29   #11
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
Вопрос

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
пробуй перед просчетом суммы формировать запрос к базе по параметрам. проверять значение ячейки, если не нулевое, то к строке добавляем запрос на значение ячейки. в итоге получаем запрос к базе со строковой переменной, в которой нет нулевых параметров
я так думаю.
Здесь возникли проблемы с написанием кода
Nikola вне форума
Старый 05.11.2006, 22:47   #12
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Цитата:
Сообщение от Nikola Посмотреть сообщение
Здесь возникли проблемы с написанием кода
А в чем собственно проблема?
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 05.11.2006, 23:02   #13
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
А в чем собственно проблема?
перед просчетом суммы формировать запрос к базе по параметрам. проверять значение ячейки, если не нулевое, то к строке добавляем запрос на значение ячейки
Nikola вне форума
Старый 05.11.2006, 23:29   #14
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

S:=' SELECT Avto.Inv, Avto.Marka, AVTO.COST'

with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT Auto.inv, Azs.inv');
SQL.Add('FROM "avto.DB" Avto, "AZS.DB" Azs');
SQL.Add('WHERE');
SQL.Add('(Azs.Inv = Auto.inv)');
SQL.Add('ORDER BY Inv');
Open;
end;
if Query1.RecordCount <> 0 then S:=S+ '+sum(azs.vl*fprice.price)';

И продолжай в том же дуже.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 06.11.2006, 00:06   #15
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
Лампочка

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
S:=' SELECT Avto.Inv, Avto.Marka, AVTO.COST'
...
if Query1.RecordCount <> 0 then S:=S+ '+sum(azs.vl*fprice.price)';
Хорошая идея,SuperVisor, но непонятно , что провярять выражением "if Query1.RecordCount <> 0"? А как тогда отобразятся записи, где авто имеет только расходы, связанные с его покупкой? Если recordcout =0 , то
s не изменится и нарушится структура таблицы.
Nikola вне форума
Старый 06.11.2006, 09:13   #16
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Здесь нужно приписать пару строк...
SQL.Add('FROM "avto.DB" Avto, "AZS.DB" Azs');
SQL.Add('WHERE');
SQL.Add('(Auto.inv = '+*твоя переменная*')');
SQL.Add('WHERE');
SQL.Add('(Azs.Inv = Auto.inv)');
SQL.Add('ORDER BY Inv');

Тогда Query1.RecordCount будет проверять существование в базе Azs номера твоей машины - если такового нет, то он просто не будет суммировать нулевой параметр - первоисточник проблемы в расчетах.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 06.11.2006, 13:44   #17
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
Печаль

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Здесь нужно приписать пару строк...
Что-то я не разберусь. Вот ещё одну идею подбросили

SELECT
Avto.Inv,
Avto.Marka,
AVTO.COST +
(SELECT sum(azs.vl*fprice.price) FROM azs, fprice
WHERE avto.inv=azs.inv and azs.fuel=fprice.fuel) +
(SELECT SUM(REMONT.COST) FROM remont WHERE avto.inv=remont.inv)
FROM avto

Но в столбце общих затрат ячейки пустые
Nikola вне форума
Старый 06.11.2006, 14:01   #18
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

а не проще сначала брать значения из таблиц, а потом ими оперировать: код будет больше, зато понятней и на скорости я думаю это не отобразится.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 06.11.2006, 14:08   #19
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
По умолчанию

ну да, пожалуй проще.

Query2.SQL.Text:=('SELECT Azs.Inv, sum (azs.vl*fprice.price) as Стоимость FROM "azs.DB" Azs, "Fprice.DB" Fprice where azs.fuel=fprice.fuel group by azs.inv');
query4.SQL.Text:='select inv,sum(cost) from remont group by inv;';
query1.SQL.Text:='select inv,marka,cost from avto;';
for i:=1 to query1.recordcount do begin
query1.Close;
for j:=1 to query2.RecordCount do begin
if
query1.FieldByName('inv').AsInteger =query2.FieldByName('inv').AsIntege r then
cost:=cost+query2.FieldByName('Стои мость').AsFloat;
query2.Next;
end;
query2.First;
query1.SQL.Text:='select inv,marka,cost+'''cost''' from avto;';
query1.Next;
end;
...хотя возникла проблема в последней строке с +cost.

Последний раз редактировалось Nikola; 06.11.2006 в 21:27.
Nikola вне форума
Старый 06.11.2006, 22:00   #20
Nikola
Пользователь
 
Регистрация: 01.11.2006
Сообщений: 22
Вопрос

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
...*твоя переменная*...
А для чего здесь символы * *?
Nikola вне форума
Закрытая тема


Купить рекламу на форуме - 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