powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с датой MySQL + Delphi
25 сообщений из 25, страница 1 из 1
Проблемы с датой MySQL + Delphi
    #32390210
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблемы с датой MySQL + Delphi
    #32390465
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хоть кто-нибудь, что - нибудь
...
Рейтинг: 0 / 0
Проблемы с датой MySQL + Delphi
    #32390487
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чичас - освобожусь...

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

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

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

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

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

дает ошибку синтаксиса
Нет я так думаю ошибка в формате данных (кто-то из них его не понимает, скорее всего сам сервер), но где указать этот формат, чтобы он пришел в согласованность?
...
Рейтинг: 0 / 0
Проблемы с датой MySQL + Delphi
    #32390625
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мы имеем из доки по 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
Проблемы с датой MySQL + Delphi
    #32390681
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а могу я как-то переворачивать в запросе
...
Рейтинг: 0 / 0
Проблемы с датой MySQL + Delphi
    #32390701
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо попробовать через переменную. Конвертнуть 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
Проблемы с датой MySQL + Delphi
    #32390938
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не спасает, та же ошибка, еще есть варианты?
...
Рейтинг: 0 / 0
Проблемы с датой MySQL + Delphi
    #32391109
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а для теста попробуй так

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


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

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

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

mahoune
...
Рейтинг: 0 / 0
Проблемы с датой MySQL + Delphi
    #32392638
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь делать
"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
Проблемы с датой MySQL + Delphi
    #32392658
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пытаюсь в форме указать '2004.01.01' пишет <is not a valid date>,что за баги такие?
...
Рейтинг: 0 / 0
Проблемы с датой MySQL + Delphi
    #32392706
pag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mahoune

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


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

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

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

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

например:

{Unit SysUtils}

var
myDate : TDate;
strDate : String;

.....

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

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


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