Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 10.3 + FireDAC + MySQL / 25 сообщений из 28, страница 1 из 2
07.11.2020, 23:06
    #40016260
Delphi 10.3 + FireDAC + MySQL
Всем привет!

Подскажите пожалуйста, каким образом сделать своё приложение не зависящее от локальных региональных настроек? У меня они сейчас в винде в формате dd.mm.yyyy и всё работает корректно с БД MySQL. Ну тут наверняка автоматически конвертит её FireDac для MySQL в формат yyyy-mm-dd, но это не важно, главное, что работает. Но у меня в программе так же заполняются ещё и контролы с датой и времени и вот в них и проблема, если поменять формат в региональных настройках. Команда не работает:

Код: pascal
1.
Application.UpdateFormatSettings := False;



Видимо в новой версии Delphi что-то поменялось в этом плане.
...
Рейтинг: 0 / 0
07.11.2020, 23:13
    #40016261
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг,

Поменял название темы, но админ видимо ещё не одобрил.
...
Рейтинг: 0 / 0
07.11.2020, 23:38
    #40016264
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
Но у меня в программе так же заполняются ещё и контролы с датой и времени и вот в них и проблема

Никому не говорите какие контролы ведут себя неправильно.
У всех есть Хрустальный Шар, и все должны и так это угадать
...
Рейтинг: 0 / 0
08.11.2020, 00:02
    #40016267
Delphi 10.3 + FireDAC + MySQL
DimaBr
Евгений Стронг
Но у меня в программе так же заполняются ещё и контролы с датой и времени и вот в них и проблема

Никому не говорите какие контролы ведут себя неправильно.
У всех есть Хрустальный Шар, и все должны и так это угадать


А с чего вы взяли, что они ведут себя не правильно? Они перенимают региональные настройки пользователя. Мне же необходимо, чтобы приложение на них не реагировало и использовались свои внутренние. Можно конечно перед вставкой конвертировать дату в нужный формат, но вот чтобы не заниматься этим я и ищу способ выключить на это реакцию. А контрол любой, работающий с датой и временем.
...
Рейтинг: 0 / 0
08.11.2020, 01:10
    #40016269
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений СтронгМне же необходимо, чтобы приложение на них не реагировало

А пользователю, который эти настройки установил, они нужны именно такими. Если вашей
программе они не нравятся - это её проблемы, надо её исправлять.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.11.2020, 01:54
    #40016277
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг,
вот тут есть разные переменные - http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/!!VARIABLES_SysUtils.html - меняй на здоровье!
...
Рейтинг: 0 / 0
08.11.2020, 01:58
    #40016280
Delphi 10.3 + FireDAC + MySQL
Dimitry Sibiryakov

Евгений СтронгМне же необходимо, чтобы приложение на них не реагировало

А пользователю, который эти настройки установил, они нужны именно такими. Если вашей
программе они не нравятся - это её проблемы, надо её исправлять.


Тоже верно. У меня просто при запуске контролы заполняются:

Код: pascal
1.
2.
frmMAIN.dtFromStat.Value := StrToDateTime(DateToStr(Now - 1) + '00:00:00');
frmMAIN.dtToStat.Value := StrToDateTime(DateToStr(Now) + '23:59:59');



И вот в момент заполнения ругается на формат, если его предварительно изменить в региональных настройках. У самого то контрола маска стоит - DD/MM/YYYY HH:NN:SS по умолчанию.

Тут тогда два варианта: 1. Вообще не заполнять его. 2. Узнавать формат даты+время, менять формат контрола и тогда присваивать. Может ещё какой-то есть совет? Поделись опытом плиз.
...
Рейтинг: 0 / 0
08.11.2020, 02:01
    #40016281
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Dimitry Sibiryakov

Евгений СтронгМне же необходимо, чтобы приложение на них не реагировало

А пользователю, который эти настройки установил, они нужны именно такими. Если вашей
программе они не нравятся - это её проблемы, надо её исправлять.

Не. Пользователи, (э..."российские") которые что-то соображают в настройках даты, на 100% смогут работать, если дата будет всегда дд.мм.гггг. А те ламеры, у кого "вдруг сломались настройки" - просто будут офигевать от "гггг/мм/дд", и начнут доставать разработчиков, проверено миллион раз.

Форматы надо прибивать гвоздями. Конечно, если у тебя приложение не интернациональное.
...
Рейтинг: 0 / 0
08.11.2020, 02:07
    #40016282
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
Всем привет!

Подскажите пожалуйста, каким образом сделать своё приложение не зависящее от локальных региональных настроек? У меня они сейчас в винде в формате dd.mm.yyyy и всё работает корректно с БД MySQL. Ну тут наверняка автоматически конвертит её FireDac для MySQL в формат yyyy-mm-dd, но это не важно, главное, что работает. Но у меня в программе так же заполняются ещё и контролы с датой и времени и вот в них и проблема, если поменять формат в региональных настройках. Команда не работает:

Код: pascal
1.
Application.UpdateFormatSettings := False;



Видимо в новой версии Delphi что-то поменялось в этом плане.


Application.UpdateFormatSettings и Application.UpdateMetricSettings надо в false ещё, вроде бы.
...
Рейтинг: 0 / 0
08.11.2020, 02:11
    #40016283
Delphi 10.3 + FireDAC + MySQL
ъъъъъ
Евгений Стронг
Всем привет!

Подскажите пожалуйста, каким образом сделать своё приложение не зависящее от локальных региональных настроек? У меня они сейчас в винде в формате dd.mm.yyyy и всё работает корректно с БД MySQL. Ну тут наверняка автоматически конвертит её FireDac для MySQL в формат yyyy-mm-dd, но это не важно, главное, что работает. Но у меня в программе так же заполняются ещё и контролы с датой и времени и вот в них и проблема, если поменять формат в региональных настройках. Команда не работает:

Код: pascal
1.
Application.UpdateFormatSettings := False;



Видимо в новой версии Delphi что-то поменялось в этом плане.


Application.UpdateFormatSettings и Application.UpdateMetricSettings надо в false ещё, вроде бы.


Я тебя понял. Спасибо за подсказку. Я на сколько выяснил, ему не нравится, что я прибавляю время. Тогда формат получается некорректный. То есть вот так вполне работает с любым форматом:

Код: pascal
1.
2.
  frmMAIN.dtFromStat.Value := StrToDateTime(DateToStr(Now - 1));
  frmMAIN.dtToStat.Value := StrToDateTime(DateToStr(Now));
...
Рейтинг: 0 / 0
08.11.2020, 02:12
    #40016284
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг,

у дев-экспр форматы хранятся в своих настройках, может, ты что-то там трогал? cxFormatController ...
...
Рейтинг: 0 / 0
08.11.2020, 02:13
    #40016285
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
Можно конечно перед вставкой конвертировать дату в нужный формат, но вот чтобы не заниматься этим я и ищу способ выключить на это реакцию. А контрол любой, работающий с датой и временем.
Перед началом действий с данными (после коннекта к БД) надо выставлять локаль на сервере для конкретного соединения. Тогда MySQL будет отдавать результат с уже отформатированными данными, которые должны совпадать с форматом на клиенте.
...
Рейтинг: 0 / 0
08.11.2020, 02:19
    #40016286
Delphi 10.3 + FireDAC + MySQL
Gluck99
Евгений Стронг
Можно конечно перед вставкой конвертировать дату в нужный формат, но вот чтобы не заниматься этим я и ищу способ выключить на это реакцию. А контрол любой, работающий с датой и временем.
Перед началом действий с данными (после коннекта к БД) надо выставлять локаль на сервере для конкретного соединения. Тогда MySQL будет отдавать результат с уже отформатированными данными, которые должны совпадать с форматом на клиенте.


Я использую Ehlib. Тут и TDBDateTimeEditEh и TDBGridEh всё красиво показывают, в зависимости от региональных настроек. Просто не стоит клеить так время, как я это делал. Ну или может как-то это делать по-другому.
...
Рейтинг: 0 / 0
08.11.2020, 02:34
    #40016287
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
ъъъъъ
Форматы надо прибивать гвоздями. Конечно, если у тебя приложение не интернациональное.
+1
...
Рейтинг: 0 / 0
08.11.2020, 12:41
    #40016309
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг

Код: pascal
1.
2.
  frmMAIN.dtFromStat.Value := StrToDateTime(DateToStr(Now - 1));
  frmMAIN.dtToStat.Value := StrToDateTime(DateToStr(Now));


А вот так оно не понимает?..
Код: pascal
1.
2.
  frmMAIN.dtFromStat.Value := Date - 1;
  frmMAIN.dtToStat.Value := Date;


Или там Value не Variant? Может тогда есть свойство типа TDateTime?
...
Рейтинг: 0 / 0
08.11.2020, 13:18
    #40016314
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
конвертит её FireDac для MySQL в формат yyyy-mm-dd,


Я так понимаю, что проблема при сохранении данных в базу?
Я советую использовать параметры

Код: pascal
1.
2.
3.
Query1.FieldByName('DT').AsDateTime := dtDate1.Date;
или
Query1.ParamByName('DT').AsDateTime := dtDate1.Date;
...
Рейтинг: 0 / 0
08.11.2020, 13:19
    #40016315
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
И вот в момент заполнения ругается на формат,


И главное - никогда не сообщай текст ошибки.
Пусть форумчане все ломают голову
...
Рейтинг: 0 / 0
08.11.2020, 13:23
    #40016316
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
Код: pascal
1.
'00:00:00'



Евгений Стронг
Код: pascal
1.
'23:59:59'



1. Твоя проблема в том, что ты не знаешь, что дата и время - это не текст, а число с плавающей точкой, где дата до точки, а время поле точки. Почитай об этом.

2. Для конвертирования, указания, получения даты, времени и т.д. лучше использовать числа, а не текст. а еще лучше - исспользовать готовые функции из модуля DateUtils
http://docwiki.embarcadero.com/CodeExamples/Sydney/en/DateUtils_(Delphi)
http://delphibasics.ru/navdateutils.php
...
Рейтинг: 0 / 0
08.11.2020, 13:29
    #40016318
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений СтронгУ меня просто при запуске контролы заполняются:

Только последний нуб будет формировать дату-время через строку. Открой для себя функции
работы с датой-временем: http://www.delphibasics.co.uk/ByFunction.asp?Main=DatesAndTimes
Код: sql
1.
2.
frmMAIN.dtFromStat.Value := Yesterday();
frmMAIN.dtToStat.Value := IncSecond(Tomorrow(), -1);


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.11.2020, 21:23
    #40016377
Delphi 10.3 + FireDAC + MySQL
X11
Евгений Стронг
конвертит её FireDac для MySQL в формат yyyy-mm-dd,


Я так понимаю, что проблема при сохранении данных в базу?
Я советую использовать параметры

Код: pascal
1.
2.
3.
Query1.FieldByName('DT').AsDateTime := dtDate1.Date;
или
Query1.ParamByName('DT').AsDateTime := dtDate1.Date;



Нет, в БД я передаю параметрами и там всё красиво. Тут просто смысл был в том, что на форме есть дата "с" и "по" и вот чтобы они не были пустыми по умолчанию и заполнены по принципу с сегодняшнего дня 00:00:00 и до завтрашнего 23:59:59. Для удобства использования и не более.

Спасибо.
...
Рейтинг: 0 / 0
08.11.2020, 21:27
    #40016378
Delphi 10.3 + FireDAC + MySQL
Dimitry Sibiryakov

Евгений СтронгУ меня просто при запуске контролы заполняются:

Только последний нуб будет формировать дату-время через строку. Открой для себя функции
работы с датой-временем: http://www.delphibasics.co.uk/ByFunction.asp?Main=DatesAndTimes
Код: sql
1.
2.
frmMAIN.dtFromStat.Value := Yesterday();
frmMAIN.dtToStat.Value := IncSecond(Tomorrow(), -1);




Ничего себе нуб. Любой школьник функцию готовую может нагуглить. А ты попробуй сам сделай. Вот она - высшая школа. Ну а так спасибо конечно. Я их и и использовал ранее, до того, как поменял на компоненты TDBDateTimeEditEh. Компонент умеет сразу и дату, и время показывать и менять в одном поле. А когда до этого растаскивал по двум контролам дату и время, то пользовался функциями. Не знаю, почему тут так извращался. Но функция хорошо зашла, без проблем. Благодарю.
...
Рейтинг: 0 / 0
08.11.2020, 23:06
    #40016383
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений СтронгА ты попробуй сам сделай. Вот она - высшая школа.

Да. И ты с этой школой полностью облажался. Поэтому не выпендривайся и в дальнейшем гугль
готовые функции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.11.2020, 23:46
    #40016386
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Код: pascal
1.
IncSecond(Tomorrow(), -1)



А потом люди будут удивляться, почему у них данные за последнюю секунду дня пропадают.
...
Рейтинг: 0 / 0
09.11.2020, 00:46
    #40016394
sql2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi 10.3 + FireDAC + MySQL
Евгений Стронг
Dimitry Sibiryakov

пропущено...

А пользователю, который эти настройки установил, они нужны именно такими. Если вашей
программе они не нравятся - это её проблемы, надо её исправлять.


Тоже верно. У меня просто при запуске контролы заполняются:

Код: pascal
1.
2.
frmMAIN.dtFromStat.Value := StrToDateTime(DateToStr(Now - 1) + '00:00:00');
frmMAIN.dtToStat.Value := StrToDateTime(DateToStr(Now) + '23:59:59');



И вот в момент заполнения ругается на формат, если его предварительно изменить в региональных настройках. У самого то контрола маска стоит - DD/MM/YYYY HH:NN:SS по умолчанию.

Тут тогда два варианта: 1. Вообще не заполнять его. 2. Узнавать формат даты+время, менять формат контрола и тогда присваивать. Может ещё какой-то есть совет? Поделись опытом плиз.


в маске контрола есть пробел, ты его не заметил, "программно формируя строку для Value" ?
...
Рейтинг: 0 / 0
10.11.2020, 11:44
    #40016765
Delphi 10.3 + FireDAC + MySQL
rgreat
Код: pascal
1.
IncSecond(Tomorrow(), -1)



А потом люди будут удивляться, почему у них данные за последнюю секунду дня пропадают.


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


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