![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запросы
dumka © (2007-11-27 09:13:00)Как в динамическом запросе извлечь из даты месяц и год. Ивсе это вставить или передать соответствующему полю.
Query3.aCTIVE:=False;
Query3.SQL.Clear;
Query3.SQL.Add('Insert into zarplat.db ');
Query3.SQL.Add('SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata) * 0.183)as Zarp');
Query3.SQL.Add('FROM "dogovor.DB" Dogovor ') ;
Query3.SQL.Add(' INNER JOIN "firma.DB" Firma ') ;
Query3.SQL.Add(' ON (Firma.Kod_firm = Dogovor.Nom_dogovora) ');
Query3.SQL.Add(' INNER JOIN "menedcher.DB" Menedcher ');
Query3.SQL.Add(' ON (Menedcher.Tabeln_nom = Dogovor.Tab_nom)');
Query3.SQL.Add(' INNER JOIN "prioritet.db" Prioritet ');
Query3.SQL.Add(' ON (Prioritet.Prioritet = Dogovor.Prioritet)');
Query3.SQL.Add('GROUP BY Menedcher.Tabeln_nom, Menedcher.FIO ');
Query3.ExecSQL;
table1.Close;
table1.Open;
Вот это работает. Нужно добавить в
Query3.SQL.Add('SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata) * 0.183)as Zarp');
Месяц и год.
dumka (2007-11-28 15:03:00) [1]Спасибо всем, я перегрелась.
Все работает!
dumka (2007-11-28 14:59:00) [2]
> Функции Month(Year)Of возвращают не строку. Почему ты со
> строкой числа складываешь?
Cм.
> [8]
Dennis I. Komarov (2007-11-28 13:48:00) [3]> [36] dumka (28.11.07 13:39)
Не верю!
> Query3.SQL.Add('SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif
> + Dogovor.Oplata) * 0.183)as Zarp,11,2007');
не может он выдать только два поля
> а как вместо 11, 2007
> подставить '+ (MonthOf(Date())) + ', ' +(YearOf(Date())
> )
> какой синтаксис?
Функции Month(Year)Of возвращают не строку. Почему ты со строкой числа складываешь?
dumka (2007-11-28 13:39:00) [4]
> Dennis I. Komarov
Select выдает в каждой строчке
Mes god
11 2007
11 2007
11 2007
dumka (2007-11-28 13:25:00) [5]О у меня прорыв, я изменила в структуре I на N в полях mes и god
и у меня получилось записать, но когда я подставляю числа.
Т.е.
Query3.SQL.Add('Insert into zarplat.DB ');
Query3.SQL.Add('SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata) * 0.183)as Zarp,11,2007');
Query3.SQL.Add('FROM "dogovor.DB" Dogovor ') ;
Query3.SQL.Add(' INNER JOIN "firma.DB" Firma ') ;
Query3.SQL.Add(' ON (Firma.Kod_firm = Dogovor.Nom_dogovora) ');
Query3.SQL.Add(' INNER JOIN "menedcher.DB" Menedcher ');
Query3.SQL.Add(' ON (Menedcher.Tabeln_nom = Dogovor.Tab_nom)');
Query3.SQL.Add(' INNER JOIN "prioritet.db" Prioritet ');
Query3.SQL.Add(' ON (Prioritet.Prioritet = Dogovor.Prioritet)');
Query3.SQL.Add('GROUP BY Menedcher.Tabeln_nom, Menedcher.FIO ');
а как вместо 11, 2007
подставить '+ (MonthOf(Date())) + ', ' +(YearOf(Date()))
какой синтаксис?
Dennis I. Komarov (2007-11-28 13:00:00) [6]Что конкретно выдает SELECT
1, 44, 55, ...... И Т.П.
dumka (2007-11-28 12:04:00) [7]zarplat.db
Tabeln_nom I
FIO A
Zarp N
Mes I
God I
А в SELECT, если указать 12,2007, то в отборе получаем числа, а при записи
в zarplat.db несовместимость откуда.
Anatoly Podgoretsky (2007-11-28 11:58:00) [8]
> Как только вставляю первой строкой
> Query3.SQL.Add('Insert into zarplat.DB ');
У тебя в zarplat.DB поля другого типа, чем возвращает 'SELECT
Dennis I. Komarov (2007-11-28 11:21:00) [9]У тебя несовместимость типов полей в таблице zarplat.db и результате SQL запроса
Опиши, какие поля в zarplat.db
и
что получается при "SELECT"
dumka (2007-11-28 11:17:00) [10]Провела массу эксперементов.
Подставила вместо Mеs и God: 12,2007
без Insert
Query3.SQL.Add('SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata) * 0.183)as Zarp,12,2007');
Query3.SQL.Add('FROM "dogovor.DB" Dogovor ') ;
Query3.SQL.Add(' INNER JOIN "firma.DB" Firma ') ;
Query3.SQL.Add(' ON (Firma.Kod_firm = Dogovor.Nom_dogovora) ');
Query3.SQL.Add(' INNER JOIN "menedcher.DB" Menedcher ');
Query3.SQL.Add(' ON (Menedcher.Tabeln_nom = Dogovor.Tab_nom)');
Query3.SQL.Add(' INNER JOIN "prioritet.db" Prioritet ');
Query3.SQL.Add(' ON (Prioritet.Prioritet = Dogovor.Prioritet)');
Query3.SQL.Add('GROUP BY Menedcher.Tabeln_nom, Menedcher.FIO ');
работает
Как только вставляю первой строкой
Query3.SQL.Add('Insert into zarplat.DB ');
в zarplat.DB Mes, God integer
он выдает
Type mismatch in expression
Ребят "поможите", очень нужно!!!
Anatoly Podgoretsky (2007-11-27 14:41:00) [11]> dumka (27.11.2007 13:05:26) [26]
Используй параметры
Anatoly Podgoretsky (2007-11-27 14:40:00) [12]> dumka (27.11.2007 12:24:24) [24]
Теперь + не хватает
Dennis I. Komarov (2007-11-27 13:07:00) [13]> [26] dumka (27.11.07 13:05)
Напиши запрос на SQLкоторый ты хочешь отправить
dumka (2007-11-27 13:05:00) [14]А он рабочий до того момента, как нужно добавить месяц и год.
'+ IntToStr(MonthOf(Date())) + ', ' + IntToStr(YearOf(Date()))
как эту строку записать без перевода в STR?
'+ (MonthOf(Date())) + ', ' +(YearOf(Date()))
Ну вот так или я ошибаюсь.
Dennis I. Komarov (2007-11-27 12:34:00) [15]SQL:
SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata) * 0.183)as Zarp,11as mes,2007
И это не считая отсутствия "+" при сложении строки
И Insert-а который сверху был.
Надо наверное сперва добиться рабочего SQL запроса.
dumka (2007-11-27 12:24:00) [16]Проблема в этой строке я запуталась в синтаксисе.
Query3.SQL.Add('SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata) * 0.183)as Zarp,'+(MonthOf(Date()))'as mes,'+(YearOf(Date())));
поскольку месяц и год числовие, то я изменила
> Query3.SQL.Add(
> 'SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata)
> * 0.183)as Zarp' +
> IntToStr(MonthOf(Date())) + ', ' + IntToStr(YearOf(Date()))
> );
Dennis I. Komarov (2007-11-27 12:18:00) [17]Давай выкладывай все что у тебя накопилось. А то это исправила, так и сделала и т.п. А как и чего...
dumka (2007-11-27 11:58:00) [18]Ошибка:
Invalid Use of keyword.
Date()))+
Dennis I. Komarov (2007-11-27 11:58:00) [19]> [20] dumka (27.11.07 11:53)
Чем же она проблемная? Помоему работает так как ей и положено.
dumka (2007-11-27 11:53:00) [20]
> IntToStr(MonthOf(Date())) + ', ' + IntToStr(YearOf(Date()))
В запросах функция Date почемуто проблемная и именно в Delphi. Как это обойти.