Здравствуйте! При выборе сопоставляемого поля MySQL таблицы для параметра "Инструмент" доступны почему-то только типы: DATE, TIME, DATETIME. Все остальные доступные типы (TEXT, CHAR, VARCHAR) в выпадающем списке просто отсутствуют, хотя это самый что ни на есть TEXT. ЧЯДНТ?
AndyJOKER написал: Забыл указать: MySQL server version: 5.7.15 Protocol version: 10 Server charset: UTF-8 Unicode (utf8
Добрый день,
Дополнительно просьба сообщить версию рабочего места QUIK, а также прислать скриншот таблицы в MySQL, где были бы видны настроенные типы данных для полей "dat", "_dattim", "_timst", "_tim".
Еще одна проблема. Формат даты в MySQL по-умолчанию имеет вид 'YYYY-DD-MM', и, насколько мне известно изменить его нельзя. Т.е. работать приходится через:
Код
INS ERT IN TO `table` (`dat`) VALUES (STR_TO_DATE('13.12.2017','%d.%m.%Y'))
В обмене данными через ODBC не специалист, поэтому вопрос: самостоятельно руками в QUIK можно где-нибудь добавить для всех INSERT STR_TO_DATE или это всё hard-coded? Попутно просьба ткнуть носом где удалось подружить QLUA и MySQL - пока в качеств временного решения проблемы. Благодарю.
AndyJOKER написал: Еще одна проблема. Формат даты в MySQL по-умолчанию имеет вид 'YYYY-DD-MM', и, насколько мне известно изменить его нельзя. Т.е. работать приходится через:
Код
INS ERT IN TO `table` (`dat`) VALUES (STR_TO_DATE( '13.12.2017' ,'%d.%m.%Y'))
Средствами QUIK изменить формат даты к сожалению, нельзя. Вы можете сделать это с помощью функционала триггеров MySQL.
Цитата
AndyJOKER написал: В обмене данными через ODBC не специалист, поэтому вопрос: самостоятельно руками в QUIK можно где-нибудь добавить для всех INSERT STR_TO_DATE или это всё hard-coded? Попутно просьба ткнуть носом где удалось подружить QLUA и MySQL - пока в качеств временного решения проблемы.
К сожалению, информации по использованию QLUA в MySQL у нас нет. Для изменения формата даты рекомендуем воспользоваться функционалом триггеров в MySQL.
CREATE TRIGGER `trig` BEFORE INSERT ON `temp`
FOR EACH ROW BEGIN
INS ERT IN TO ticks (`tick_date`,`tick_time`,`tick_price`,`tick_val`) VALUES (NEW.dat, NEW.tim, NEW.price, NEW.val);
END
Ни так:
Код
CREATE TRIGGER `trig` BEFORE INSERT ON `temp`
FOR EACH ROW BEGIN
INS ERT IN TO ticks (`tick_date`,`tick_time`,`tick_price`,`tick_val`) VALUES (STR_TO_DATE(NEW.dat,'%d.%m.%Y'), NEW.tim, NEW.price, NEW.val);
END
Ни так:
Код
CREATE TRIGGER `trig` BEFORE INSERT ON `temp`
FOR EACH ROW BEGIN
INS ERT IN TO ticks (`tick_date`,`tick_time`,`tick_price`,`tick_val`) VALUES (DATE_FORMAT(NEW.dat,'%d.%m.%Y'), NEW.tim, NEW.price, NEW.val);
END
Ни так:
Код
CREATE TRIGGER `trig` BEFORE INSERT ON `temp`
FOR EACH ROW BEGIN
INS ERT IN TO ticks (`tick_date`,`tick_time`,`tick_price`,`tick_val`) VALUES (CONVERT(NEW.dat,DATE), NEW.tim, NEW.price, NEW.val);
END
Неужели я первый, кто выбрал связку QUIK -> ODBC -> MySQL...
Вторая проблема также решена. Пример для таблицы обезличенных сделок:
Код
CRE ATE TABLE `temp` (
`id` int(10) UNSIGNED NOT NULL,
`t_date` char(10) NOT NULL,
`t_time` time NOT NULL,
`t_price` decimal(6,2) UNSIGNED NOT NULL,
`t_val` int(11) NOT NULL,
`t_op` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CRE ATE TABLE `tick` (
`id` int(10) UNSIGNED NOT NULL,
`t_d` date NOT NULL,
`t_t` time NOT NULL,
`t_p` decimal(6,2) UNSIGNED NOT NULL,
`t_v` int(10) UNSIGNED NOT NULL,
`t_op` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Триггер:
Код
CREATE TRIGGER `temp` BEFORE INSERT ON `temp`
FOR EACH ROW BEGIN
INS ERT IN TO tick VALUES(NEW.id, STR_TO_DATE(NEW.t_date,'%d.%m.%Y'), NEW.t_time, NEW.t_price, NEW.t_val, NEW.t_op);
END