Страница 1 из 1

Clarion Database Drivers

Добавлено: 05 Декабрь 2018, 0:00
Developer
Привет всем!

Для доступа к базам данных сервера 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 приложения?

Clarion Database Drivers

Добавлено: 05 Декабрь 2018, 11:35
kreator
Вериться с трудом. Уверен, что нет другого описания таблиц и их создания на основе этого описания?

Clarion Database Drivers

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

Clarion Database Drivers

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

Clarion Database Drivers

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

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

В Embed-ах таблицы не создаю :D

Clarion Database Drivers

Добавлено: 05 Декабрь 2018, 17:40
kreator
Не понял. Есть таблица в словаре. В неё поле типа Date. На сервере приложением создаётся эта таблица, у неё поле типа Double. А если в словаре у этого поля поменять тип на String, что будет на сервере?

Clarion Database Drivers

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

Clarion Database Drivers

Добавлено: 06 Декабрь 2018, 15:03
kreator
Попробую на выходных дома посмотреть. Но вообще странно как-то.

Clarion Database Drivers

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

Clarion Database Drivers

Добавлено: 09 Декабрь 2018, 14:42
kreator
Попробовал. Создал таблицу в словаре с полями разных типов и с опцией "Create". Приложение, созданное на основе этого словаря, создало на сервере эту таблицу. Без чудес. Поле типа "Date" стало полем типа "Date", поле типа "Real" стало "Double". Ну и другие соответственно ожиданиям. C10 не самой последней версии, SA12.
Всё-таки предлагаю разобраться с глобальными эмбедсами, раз грешите на них. Можно ещё вот что сделать. Явно, до этих глобальных эмбедсов создать таблицу. Или попробовать открыть эту таблицу, кажется таблица должна создастся при этом. Может где-то декларация таблицы меняется. Повторюсь - в чудеса не верю.

Clarion Database Drivers

Добавлено: 09 Декабрь 2018, 18:38
Developer
Kreator, спасибо за проделанную работу! :D

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

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

Clarion Database Drivers

Добавлено: 09 Декабрь 2018, 19:03
kreator
Если посмотреть help, то без потери точности bigint это decimal или pdecimal.

Clarion Database Drivers

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