Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Вниз
Переменная в запросе Найти похожие ветки
← →
Gunek © (2006-11-07 16:13) [0]Здравствуйте, Мастера Delphi!
Возник очередной вопрос. Значение некой переменной x типа double нужно прибавить к значению поля cost типа number. Как это сделать?
Я пробую так:query1.SQL.Text:="select inv,marka,cost+"+floattostr(x)+" from avto;";
но прибавляется в каждой записи одно и тоже число.
← →
Сергей М. © (2006-11-07 16:17) [1]
> прибавляется в каждой записи одно и тоже число
Какое ты "прибавляешь", такое и "прибавляется". Чему ж тут удивляться ?
← →
Gunek © (2006-11-07 16:21) [2]А так правильно, как я пробую?
← →
Desdechado © (2006-11-07 16:21) [3]> но прибавляется в каждой записи одно и тоже число.
1. использовать параметры, а то нарвешься на непривычный десятичный разделитель и будет у тебя на один столбик больше
2. переменная-то у тебя одна, вот и прибавляется ее значение
← →
Сергей М. © (2006-11-07 16:24) [4]
> А так правильно, как я пробую?
А что ты "пробуешь"-то ?
задачу-то изначальную опиши подробно ..
← →
Gunek © (2006-11-07 16:26) [5]> переменная-то у тебя одна, вот и прибавляется ее значение
Переменная одна, каждый раз она обнуляется и затем берёт новые значенияfor i:=1 to query1.recordcount do begin
x:=0;
for j:=1 to query2.RecordCount do begin
if
query1.FieldByName("inv").AsInteger=query2.FieldByName("inv").AsInteger then
x:=x+query2.FieldByName("Стоимость").AsFloat;
query2.Next;
end;
for k:=1 to query4.RecordCount do begin
if
query1.FieldByName("inv").AsInteger=query4.FieldByName("inv").AsInteger then
x:=x+query4.FieldByName("Затраты").AsFloat;
query4.Next;
end;
query2.First;
query4.First;
query1.SQL.Text:="select inv,marka,cost+"+floattostr(x)+" from avto;";
query1.Close;
query1.Open;
query1.Next;
end;
end;
← →
Сергей М. © (2006-11-07 16:35) [6]var
s:String;
....
s := floattostr(x);
...
query1.SQL.Text:= "select inv,marka,cost+" + s + " from avto;"
← →
Gunek © (2006-11-07 16:43) [7]задачу-то изначальную опиши подробно ..
Нужно при совпадении в поле inv (сравнивая его знач. в табл. avto c значениями в табл. azs и remont) нарастить X(значения берутся из соотв. поля (типа number)). потом его значение вписать в поле cost табл. avto в соотв. по знач. inv записи.
← →
Desdechado © (2006-11-07 16:46) [8]Gunek © (07.11.06 16:43) [7]
Это делается в БД SQL-запросом модификации, а не хитрожелтыми манипуляциями на клиенте
← →
Gunek © (2006-11-07 16:47) [9]>s := floattostr(x);
>query1.SQL.Text:= "select inv,marka,cost+" + s + " from avto;"
Да нет, тоже самое получается.
← →
Gunek © (2006-11-07 16:48) [10]>Это делается в БД SQL-запросом модификации, а не хитрожелтыми >манипуляциями на клиенте
Да пробовал, но некая особенность Paradox помешала
← →
Сергей М. © (2006-11-07 16:51) [11]
> Да нет, тоже самое получается.
Что хотел, то и получается.
Что прибавил, то и получил.
← →
Gunek © (2006-11-07 18:35) [12]Без sql как это можно сделать?
Или как только при помощи sql?
← →
Правильный Вася (2006-11-07 18:40) [13]
> некая особенность Paradox помешала
да ну!? какая?
← →
Gunek © (2006-11-07 18:47) [14]>Дело в том, что для локальных БД типа Парадокс не работает неявное соединение вложенных запросов с основным запросом. Т.е. вложенные запросы выполняются один раз! Причём до начала обхода по внешнему запросу. А значит и условия вложенных запросов невыполнимы и всегда (в данном случае) будут давать NULL.
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
И в поле cost остаются пустые ячейки
← →
Плохиш © (2006-11-07 18:48) [15]
> Gunek © (07.11.06 18:35) [12]
Это что ли нада?
select a.inv, a.marka, a.cost +
(select SUM(Стоимость) from query2 where inv=a.inv) +
(select SUM(Затраты) from query4 where inv=a.inv)
from avto a
← →
Плохиш © (2006-11-07 18:51) [16]
> Gunek © (07.11.06 18:47) [14]
Ну значит тебе не повезло.
Создаёшь вычисляемое поле и в событии OnCalcFields делаешь всё, что хочешь.
← →
Gunek © (2006-11-07 18:58) [17]>Плохиш © (07.11.06 18:48) [15]
Что-то вроде этого, только чтобы работало.
← →
Плохиш © (2006-11-07 19:01) [18]
> Gunek © (07.11.06 18:58) [17]
[16]
← →
Gunek © (2006-11-07 19:01) [19]Создаёшь вычисляемое поле и в событии OnCalcFields делаешь всё, что хочешь.
Можно чуть поподробней?
← →
Плохиш © (2006-11-07 19:07) [20]http://www.yandex.ru/yandsearch?stype=&nl=0&text=delphi+%E2%FB%F7%E8%F1%EB%FF%E5%EC%FB%E5+%EF%EE%EB%FF
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c