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

Вниз

Преобразование дат: гггг-мм-дд и дд-мм-гггг.   Найти похожие ветки 

 
Chery   (2004-11-29 13:39) [0]

Формат поля в БД объявлен как DateTime в формате гггг-мм-дд (MySQL), а делфи воспринимает дату в дд-мм-гггг. Как мне преобразовать дату из Делфи, чтобы ее можно было записать в базу ф формате гггг-мм-дд.


 
IceBeerg ©   (2004-11-29 13:54) [1]

function FormatDateTime(const Format: string; DateTime: TDateTime): string;
+HELP


 
Брат   (2004-11-29 13:55) [2]

ShortDateFormat:="yyyy.mm.dd";


 
Chery   (2004-11-29 14:31) [3]

Я че-то не совсем понял.FormatDateTime возвращает же строку.
Я пробую так:
clPrikaz_Student.FieldByName("Dte_Prikaza").AsDateTime:=2004-09-20; Но оно все равно пытается преобразовать в дд.мм.гггг.


 
simpson ©   (2004-11-29 14:33) [4]

> FieldByName("Dte_Prikaza").AsDateTime:=2004-09-20;

Ужас.
См. в хэлпе описание типа TDateTime.


 
Anatoly Podgoretsky ©   (2004-11-29 14:48) [5]

Chery   (29.11.04 14:31) [3]
Это означает 2004 - 09 - 20; = 1975


 
Chery   (2004-11-29 14:59) [6]

тоесть, clPrikaz_Student.FieldByName("Dte_Prikaza").AsVariant:="2004.09.20";


 
simpson ©   (2004-11-29 15:20) [7]

> Chery   (29.11.04 14:59) [6]
> FieldByName("Dte_Prikaza").AsVariant:="2004.09.20";

Во-первых, не нужно работать через AsVariant - это медленне, чем через тот же AsDateTime. Во-вторых, не путай формат, в котором хранятся данные, и формат, в котором они отображаются - это разные вещи.

Откуда берется записываемое в базу значение даты?


 
Chery   (2004-11-29 16:03) [8]

Пользователь сам вводит в ДВГрид, в удобном для нас формате дд.мм.гггг..


 
simpson ©   (2004-11-29 16:13) [9]

Ты случаем не с аналогом TTable работаешь?


 
Chery   (2004-11-29 16:45) [10]

Что-то мне уже страшно...
Мидас: ClientDataSet1.
На сервере Query и Provider


 
simpson ©   (2004-11-29 16:53) [11]

А в чем, собственно, трудность? Если уж так необходимо редактирование in-place, то, насколько я знаю, стандартный VCL-ный грид принимает дату в формате текущих региональных настроек системы, преобразует его к TDateTime и таким образом его передает связанному датасету.

А где тогда встречается это:

clPrikaz_Student.FieldByName("Dte_Prikaza").AsDateTime:=2004-09-20;


 
Chery   (2004-11-29 17:10) [12]

Да нигде не встречается, это я уже пробовал задавать явно\
clPrikaz_Student.FieldByName("Dte_Prikaza").AsVariant:="2004.11.11"; И наблюдал, как оно ее воспринимает как 11.11.2004 (Системный формат). Но я ставил системный формат yyyy-MM-dd. И вроде все воспринимает. Но Результат не удовлетворительный. Оно не хочет записывать в базу.


 
Chery   (2004-11-29 17:15) [13]

Ой, стоп, просто я тот же вопрос задавал в разделе БД. И там все сводилось к вопросу, указанному в теме. Теперь я вижу, что проблема в другом.


 
Chery   (2004-11-29 17:17) [14]

У меня не хочет записывать в базу из-за Даты. Ставлю дату в Null - записывает. Как не задаю - не записывает. И формат в МуСКЛ - DateTime. Но не хочет.


 
simpson ©   (2004-11-29 17:22) [15]

Код показывай.


 
Chery   (2004-11-29 18:48) [16]

Да какой тут код: ДБГрид, DataSource1, ClientDataSet1.
После Пост делаю апдейт: clPrikaz_Student.ApplyUpdates(-1);
На сервере вставляю:
insert into Prikaz_Student
 (Kod_Stud, N_Prikaza, Dte_Prikaza, Kod_Prikaza)
values
 (:Kod_Stud, :N_Prikaza, :Dte_Prikaza, :Kod_Prikaza)

Не работает (не добавляет), но когда в BeforePost пишу
clPrikaz_Student.FieldByName("Dte_Prikaza").AsVariant:=Null;
То работает. Формат поля даты в базе DATETIME. СУБД: MySQL5, драйвер MyODBC-3.51.10.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.045 c
3-1099469147
Sergy Ivanec
2004-11-03 11:05
2004.12.12
Interbase, проблема с большим числом записей


14-1101187794
Tramadol
2004-11-23 08:29
2004.12.12
Лесь Подеревлянский


3-1100012001
Bless
2004-11-09 17:53
2004.12.12
Как убрать эту удаленную запись из рекордсета


1-1101839603
Ищущий ответ
2004-11-30 21:33
2004.12.12
Почему не работает код?


1-1101634029
AdmeraL.
2004-11-28 12:27
2004.12.12
Dialogs





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский