Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с датой MySQL + Delphi / 25 сообщений из 25, страница 1 из 1
28.01.2004, 10:48
    #32390210
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Win2000, MySQL version 4.0.12-max-nt, ODBC driver 3.51, Delphi 6.0

Использую в Delphi связку TUpdateSQL->TDataSetProvider->TClientDataSet->TDataSource->TDBEdit.
TUpdateSQL->ModifySQL =
"update tabz
set
dataz = :data_Zakaz,
where
id = :OLD_id"

Ввожу дату в TBEdit (тип поля в MySQL - date, дата вводится в формате 01.01.2004) и при выполнении функции TClientDataSet.ApplyUpdates(0) вылетает ошибка "Project raised exeption class EDBEngineError with message 'Operation not applicable.'. Process stopped. Use Step or Run to continue." и дальше еще одну "Project raised exeption class EDBEngineError with message 'Unable to find record. No key specified'. Process stopped. Use Step or Run to continue.".
Дальше в TClientDataSet дата меняется но на сервере в таблице дата остается прежней.
При update поле с другим типом данных, кроме date и datetime проблем не возникает.
В BDE->Configuration->Drivers->ODBC->MySQL ODBC 3.51 Driver->LANGDRIVER = "Pdox ANSI Cyrillic",
BDE->Configuration->System->Formats->Date->SEPARETOR = ".", BDE->Configuration->System->Formats->Date->MODE = 0.

Перепробовал уже все варианты, что мог, но дату так и не могу что вставить что заапдейтить.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
28.01.2004, 12:17
    #32390465
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Ну хоть кто-нибудь, что - нибудь
...
Рейтинг: 0 / 0
28.01.2004, 12:25
    #32390487
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Чичас - освобожусь...

mahoune
...
Рейтинг: 0 / 0
28.01.2004, 12:31
    #32390496
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
mahoune

спасибо и то легче стало :-)
...
Рейтинг: 0 / 0
28.01.2004, 13:04
    #32390569
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Может попробовть так:
TUpdateSQL->ModifySQL =
"update tabz
set
dataz = ' :data_Zakaz ' ,
where
id = :OLD_id"

Добавить апострофы?

mahoune
...
Рейтинг: 0 / 0
28.01.2004, 13:11
    #32390589
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Может попробовть так:
TUpdateSQL->ModifySQL =
"update tabz
set
dataz = ':data_Zakaz',
where
id = :OLD_id"

Добавить апострофы?

дает ошибку синтаксиса
Нет я так думаю ошибка в формате данных (кто-то из них его не понимает, скорее всего сам сервер), но где указать этот формат, чтобы он пришел в согласованность?
...
Рейтинг: 0 / 0
28.01.2004, 13:31
    #32390625
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Что мы имеем из доки по MySQL:
DATE
A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format, but allows you to assign values to DATE columns using either strings or numbers. See section 11.2.2 The DATETIME, DATE, and TIMESTAMP Types .

Так что попробуй представить данные в формате: YYYY-MM-DD

mahoune
...
Рейтинг: 0 / 0
28.01.2004, 13:54
    #32390681
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
а могу я как-то переворачивать в запросе
...
Рейтинг: 0 / 0
28.01.2004, 14:02
    #32390701
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Надо попробовать через переменную. Конвертнуть DATE в CHAR(10) поменять местами и запихнуть в таблицу... или даже:
Код: plaintext
1.
2.
3.
4.
5.
update tabz 
set 
dataz = CONCAT(RIGHT(':data_Zakaz', 4 ),'-',MID(':data_Zakaz', 4 , 2 ),'-',LEFT(':data_Zakaz', 2 ))
where 
id = :OLD_id
mahoune
...
Рейтинг: 0 / 0
28.01.2004, 15:05
    #32390938
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
не спасает, та же ошибка, еще есть варианты?
...
Рейтинг: 0 / 0
28.01.2004, 16:07
    #32391109
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
а для теста попробуй так

"update tabz set
dataz = '01/01/2004 00:00:00' , А это кто такой ? запятая всмусле
where
id = :OLD_id"


____
...
Рейтинг: 0 / 0
28.01.2004, 16:59
    #32391235
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
JibSkeart
запятой ошибся я малехо, ненужна она , а остальное счас потестирую
...
Рейтинг: 0 / 0
28.01.2004, 17:15
    #32391288
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
а для теста попробуй так

"update tabz set
dataz = '01/01/2004 00:00:00' , А это кто такой ? запятая всмусле
where
id = :OLD_id"

попробовал - на сервер записал '20-01-2001' , токо пробовал я '01-01-2004'
у меня тип date
...
Рейтинг: 0 / 0
28.01.2004, 18:41
    #32391457
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
больше нету вариантов ?
...
Рейтинг: 0 / 0
29.01.2004, 10:24
    #32391856
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
А ты попробуй в текстовое поле а не в поле даты вставить передаваемое значение - посмотрим какое оно приходит на MySQL.

mahoune
...
Рейтинг: 0 / 0
29.01.2004, 17:10
    #32392638
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Пытаюсь делать
"update tabz
set
data_text = :data_Zakaz
where
id = :OLD_id"

где data_text varchar(100), все равно ошибка та же, а если
"update tabz
set
data_text = :data_text
where
id = :OLD_id"

проходит без ошибок и текст апдейтит в таблице :-(
...
Рейтинг: 0 / 0
29.01.2004, 17:23
    #32392658
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
пытаюсь в форме указать '2004.01.01' пишет <is not a valid date>,что за баги такие?
...
Рейтинг: 0 / 0
29.01.2004, 17:51
    #32392706
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
mahoune

ты где занят? А то я вспотел уже над этим багом :-)
...
Рейтинг: 0 / 0
29.01.2004, 18:48
    #32392810
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
елы-палы скачал myodbc-2.50.39-nt и с ним все нормально, или я дурак али лыжи не едут. Зачем же ламать то что раньше работало, может я ODBC че-то не так сделал?
...
Рейтинг: 0 / 0
29.01.2004, 23:21
    #32392945
Ape
Ape
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Это ошибка точно не MySQL. Может ODBC а может и нет.

Тип DATE используется для величин с информацией только о дате, без части, содержащей время. MySQL извлекает и выводит величины DATE в формате 'YYYY-MM-DD'. Поддерживается диапазон величин от '1000-01-01' до '9999-12-31'.

Недопустимые значения величин DATETIME, DATE или TIMESTAMP преобразуются в значение ``ноль'' соответствующего типа величин ('0000-00-00 00:00:00', '0000-00-00', или 00000000000000).

http://www.mysql.com/doc/ru/DATETIME.html

Судя по документации, даже если на сервер пришли неверные данные, он не выдаст ошибки. Просто запишет в базу нулевые значения. Ошибка где то между Delphi и ODBC.

А вообще, MySQL и ODBC это неправильное решение. Даже dbExpress лучше при всей его глюкавости.
...
Рейтинг: 0 / 0
30.01.2004, 09:52
    #32393129
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Это ошибка точно не MySQL. Может ODBC а может и нет.


Э то я понял, я не понял лишь почему со старой версией ODBC все заработало, а с новой нет, может я при настройке Алиаса чет-то недоуказал :( , или это баг новой версии ODBC. Тогда плохо - че же я обновляться теперь не смогу.

А вообще, MySQL и ODBC это неправильное решение. Даже dbExpress лучше при всей его глюкавости.

Над этим я подумаю, хотя проэкт уже практически полностью готов (много переделывать прийдется). А окромя dbExpress есть че-то еще чтоб не платное было ?
...
Рейтинг: 0 / 0
30.01.2004, 11:30
    #32393350
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
dbExpress - он же платный для MySQL, а ничего free-ного нету?
...
Рейтинг: 0 / 0
30.01.2004, 13:34
    #32393640
black_stone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
Я тоже вначале мучился с такой фигней. Но потом просто написал функцию на Делфи, которая переводит дату в формат yyyy-mm-dd и в запросы уже подставлял дату в таком формате.

Может у кого есть более красивое решение - подскажите, буду очень признателен.
...
Рейтинг: 0 / 0
30.01.2004, 14:00
    #32393706
pag
pag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
dbExpress - он же платный для MySQL, а ничего free-ного нету?
...
Рейтинг: 0 / 0
09.02.2004, 01:10
    #32402025
Snik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с датой MySQL + Delphi
На самом деле в делфи есть стандартная функция которая приводит
дату к тому виду который вам нужен в текстовом формате

например:

{Unit SysUtils}

var
myDate : TDate;
strDate : String;

.....

strDate:=FormatDateTime('yyyy-mm-dd',myDate);

.....
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с датой MySQL + Delphi / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]