Текущий архив: 2006.11.26;
Скачать: CL | DM;
Вниз
Как к тексту запроса добавить переменную? Найти похожие ветки
← →
Gunek © (2006-11-06 23:46) [0]Добрый вечер мастера Delphi!
Такой вопрос: Возможно ли к значению поля из одной таблицы прибавить значение полей из других таблиц? Как?
Я попробовал вот так:for i:=1 to query1.recordcount do begin
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;
query2.First;
query1.SQL.Text:="select inv,marka,cost+""x"" from avto;";
query1.Next;
end;
end;
Но выскакивает ошибка при выполнении программы:query1: Cannot perform this operation on a closed dataset
← →
Percent (2006-11-06 23:53) [1]Оно у тебя работает? Сомневаюсь что-то.
Что ты хотел сказать этим:query1.SQL.Text:="select inv,marka,cost+""x"" from avto;";
query1.Next;
?
P.S. Форматирование текста нынче уже не в моде?
← →
MsGuns © (2006-11-06 23:55) [2]Вы написали какой-то чудовищный код, в котором чуднО переплелись и двойной цикл, и неверное понимание св-ва recordcount, и непонятно каким валенком приставленная модификация текста
Приведенное Вами сообщение бывает, если датасет, к которому была попытка обращения (например, recordcount), не был предварительно открыт (Open или Active := true)
← →
MsGuns © (2006-11-06 23:56) [3]>приставленная модификация текста
..SQL-запроса
← →
Gunek © (2006-11-07 00:01) [4]>Что ты хотел сказать этим:query1.SQL.Text:="select inv,marka,cost+""x"" from avto;";
query1.Next;
Этим я хотел сказать , что нужно к значению поля cost добавить значение некой переменной x.
>>приставленная модификация текста
>..SQL-запроса
c sql-запросом неправильно считает
← →
MsGuns © (2006-11-07 00:04) [5]Судя по вашему алгоритму, точнее тому, на что он тонко "намекает", Вы хотите посчитать для каждого inv (invoice - прих.накладная ?) сумму по фактуре.
Но это делается совсем простым запросом, а то, что делаете Вы - это попытка почесать свою пятку через интернет ;)))
← →
MsGuns © (2006-11-07 00:08) [6]Нет, похоже, что inv - это инвентарный номер. Учет основных средств - автомобилей ?
← →
Percent (2006-11-07 00:08) [7]Этим я хотел сказать , что нужно к значению поля cost добавить значение некой переменной x
Добавление происходит где-то на сервере?
У тебя получается
select inv,marka,cost+"x"
То есть, "x" - это литерал.
Но ты еще раз подумай насчет своего алгоритма.
Тщательно подумай.
← →
Gunek © (2006-11-07 00:09) [8]inv - подразумевается поле со значениями инвентарных номеров.
Посчитать я пытаюсь общую стоимость содержания автомобиля.
← →
Percent (2006-11-07 00:11) [9]1C: Автомастерская?
По крайней мере, алгоритм в духе...
← →
Gunek © (2006-11-07 00:15) [10]>Добавление происходит где-то на сервере?
нет.
>У тебя получается
>select inv,marka,cost+"x"
В этом и проблема. Как представить x , чтобы его значение прибавилось к значению поля в конкретной записи?
← →
Gunek © (2006-11-07 00:17) [11]>Нет, похоже, что inv - это инвентарный номер. Учет основных средств - автомобилей ?
Что -то вроде того.
← →
MsGuns © (2006-11-07 00:19) [12]for i:=1 to query1.recordcount do
begin // для КАЖДОЙ записи 1 НД
for j:=1 to query2.RecordCount do
begin // ВСЕ записи НД1 последовательно сравниваются с тек.зап. НД1
if query1.FieldByName("inv").AsInteger=query2.FieldByName("inv").AsInteger then
x:=x+query2.FieldByName("Стоимость").AsFloat; // Сумма всех "деталов"
query2.Next;
end;
// НД2 пересмотрен - в x лежит сумма всех деталов (связка по "inv")
query2.First; // В начало НД2
// Модификация запроса НД1, при этом в качестве имени поля со стоимостью вместо "Cost" пишется costx
query1.SQL.Text:="select inv,marka,cost+""x"" from avto;";
// Текст запроса изменен, но сам запрос не переокрыт - НД1 содержит те же записи, что и в начале цикла. Полная непонятка зачем это сделано ?
query1.Next; // Переход на следующую запись в том же самом НД1
end;
end;
А теперь объясните тАинство сего кода, будьте любезны. Куда Вы деваете с такими трудами посчитанную загадочную x, которую, кстати, не обнуляете при переходе на внешний цикл ?
А также , ЧТО это за загадочное поле costx, которое извлекается столько раз, сколько записей в НЕИЗМЕННОМ НД1 ?
← →
Percent (2006-11-07 00:20) [13]Какая-то дикая смесь странных запросов с сервера и обработок на стороне клиента.
Как представить x , чтобы его значение прибавилось к значению поля в конкретной записи?x := "120";
...("select inv,marka,cost + "x" as cost2 from avto");
Как-то так?
Какая СУБД?
← →
MsGuns © (2006-11-07 00:24) [14]>Gunek © (07.11.06 00:15) [10]
>В этом и проблема. Как представить x , чтобы его значение прибавилось к значению поля в конкретной записи?
Select T1.inv, T1.marka, T2.Sum(cost)
from Table1 T1 Left Join Table2 T2 on (T1.inv=T2.inv)
group by T1.inv, T1.marka
order by T1.inv
Рекомендую познакомиться с прекрасной и весьма покладистой дамой по имени Эскюль ;))
И подружиться
← →
Gunek © (2006-11-07 00:26) [15]x - переменная типа double. Её значение(т е стоимость обслуживания авто) должно прибавиться к значению стоимости покупки.
← →
Gunek © (2006-11-07 00:28) [16]>Какая СУБД?
Paradox7
← →
Percent (2006-11-07 00:31) [17]...("select inv,marka,cost + " + FloatToStr(x) + " as cost2 from avto");
← →
Percent (2006-11-07 00:31) [18]А лучше - через параметр.
← →
Gunek © (2006-11-07 00:31) [19]>Рекомендую познакомиться с прекрасной и весьма покладистой дамой по >имени Эскюль ;))
> И подружиться
Немного знаком.
С составлением запроса возникли трудности из-за каких-то особенностей Paradox"а в внутренних запросах.
← →
Ketmar © (2006-11-07 00:33) [20]offtopic: интересно, когда люди выучат простую правду: "paradox не умеет работать с SQL"?
← →
Германн © (2006-11-07 00:36) [21]
> Ketmar © (07.11.06 00:33) [20]
>
> offtopic: интересно, когда люди выучат простую правду: "paradox
> не умеет работать с SQL"?
Точнее так - paradox умеет работать только с "LocalSQL", но подробного описания последнего в природе не существует.
← →
Gunek © (2006-11-07 00:37) [22]По-прежнему выскакивает ошибка:
query1: Cannot perform this operation on a closed dataset
>paradox не умеет работать с SQL
А чем лучше пользоваться?
← →
Ketmar © (2006-11-07 00:37) [23]>[21] Германн(c) 7-Nov-2006, 00:36
неа. не так. вот так: "LocalSQL умеет работать с paradox". %-)
← →
Ketmar © (2006-11-07 00:38) [24]>[22] Gunek(c) 7-Nov-2006, 00:37
>А чем лучше пользоваться?
любой нормальной sql-базой. от FireBird до Oracle.
← →
Gunek © (2006-11-07 00:46) [25]>А лучше - через параметр.
Можно поподробней?
← →
Anatoly Podgoretsky © (2006-11-07 00:50) [26]> Германн (07.11.2006 0:36:21) [21]
> paradox умеет работать только с "LocalSQL", но подробного описания последнего в природе не существует.
А с Дельфи что поставляется
← →
Германн © (2006-11-07 00:51) [27]
> Gunek © (07.11.06 00:46) [25]
Ну чего ты сам паришься и други паришь сразу в двух ветках? От этого только хуже всем!
← →
Gunek © (2006-11-07 00:54) [28]О, чудо заработало!
Спасибо Вам , Мастера!
← →
Anatoly Podgoretsky © (2006-11-07 00:55) [29]> Gunek (07.11.2006 0:54:28) [28]
Молилась ли ты на ночь Дездемона?
← →
Gunek © (2006-11-07 01:00) [30]>Молилась ли ты на ночь Дездемона?
Не молилСЯ! А это обязательно?
← →
Германн © (2006-11-07 01:05) [31]
> Anatoly Podgoretsky © (07.11.06 00:50) [26]
>
> > Германн (07.11.2006 0:36:21) [21]
>
> > paradox умеет работать только с "LocalSQL", но подробного
> описания последнего в природе не существует.
>
> А с Дельфи что поставляется
Может я и не прав. Дело давнее. Когда-то с величайшим трудом смог найти решение с помощью JOIN. Вот сейчас просмотрел LocalSQL.hlp и нашёл ответы.
Но вообще, когда я писАл [21] больше довлели надо мной строки из документации по ранней Дельфи. Типа: "Приведённая документация - сокращённая. Полную версию можете получить вместе с PARADOX".
← →
Anatoly Podgoretsky © (2006-11-07 09:18) [32]> Gunek (07.11.2006 00:01:04) [4]
> Что ты хотел сказать этим:query1.SQL.Text:="select inv,marka,cost+""x"" from avto;";
query1.Next;
> Этим я хотел сказать , что нужно к значению поля cost добавить значение некой переменной x.
А добавил текст к запросу
← →
Anatoly Podgoretsky © (2006-11-07 09:20) [33]> Gunek (07.11.2006 00:15:10) [10]
>select inv,marka,cost+"x"
> В этом и проблема. Как представить x , чтобы его значение прибавилось к значению поля в конкретной записи?
SELECT ничего не прибавляет.
Скажи как такое получилось, что тебя допустили до компьютера и до программирования баз данных, у ваших начальников, что головы нет?
Страницы: 1 вся ветка
Текущий архив: 2006.11.26;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.036 c