Форум: "Начинающим";
Текущий архив: 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