Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Количество месяцев между двумя датами, Количество месяцев между двумя датами 
V
    Опции темы
ihtiandr
Дата 29.1.2012, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



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

Код

Form1->ADOQuery1->Close(); Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("UPDATE  Obsh SET kolmes= DATEDIFF(month,'" + DateTimePicker2->DateTime + "','" + DateTimePicker1->DateTime + "',month)");
Form1->ADOQuery1->ExecSQL();
     

в результате выходит ошибка
"параметр month не имеет значений по умолчанию"

потом изменил на это:

Код

Form1->ADOQuery1->Close(); Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("UPDATE  Obsh SET kolmes= MONTHS BETWEEN('" + DateTimePicker2->DateTime + "','" + DateTimePicker1->DateTime + "')");
Form1->ADOQuery1->ExecSQL();
     
выходит ошибка синтаксиса (запятая).
PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Код

Form1->ADOQuery1->SQL->Add("UPDATE  Obsh SET kolmes= DATEDIFF("m",'" + DateTimePicker2->DateTime + "','" + DateTimePicker1->DateTime");



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 29.1.2012, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг
я использовал ваш запрос он не компилируется а сразу выдаёт ошибки
[C++ Error] Unit1.cpp(1241): E2121 Function call missing )
[C++ Error] Unit1.cpp(1241): E2380 Unterminated string or character constant

PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



ihtiandr, ну расставь скобочки и кавычки как надо.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 29.1.2012, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг
Код

Form1->ADOQuery1->SQL->Add("UPDATE  Obsh SET kolmes= DATEDIFF( "m",'" + DateTimePicker2->DateTime + "','" + DateTimePicker1->DateTime + "')");

так вроде все ковычки правильно стоят  smile 
я и так пробовал написать
 
Код


Form1->ADOQuery1->SQL->Add("UPDATE  Obsh SET kolmes= DATEDIFF( '" m "','" + DateTimePicker2->DateTime + "','" + DateTimePicker1->DateTime + "')");


таже ошибка

Это сообщение отредактировал(а) ihtiandr - 29.1.2012, 11:12
PM MAIL   Вверх
ihtiandr
Дата 29.1.2012, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг
Код

Form1->ADOQuery1->SQL->Add("UPDATE  Obsh SET kolmes= DATEDIFF((m),'" + DateTimePicker2->DateTime + "','" + DateTimePicker1->DateTime + "')");


вот так запустился но во время исполнения опять выходит ошибка

"параметр m не имеет значений по умолчанию"
PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



"UPDATE  Obsh SET kolmes= DATEDIFF("+char(34)+"m"+char(34)+","+ DateTimePicker2->DateTime + "," + DateTimePicker1->DateTime + ")";



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 29.1.2012, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг
Цитата

"UPDATE  Obsh SET kolmes= DATEDIFF("+char(34)+"m"+char(34)+","+ DateTimePicker2->DateTime + "," + DateTimePicker1->DateTime + ")";


не компилируется

[C++ Error] Unit1.cpp(1241): E2085 Invalid pointer addition
PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Вообще пиши лучше на Дельфи - там таких проблем не было и нет. smile 

Код

 String kav=char(34);
...
"UPDATE  Obsh SET kolmes= DATEDIFF("+kav+"m"+kav+","+ DateTimePicker2->DateTime + "," + DateTimePicker1->DateTime + ")";




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 29.1.2012, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



 Данкинг

Код

String kav=char(34);
...
"UPDATE  Obsh SET kolmes= DATEDIFF("+kav+"m"+kav+","+ DateTimePicker2->DateTime + "," + DateTimePicker1->DateTime + ")";


запустилось только при выполнении
"Неправильно определён объект Parameter. Предоставлены не совместимые или не полные сведения."

Цитата

Вообще пиши лучше на Дельфи - там таких проблем не было и нет.
  
я просто уже всё на с++ написал а вот с этим запросом проблемы появились   smile 
PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Так это уже ошибка СУБД, по всей вероятности.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 29.1.2012, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг
так DATEDIFF должен возвращать интовые значения а поле kolmes у меня как раз целочисленное
а СУБД у меня Access
PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(ihtiandr @  29.1.2012,  20:01 Найти цитируемый пост)
так DATEDIFF должен возвращать интовые значения а поле kolmes у меня как раз целочисленное

А в чём разница между Integer и целочисленным? smile 
Цитата(ihtiandr @  29.1.2012,  20:01 Найти цитируемый пост)
а СУБД у меня Access 

Вот и посмотри, в каком виде там должна быть представлена дата. И вообще для простоты лучше сделать запрос с параметрами, а не как сейчас.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 29.1.2012, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг

Цитата


Вот и посмотри, в каком виде там должна быть представлена дата. И вообще для простоты лучше сделать запрос с параметрами, а не как сейчас.


Но зачем здесь запрос с параметрами и как его использвать если он только для выбора записей например как 
Between #01.01.98# And #31.12.98#
или
LIKE "*" & [Введите продукты, содержащие выражение] & "*"
PM MAIL   Вверх
Данкинг
Дата 29.1.2012, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(ihtiandr @  29.1.2012,  21:00 Найти цитируемый пост)
Но зачем здесь запрос с параметрами

Чтобы не громоздить строку из переменных и кавычек.
Цитата(ihtiandr @  29.1.2012,  21:00 Найти цитируемый пост)
и как его использвать если он только для выбора записей например как 

Как обычно использовать. При чём здесь выбор записей?
Цитата(ihtiandr @  29.1.2012,  21:00 Найти цитируемый пост)
#01.01.98#

Вот-вот, как-то так должна выглядеть дата в Access'е. А из DateTimePicker дата к тому же ещё и со временем возвращается.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1044 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.