Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запросы


Страницы:   1 2

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. Как это обойти.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо