Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2016, 12:48   #1
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию Поменять формат даты.

По умолчанию в Delphi формат даты: дд.мм.гггг чч:мм:сс, мне нужно вставить дату в БД MYSql, а там дата такая, гггг.мм.дд чч:мм:сс.
Как мне привести в одинаковый вид эти даты? В Delphi есть какие-то функции, чтобы заменить порядок дня, месяца и года, чтобы тип остался DateTime? Или в MySql может можно как-то настроить вид даты?
edsjeka вне форума Ответить с цитированием
Старый 15.02.2016, 12:53   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,877
По умолчанию

Не надо менять форматы! При работе с БД надо использовать параметры.
northener на форуме Ответить с цитированием
Старый 15.02.2016, 12:58   #3
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

PHP код:
[PHPtoday:=Now;
 
DataModule1.SQLQuery1.Active:=false;
 
DataModule1.SQLQuery1.SQL.Text:='Insert Into Cartridgi (IDModelCartridga, Articul,'+
  
' IDKlienta, IDManagerPrin, DatePriema, IdStatusa, Komments) Values ('+IntToStr(md)+
  
', ''"'+art+'"'+', '+IntToStr(kl)+', '+IntToStr(pr)+', '+DateTimeToStr(today)+', "1",'+'"'+kom+'"'+')';
  
DataModule1.SQLQuery1.ExecSQL
[/PHP]

Как тут можно сделать, чтобы даты были совместимы?
edsjeka вне форума Ответить с цитированием
Старый 15.02.2016, 12:58   #4
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
Хорошо

Цитата:
Сообщение от northener Посмотреть сообщение
Не надо менять форматы! При работе с БД надо использовать параметры.
Угу

Либо присваивать к полям.
Дата имеет одинаковый вид везде по сути это вещественное число. до запятой количество дней до начала отсчета, после время если не ошибаюсь в мили секундах.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 15.02.2016, 13:01   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,877
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
после время если не ошибаюсь в мили секундах.
После время в "частях суток". Например час - 1/24 суток
northener на форуме Ответить с цитированием
Старый 15.02.2016, 13:21   #6
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
После время в "частях суток". Например час - 1/24 суток
Спасибо за исправление.

Вот тут есть пример запроса с параметром
вот он сам пример
Код:
begin
  Query1.DatabaseName:='DBDEMOS';
  Query1.SQL.Text:='select * from country.db where capital like :param1';
  Query1.Prepare;
  Query1.ParamByName('param1').AsString:='M%';
  Query1.Open;
end;
или
Код:
..............
Query1поле1.Value:=значение1;
Query1поле2.Value:=значение2;
........
Query1полеN.Value:=значениеN;
Query1.post;
..............
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 15.02.2016, 14:29   #7
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
Спасибо за исправление.

Вот тут есть пример запроса с параметром
вот он сам пример
Код:
begin
  Query1.DatabaseName:='DBDEMOS';
  Query1.SQL.Text:='select * from country.db where capital like :param1';
  Query1.Prepare;
  Query1.ParamByName('param1').AsString:='M%';
  Query1.Open;
end;
или
Код:
..............
Query1поле1.Value:=значение1;
Query1поле2.Value:=значение2;
........
Query1полеN.Value:=значениеN;
Query1.post;
..............

PHP код:
today:=Now;
  
DataModule1.SQLQuery1.FieldByName('DatePriema').Value:=today
Так почему-то тоже не получается. Ошибок никаких не выдается, но значение не меняется, как было по умолчанию, так и остается.
edsjeka вне форума Ответить с цитированием
Старый 15.02.2016, 14:40   #8
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

остальной код в студию.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 15.02.2016, 14:43   #9
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
остальной код в студию.
PHP код:
procedure TFMPriemLazKart.BitBtn1Click(SenderTObject);
var 
artkomstring;
    
maxidmdklprinteger;
    
todayTDateTime;
begin
 art
:=Edit1.Text;
 
DataModule1.SQLQuery1.Active:=false;
 
DataModule1.SQLQuery1.SQL.Text:='Select IDModelCartridga From SprModeleyCartridgey' +
 
' Where ModelCartridga = "'+ComboBox1.Text+'"';
 
DataModule1.SQLQuery1.Active:=true;
 
md:=DataModule1.SQLQuery1.FieldByName('IDModelCartridga').Value;

 
DataModule1.SQLQuery1.Active:=false;
 
DataModule1.SQLQuery1.SQL.Text:='Select IDKlienta From SprKlientov' +
 
' Where NameKlient = "'+ComboBox2.Text+'"';
 
DataModule1.SQLQuery1.Active:=true;
 
kl:=DataModule1.SQLQuery1.FieldByName('IDKlienta').Value;

 
DataModule1.SQLQuery1.Active:=false;
 
DataModule1.SQLQuery1.SQL.Text:='Select IDManager From SprManager' +
 
' Where Manager = "'+ComboBox3.Text+'"';
 
DataModule1.SQLQuery1.Active:=true;
 
pr:=DataModule1.SQLQuery1.FieldByName('IDManager').Value;

 
kom:=Memo1.Lines.Text;
 
today:=Now;
 
DataModule1.SQLQuery1.Active:=false;
 
DataModule1.SQLQuery1.SQL.Text:='Insert Into Cartridgi (IDModelCartridga, Articul,'+
  
' IDKlienta, IDManagerPrin, IdStatusa, Komments) Values ('+IntToStr(md)+
  
', ''"'+art+'"'+', '+IntToStr(kl)+', '+IntToStr(pr)+{', '+DateTimeToStrtoday+}', "1",'+'"'+kom+'"'+')';
  
DataModule1.SQLQuery1.ExecSQL;

  
DataModule1.SQLQuery1.Active:=false;
  
DataModule1.SQLQuery1.SQL.Text:='Select MAX(IDCartridga) AS MaxIdcartridga From Cartridgi';
  
DataModule1.SQLQuery1.Active:=true;
  
maxid:=DataModule1.SQLQuery1.FieldValues['MAXIDCartridga'];

  
DataModule1.SQLQuery1.Active:=false;
  
DataModule1.SQLQuery1.SQL.Text:='Select * From Cartridgi Where IDCartridga='+inttostr(maxid);
  
DataModule1.SQLQuery1.Active:=true;
  
today:=Now;
  
DataModule1.SQLQuery1.FieldByName('DatePriema').Value:=today;
{  
DataModule1.SQLQuery1.FieldValues['DatePriema']:=today;}
end
edsjeka вне форума Ответить с цитированием
Старый 15.02.2016, 15:30   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вам нужно при вставке использовать параметр, а не присваивать его полю датасета неизвестно зачем в конце...

сравните:
Код:
today:=Now; 
 DataModule1.SQLQuery1.Active:=false; 
 DataModule1.SQLQuery1.SQL.Text:='Insert Into Cartridgi (IDModelCartridga, Articul,'+ 
  ' IDKlienta, IDManagerPrin, IdStatusa, Komments) Values ('+IntToStr(md)+ 
  ', '+ '"'+art+'"'+', '+IntToStr(kl)+', '+IntToStr(pr)+', :mydate, "1",'+'"'+kom+'"'+')'; 
  DataModule1.SQLQuery1.Prepare;
  DataModule1.SQLQuery1.ParamByName('mydate').Value:=today;
  DataModule1.SQLQuery1.ExecSQL;
только мне сдаётся, что запрос неверный - количество указанных полей меньше, чем число значений в values.
например, в какое поле должна дата вставляться?!! похоже пропущено поле между IDManagerPrin, IdStatusa

p.s. остальные значения в запросе тоже неплохо бы заменить параметрами.

Последний раз редактировалось Serge_Bliznykov; 15.02.2016 в 15:33.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формат даты Polina_ Помощь студентам 1 20.12.2012 17:42
Формат даты. vlkr Microsoft Office Access 1 04.08.2012 23:43
Формат даты SergiOD Общие вопросы Delphi 5 09.03.2011 02:11
Формат даты Iskin Microsoft Office Excel 5 16.04.2009 14:49
Формат даты. IVANSour Общие вопросы Delphi 1 18.01.2009 15:36