Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Запросы   Найти похожие ветки 

 
dumka   (2007-11-27 09:13) [0]

Как в динамическом запросе извлечь из даты месяц и год. Ивсе это вставить или передать соответствующему полю.
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");
Месяц и год.


 
ЮЮ ©   (2007-11-27 09:17) [1]

> Нужно добавить Месяц и год.


Какой? Ведь у тебя группировка по  BY Menedcher.Tabeln_nom, Menedcher.FIO


 
Johnmen ©   (2007-11-27 09:24) [2]


> Вот это работает.

Да ну?


 
dumka   (2007-11-27 09:25) [3]

Да я согласна. Но.
В конечном результате нужно добавить месяц и год в зарплатную таблицу при добавлении записей.


 
ЮЮ ©   (2007-11-27 09:31) [4]

> нужно добавить месяц и год в зарплатную таблицу

месяц и год даты какой записи? из таблицы Dogovor? А если там их несколько? Всё-равно какой? Максимальной? А в следующем месяце опязь будешь "начислять зарплату" за эту запись?

З.Ы. Из твоей структуры только тебе понятно, что к чеиу.


 
dumka   (2007-11-27 09:50) [5]


> месяц и год даты какой записи? из таблицы Dogovor?

Дата нужна не из договора, а системная.
Т.е. Группируя данные из нескольких таблиц я записываю их в зарлатную таблицу и вот приетом нужно добавить к Табельному номеру, ФИО и Заппл, месяц, год.
Я так делала в ACCESSE применяя функции: Month (Date), Year (Date)


 
dumka   (2007-11-27 09:56) [6]


> ЮЮ


> из таблицы Dogovor? А если там их несколько? Всё-равно какой?

Все договора, если они не просрочены оплачиваются каждый месяц, сумма по договору делится на равные доли.


 
megabyte ©   (2007-11-27 10:07) [7]

Тебе с клиента добавлять или с сервера?
Если с клиента, то используй стандартные функции для выделения года, месяца. Системная дата - встроенная переменная Date.
Если на сервере, то все зависит от СУБД.


 
ЮЮ ©   (2007-11-27 10:08) [8]

> Я так делала в ACCESSE применяя функции: Month (Date), Year
> (Date)

В Paradox-e (BDE) нет Date.

Просто передавай с клинта (добавь в запрос)

Query3.SQL.Add(
 "SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata)  * 0.183)as Zarp" +
 IntToStr(MonthOf(Date())) + ", " + IntToStr(YearOf(Date()))
);

P.S. Cудя по синтаксису
 Insert into zarplat.db SELECT ...
в таблице нет полей для месяца и года.


 
dumka   (2007-11-27 10:12) [9]


> megabyte

Клиентская БД.
Вот в цикле я знаю как, в запросе?


 
dumka   (2007-11-27 10:13) [10]


> P.S. Cудя по синтаксису
>  Insert into zarplat.db SELECT ...
> в таблице нет полей для месяца и года.

Сейчас будут...
Да я их убрала на время отладки.


 
ЮЮ ©   (2007-11-27 10:21) [11]

Кроме полей в секции SELECT можно указывать и константы  

Select Field1, Field2, 2, "коммент" from Table


 
dumka   (2007-11-27 10:36) [12]


> ЮЮ

Я знаю, вот в данной конструкции
> "SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata)
>  * 0.183)as Zarp" +
>  IntToStr(MonthOf(Date())) + ", " + IntToStr(YearOf(Date()))
> );

MonthOf возвращет какой тип.


 
ЮЮ ©   (2007-11-27 10:41) [13]

Returns the month of the year represented by a TDateTime value.

Unit

DateUtils

Category

datetime routines

Delphi syntax:

function MonthOf(const AValue: TDateTime): Word;


F1 отказала?


 
dumka   (2007-11-27 10:43) [14]


> Query3.SQL.Add(
>  "SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata)
>  * 0.183)as Zarp" +
>  IntToStr(MonthOf(Date())) + ", " + IntToStr(YearOf(Date()))
> );

Я так сделала, но что не так с функцией MonthOf
Undeclared identifier:MonthOf


 
dumka   (2007-11-27 10:45) [15]


> F1 отказала?

Нет, иногда глазам своим не верю


 
ЮЮ ©   (2007-11-27 10:52) [16]

Returns the month of the year represented by a TDateTime value.

Unit

DateUtils


Category

datetime routines

Delphi syntax:

function MonthOf(const AValue: TDateTime): Word;


Выделенное говорит какой модуль надо подключить в uses, когда воземкает > Undeclared identifier


 
Anatoly Podgoretsky ©   (2007-11-27 11:28) [17]

C чего ты решил что есть сервер?
Я думаю, что у нее Парадокс.


 
Anatoly Podgoretsky ©   (2007-11-27 11:30) [18]


> Я так сделала, но что не так с функцией MonthOf

После исправления ошибки, получишь следующие, у тебя запятых не хватает.


 
dumka   (2007-11-27 11:35) [19]


> После исправления ошибки, получишь следующие, у тебя запятых
> не хватает.

Запятые я расставила и модуль я подключила, что-то еще.


 
dumka   (2007-11-27 11:53) [20]


> IntToStr(MonthOf(Date())) + ", " + IntToStr(YearOf(Date()))

В запросах функция Date почемуто проблемная и именно в Delphi. Как это обойти.


 
Dennis I. Komarov ©   (2007-11-27 11:58) [21]

> [20] dumka   (27.11.07 11:53)

Чем же она проблемная? Помоему работает так как ей и положено.


 
dumka   (2007-11-27 11:58) [22]

Ошибка:
Invalid Use of keyword.
Date()))+


 
Dennis I. Komarov ©   (2007-11-27 12:18) [23]

Давай выкладывай все что у тебя накопилось. А то это исправила, так и сделала и т.п. А как и чего...


 
dumka   (2007-11-27 12:24) [24]

Проблема в этой строке я запуталась в синтаксисе.
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:34) [25]

SQL:
SELECT Tabeln_nom,FIO,SUM((Prioritet.Tarif + Dogovor.Oplata)  * 0.183)as Zarp,11as mes,2007
И это не считая отсутствия "+" при сложении строки
И Insert-а который сверху был.

Надо наверное сперва добиться рабочего SQL запроса.


 
dumka   (2007-11-27 13:05) [26]

А он рабочий до того момента, как нужно добавить месяц и год.
"+  IntToStr(MonthOf(Date())) + ", " + IntToStr(YearOf(Date()))
как эту строку записать без перевода в STR?

"+  (MonthOf(Date())) + ", " +(YearOf(Date()))
Ну вот так или я ошибаюсь.


 
Dennis I. Komarov ©   (2007-11-27 13:07) [27]

> [26] dumka   (27.11.07 13:05)

Напиши запрос на SQL который ты хочешь отправить


 
Anatoly Podgoretsky ©   (2007-11-27 14:40) [28]

> dumka  (27.11.2007 12:24:24)  [24]

Теперь + не хватает


 
Anatoly Podgoretsky ©   (2007-11-27 14:41) [29]

> dumka  (27.11.2007 13:05:26)  [26]

Используй параметры


 
dumka   (2007-11-28 11:17) [30]

Провела массу эксперементов.
Подставила вместо 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
Ребят "поможите", очень нужно!!!


 
Dennis I. Komarov ©   (2007-11-28 11:21) [31]

У тебя несовместимость типов полей в таблице zarplat.db и результате SQL запроса

Опиши, какие поля в zarplat.db
и
что получается при "SELECT"


 
Anatoly Podgoretsky ©   (2007-11-28 11:58) [32]


> Как только вставляю первой строкой
> Query3.SQL.Add("Insert into zarplat.DB ");

У тебя в zarplat.DB поля другого типа, чем возвращает "SELECT


 
dumka   (2007-11-28 12:04) [33]

zarplat.db
Tabeln_nom   I
FIO              A
Zarp             N
Mes              I
God              I
А в SELECT, если указать 12,2007, то в отборе получаем числа, а при записи
в zarplat.db несовместимость откуда.


 
Dennis I. Komarov ©   (2007-11-28 13:00) [34]

Что конкретно выдает SELECT
1, 44, 55, ...... И Т.П.


 
dumka   (2007-11-28 13:25) [35]

О у меня прорыв, я изменила в структуре 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()))
какой синтаксис?


 
dumka   (2007-11-28 13:39) [36]


> Dennis I. Komarov

Select выдает в каждой строчке
Mes     god
11       2007
11       2007
11       2007


 
Dennis I. Komarov ©   (2007-11-28 13:48) [37]

> [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 14:59) [38]


> Функции Month(Year)Of возвращают не строку. Почему ты со
> строкой числа складываешь?


Cм.
> [8]


 
dumka   (2007-11-28 15:03) [39]

Спасибо всем, я перегрелась.
Все работает!



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.019 c
2-1196581120
Новый
2007-12-02 10:38
2007.12.23
конвертация DBF -> Oracle


8-1171369194
bav123
2007-02-13 15:19
2007.12.23
Есть ли примеры графической консоли или как ее лючше написать?


4-1180815593
Arexander
2007-06-03 00:19
2007.12.23
Консоль на форме в PageControl. Как задать координаты размещения?


1-1191421712
ggg
2007-10-03 18:28
2007.12.23
Недостаточно памяти для обработки команды.


15-1195794262
Бакук
2007-11-23 08:04
2007.12.23
IIS 6.0 для XP