Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.048 c
2-1195710167
Costy
2007-11-22 08:42
2007.12.23
Ускорения tClientSocket (tserverSocket)


2-1196249636
Alex_C
2007-11-28 14:33
2007.12.23
Вопрос по Canvas.TextOut


15-1194508857
TheEd
2007-11-08 11:00
2007.12.23
TDBNavComboBox - Написал компонент, кому надо - пишите!


15-1195569942
Stanislav_
2007-11-20 17:45
2007.12.23
Админу


2-1196189336
greengeneral
2007-11-27 21:48
2007.12.23
StringGrid в несколько строк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский