Clarion Database Drivers

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 05 Декабрь 2018, 0:00

Привет всем!

Для доступа к базам данных сервера SAP Sybase SQL Anywhere IDE Clarion на основе шаблонов генерирует исходный код Clarion из данных словаря (Dictionery), в словаре выбран Clarion Driver SQLAnywhere, после успешной генерации и сборке приложения, самим приложением нормально создаются таблицы в базе данных сервера SAP Sybase SQL Anywhwere с типом данных столбца (Date Type) - "date", как и определено в словаре - "DATE" :D

Однако, когда я добавляю в Global Embeds свои данные (глобальные данные, ссылки на сторонние библиотеки, свои процедуры, функции) без изменений в словаре, моё вновь сгенерированное и собранное Clarion приложение в базе данных сервера SAP Sybase SQL Anywhere создаёт таблицу в базе данных сервера SAP Sybase SQL Anywhere с типом данных столбца (Date Type) - "double", хотя в словаре определён тип "DATE" :idied:

Для совместимости, при использовании баз данных SQL серверов, предпочтительнее использовать в столбцах таблиц SQL серверов стандартные SQL типы :D


В связи с этим вопрос, в чём может быть причина такого поведения Clarion приложения?
С Уважением, Developer

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion Database Drivers

Сообщение kreator » 05 Декабрь 2018, 11:35

Вериться с трудом. Уверен, что нет другого описания таблиц и их создания на основе этого описания?
We are hard at work… for you. :)

Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 05 Декабрь 2018, 16:35

kreator писал(а):
05 Декабрь 2018, 11:35
Вериться с трудом. Уверен, что нет другого описания таблиц и их создания на основе этого описания?
Заметил случайно. Само приложение работает нормально, и правильно отображает дату в зависимости от типа столбца и соответствует типу "определения" Clarion SQLAnywhere драйвера - "double" - тип даты Clarion, "date" - тип даты ISO 8601 YYYY-MM-DD :D
С Уважением, Developer

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion Database Drivers

Сообщение kreator » 05 Декабрь 2018, 17:15

Если на стороне сервака поле типа "double", то в Sybase Central Вы не увидите правильной информации. Но дело не в этом. Надо выяснить какой кусок в глобальных эмбедсах создаёт таблицу, несоответствующую описанию в словаре. Все таблицы с такими проблемами? Поменяйте в словаре поле с типом Date на, допустим, тип String. На сервере будет Double? Я в чудеса не верю.
We are hard at work… for you. :)

Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 05 Декабрь 2018, 17:35

kreator писал(а):
05 Декабрь 2018, 17:15
Если на стороне сервака поле типа "double", то в Sybase Central Вы не увидите правильной информации. Но дело не в этом. Надо выяснить какой кусок в глобальных эмбедсах создаёт таблицу, несоответствующую описанию в словаре. Все таблицы с такими проблемами? Поменяйте в словаре поле с типом Date на, допустим, тип String. На сервере будет Double? Я в чудеса не верю.

Все таблицы имеют столбцы в базах данных сервера SAP Sybase SQL Anywhere либо "double", либо "date" - одновременно двух типов нет :wink:

В Embed-ах таблицы не создаю :D
С Уважением, Developer

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion Database Drivers

Сообщение kreator » 05 Декабрь 2018, 17:40

Не понял. Есть таблица в словаре. В неё поле типа Date. На сервере приложением создаётся эта таблица, у неё поле типа Double. А если в словаре у этого поля поменять тип на String, что будет на сервере?
We are hard at work… for you. :)

Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 05 Декабрь 2018, 18:19

kreator писал(а):
05 Декабрь 2018, 17:40
Не понял. Есть таблица в словаре. В неё поле типа Date. На сервере приложением создаётся эта таблица, у неё поле типа Double. А если в словаре у этого поля поменять тип на String, что будет на сервере?
На сервере SAP Sybase SQL Anywhere в базе данных создалась таблица со столбцом типа "char" и дата в ней в формате "Clarion Date": 79596 - 01.12.2018
С Уважением, Developer

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion Database Drivers

Сообщение kreator » 06 Декабрь 2018, 15:03

Попробую на выходных дома посмотреть. Но вообще странно как-то.
We are hard at work… for you. :)

Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 06 Декабрь 2018, 19:09

kreator писал(а):
06 Декабрь 2018, 15:03
Попробую на выходных дома посмотреть. Но вообще странно как-то.
Kreator, спасибо за проявленный интерес и помощь :D
Для меня, такая ситуация пока непонятна :(
С Уважением, Developer

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion Database Drivers

Сообщение kreator » 09 Декабрь 2018, 14:42

Попробовал. Создал таблицу в словаре с полями разных типов и с опцией "Create". Приложение, созданное на основе этого словаря, создало на сервере эту таблицу. Без чудес. Поле типа "Date" стало полем типа "Date", поле типа "Real" стало "Double". Ну и другие соответственно ожиданиям. C10 не самой последней версии, SA12.
Всё-таки предлагаю разобраться с глобальными эмбедсами, раз грешите на них. Можно ещё вот что сделать. Явно, до этих глобальных эмбедсов создать таблицу. Или попробовать открыть эту таблицу, кажется таблица должна создастся при этом. Может где-то декларация таблицы меняется. Повторюсь - в чудеса не верю.
We are hard at work… for you. :)

Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 09 Декабрь 2018, 18:38

Kreator, спасибо за проделанную работу! :D

Как я и писал, без подключения Embed-ов, ситуация у меня аналогична.

Значит, дело в коде Embed-ов. Но так ведь не должно быть :wink:
С Уважением, Developer

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion Database Drivers

Сообщение kreator » 09 Декабрь 2018, 19:03

Если посмотреть help, то без потери точности bigint это decimal или pdecimal.
We are hard at work… for you. :)

Developer
Ветеран
Сообщения: 441
Зарегистрирован: 26 Март 2012, 16:18

Clarion Database Drivers

Сообщение Developer » 09 Декабрь 2018, 21:07

kreator писал(а):
09 Декабрь 2018, 19:03
Если посмотреть help, то без потери точности bigint это decimal или pdecimal.
Да, всё правильно, вот только как правильно декларировать в словаре (в исходном коде)?
- указываешь DECIMAL - и на сервере создаётся таблица со столбцом типа "decimal" - а надо "Bigint" :wink:
С Уважением, Developer

Ответить