Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Clarion, Clarion 7

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

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

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

Привет всем!

Есть ли подробные примеры соответствия типов Clarion типам SQL серверов?

В частности - как правильно описать в Dictionery и исходном коде Clarion тип "bigint" в Microsoft SQL Server и SAP Sybase SQL Anywhere для создания таблицы, в которой будет создан столбец с типом "bigint" из приложения Clarion и возможна корректная работа со всеми Clarion Database Drivers (ODBC, MSSQL, SQLAnywhere, Oracle, SQLite, Scalable) :wink:

Пожалуйста, предложите больше конкретных примеров соответствия типов Clarion и SQL и соответствующей информации :D
С Уважением, Developer
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

Обнаружил ссылку - https://www.icetips.com/showarticle.php?articleid=146
но информация не совсем точна в действительности :(

bigint LONG - не работает :(

Код: Выделить всё

MSSQL              CLARION

datetime           TimeStamp structure
smalldatetime         "
timestamp             "
float              SREAL
real               REAL
decimal            DECIMAL
money               "
smallmoney          "
bigint             LONG
int                LONG
smallint           SHORT
tinyint            BYTE
bit                STRING(1)
sql_variant        STRING
ntext                "
text                 "
image                "
binary               "
uniqueidentifier   CSTRING(37)
nvarchar           STRING or CSTRING
nchar                "
varchar              "
char                 "
varbinary            "
С Уважением, Developer
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

Вот ещё одна ссылка https://clarionmag.jira.com/wiki/spaces ... quivalents

Вопрос: какой Clarion тип данных использовать для работы со столбцами в базах SQL серверов типа "bigint" с максимальным значением 9223372036854775807 (8 Bytes) для автоинкрементных полей с Primary Key :?:

Код: Выделить всё

David Harms
Последнее изменение Apr 26, 2013
Most of the C types are from Carl Barnes' excellent Clarion Magazine article Compiling C with the Clarion IDE, Part 1: It's Easier Than You Think.

*	pass by address - <omittable>
&	pass by address - required
[#]	Array, use DIM(#). The name of an array is actually a pointer to the first element of the array. So arrays tend to be passed by address even though you do not see an asterisk.
char, unsigned char, signed char	BYTE, but probably a string type
char *, char[]	CSTRING or STRING (need RAW). If the array has a dimension number it tends to be a fixed length string e.g. char Digest[16] is a STRING(16). A char * could be a *BYTE, but it is rare.
char **	
This is a pointer to a pointer. There's an example of this in John Taylor's ClarionMag article Embedding The SQLite Engine In Clarion Applications. The C parameter is char **errmsg and the Clarion parameter is a Long.

You need to declare two variables, a CString reference and a Long:

CStringRef &CString
CStringRefAddress Long

You pass in the CStringRefAddress variable to the function call. If it comes back as a non-zero value, you obtain the string this way:

CStringRef &= (CStringRefAddress)

If the pointer is to a string array you use a similar technique. From John Christ:

The value returned by the function is a pointer to the 1st (or in C, 0th) element of an array of pointers to strings.

You dereference the pointer to to the first element and that is a pointer to the first string.

You add 4 (in 32 bit code, 8 in 64 bit code which doesn't yet exist in the Clarion world) to the original pointer and you are now pointing to the second pointer.

Add 4 again, the third pointer, and so on.

When the derefenced pointer is zero, you've reached the end of the array.

struct	GROUP (need RAW)
unsigned short	USHORT
signed short, short	SHORT
int, signed int,

long, signed long,

signed

SIGNED or LONG - UNSIGNED is Equate(Long)

unsigned, unsigned long, unsigned int

ULONG - avoid using the ULONG type in Clarion. The object code created for ULONG math uses the decimal library, which is much slower than the code used for a LONG. The UNSIGNED type is equated to a LONG, which is preferable.
float	SREAL
double	REAL
void	Usually appears as a return type, indicating that nothing is returned.
void *	This is a pointer to something. Use a LONG or UNSIGNED.
С Уважением, Developer
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3130
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Дед Пахом »

Создай таблицу на сервере и импортируй в словарь, посмотри, какой тип данных драйвер ожидает.

А "9223372036854775807 " это сколько? сто тысяч триллионов. Записей в базе. Стесняюсь спросить, где ты работаешь.
С уважением, ДП
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

Дед Пахом писал(а): 10 Декабрь 2018, 2:20Создай таблицу на сервере и импортируй в словарь, посмотри, какой тип данных драйвер ожидает.

А "9223372036854775807 " это сколько? сто тысяч триллионов. Записей в базе. Стесняюсь спросить, где ты работаешь
Пробовал, не импортирует :(

Совместная работа со сторонней внешней большой SQL базой :mrgreen:
С Уважением, Developer
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение kreator »

Если сторонняя база, зачем создавать поле bigint? Мне сдаётся, что bigint сейчас неактуален. Поэтому не заморачиваются поддержкой в драйверах.
Тут надо понимать, что SQL первичней, чем Кларионовский словарь. Посмотри в хелпе "ODBC data types". И Скульных типов явно больше. Посмотри ещё раздел справки "Synchronizer Support for SQL Server 2008 Data Types". Вот навводили типов.
We are hard at work… for you. :)
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

Может кто в курсе, как объявить в Dictionery и Clarion коде создание базы данных и таблицы с ключевым полем (столбцом) типа "bigint" с автоинкрементным ключом IDENTITY для Microsoft SQL сервера, а также autoincrement и IDENTITY для SQL SAP Sybase SQL Anywhere :?:
С Уважением, Developer
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

kreator писал(а): 10 Декабрь 2018, 13:39Если сторонняя база, зачем создавать поле bigint? Мне сдаётся, что bigint сейчас неактуален. Поэтому не заморачиваются поддержкой в драйверах.
Тут надо понимать, что SQL первичней, чем Кларионовский словарь. Посмотри в хелпе "ODBC data types". И Скульных типов явно больше. Посмотри ещё раздел справки "Synchronizer Support for SQL Server 2008 Data Types". Вот навводили типов.
А что актуально - GUID в Primart Key?

Просто сначала сторонняя база а затем своя - аппетит заказчиков приходит во время работы :D
С Уважением, Developer
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

kreator писал(а): 10 Декабрь 2018, 13:39Посмотри ещё раздел справки "Synchronizer Support for SQL Server 2008 Data Types". Вот навводили типов
Kreator, спасибо за подсказку :D

Не в тему - почему-то у меня не работает синхронизация в Dictionery c SQL серверами или я неправильно что делаю?
С Уважением, Developer
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение kreator »

Я в таком случае написал бы скрипт и всё:

Код: Выделить всё

Examples:

SQLFile{PROP:SQL}='SELECT field1,field2 FROM table1'     |
          & 'WHERE field1 > (SELECT max(field1)'  |
          & 'FROM table2'                            !Returns a result set you 
                                                     ! get one row at a time
                                                     ! using NEXT(SQLFile)
SQLFile{PROP:SQL}='CALL GetRowsBetween(2,8)'          !Call stored procedure
SQLFile{PROP:SQL}='CREATE INDEX ON table1(field1 DESC)' !No result set
SQLFile{PROP:SQL}='GRANT SELECT ON mytable TO fred'   !DBA tasks
SQLString=SQLFile{PROP:SQL}                           !Get last SQL statement
We are hard at work… for you. :)
Developer
Ветеран
Сообщения: 551
Зарегистрирован: 26 Март 2012, 17:18

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Developer »

SQL скрипт это возможное решение - но тогда теряем преимущества Clarion Dictionery :wink:
С Уважением, Developer
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение kreator »

Developer писал(а): 10 Декабрь 2018, 14:29 SQL скрипт это возможное решение - но тогда теряем преимущества Clarion Dictionery :wink:
Ничего не теряем. Кларионовское приложение работает через словарь. И пусть работает! А, если какие-то вещи на SQL-сервере сделать проблематично, есть скрипты. Может быть я даже с Вами соглашусь, что и настройка полей в словаре должна быть гибче, и настройка индексов, и чтобы можно было триггеры создавать из словаря, и хранимки. Но это несбыточная мечта. Даже может быть специфика. Вы так работает, ещё может быть кто-то. А у других в основном другой сценарий.
И, может быть Вы не знаете, повторюсь. Для посылки SQL-запросов, не возвращающих данные, на сервер необязательно открытия таблиц (файлов). Можно скрипт по созданию объектов на серваке и т.д. выполнять в самом начале программы, не мешая работе уже написанного кода.
We are hard at work… for you. :)
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение ingasoftplus »

Вопрос. Как декларировать CSTRING в кларионе для типа NVARCHAR в MS SQL???

ну например для VARCHAR(n) все просто: CSTRING(n+1)

для NVARCHAR такое не проходит

кто знает формулу???

совет имортировать таблицу в словарь и типа Кларион сам подставит нужный тип - не подсказывать! Кларион сделал тупо CSTRING(n+1) что не есть правильно...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7314
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение Игорь Столяров »

Сам ни юзал, но есть ведь всякие расчётные таблички для расчёта длины STRING ...
И я не знаю насколько классная идея хранить UNICODE именно в CSTRING.
Или это не оно ? :(

cbcda0520814b88ce067f155dcd9030e.jpeg
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов

Сообщение ingasoftplus »

а эта табличка (картинка) - для клариона? или просто для sql? Похоже для SQL - ну так это и так понятно, инфо не секретная.

суть - что юзать в Кларионе???
Ответить