Подскажите по работе с MSSQL из Clarion 5EE

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
alex881
Посетитель
Сообщения: 42
Зарегистрирован: 08 Апрель 2015, 19:31
Откуда: Оренбург

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение alex881 »

Пытался в лоб перевести приложение с топспидовских таблиц в MSSQL, шаблоны стандартные, не ABC. Ничего хорошего не вышло, browse еще худо бедно показывает данные, а вот в форме подымаются данные только в тех полях, которые описаны в browse, остальные - пустые.
И добавление/удаление/изменение записи тоже не работает - только ошибками сыпет.
Как в общем и целом сделать правильно?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Yufil »

Для начала в Словаре в каждой таблице найди уникальный ключик и поставь на него флажок Primary.
Разумеется, каждая таблица в SQL тоже должна иметь ключ Primary...
alex881
Посетитель
Сообщения: 42
Зарегистрирован: 08 Апрель 2015, 19:31
Откуда: Оренбург

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение alex881 »

Вот ведь...у меня как раз табличка без уникального ключика, соответственно Primary закрыт. Это обязательное требование?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Yufil »

Абсолютно обязательное. SQL драйвер просто не в состоянии найти запись в таблице, если не знает её первичного ключа, Pointer здесь не канает...
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Shur »

Yufil писал(а): Абсолютно обязательное. SQL драйвер просто не в состоянии найти запись в таблице, если не знает её первичного ключа, Pointer здесь не канает...
Yufil, мне думается, что это не совсем так. Драйвер не ищет конкретную запись, ему это не нужно. Он генерирует sql-команду и передает её на исполнение на сервер, при этом в предложении where он перечисляет все поля с их необновлёнными текущими значениями. И если в таблице имеется несколько совершенно одинаковых записей, то все они будут обновлены или удалены в зависимости от того, что вы пытаетесь сделать.
Последний раз редактировалось Shur 09 Июнь 2016, 16:57, всего редактировалось 1 раз.
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Shur »

alex881 писал(а): а вот в форме подымаются данные только в тех полях, которые описаны в browse, остальные - пустые.
Специфику работы legacy шаблонов в применении с SQL не очень знаю, поскольку работал с ABC.
Но посоветовать можно пометить не участвующие поля броуза как Hot Fields.
И прислать нам сюда точные сообщения об ошибках. Может что и прояснится.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Yufil »

SQL Accelerator Unique Keys

The SQL Accelerator drivers should generally be used only on tables with unique keys. The drivers will function on files without unique keys, but only with substantially limited capabilities. Without a unique key, the RESET and REGET commands return errors, and the driver cannot update the SQL database.

Most Clarion templates also require that you define a primary key for each table in order to generate code.

Так говорил Заратустра....
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение kreator »

Мало того, что Primary должен быть, но и ещё сам броуз должен быть по уникальному ключу (иначе задвоение записей получите). Плюс хорошо бы метод загрузки "File", что легаси не делает. Думаю, в легаси так и будете косяки устранять.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Shur »

Заратустра Заратустрой, но вот работающий тест.
Обратите внимание, что таблица в SQL вообще не имеет ни уникального ID, ни каких бы то ни было индексов.
Уникальный ключ действительно потребовалось объявить в Кларионе. Без его формального объявления выползали ошибки unsupported function при попытках изменить или удалить запись. Флаг Primary не играет совершенно никакой роли для драйвера.
Дублирование действительно есть (3 записи вместо двух реальных -- см. скриншот) -- здесь с Kreator'ом не поспоришь -- ну да это особенность броуза, и драйвер вместе с SQL здесь не при чём. Но это при наличии дублей в самой таблице.
Ну и последнее. Изменение и удаление происходит по описанному мной ранее сценарию -- меняется и удаляется запись вместе с дублями.
Вложения
Capture.PNG
Последний раз редактировалось Shur 10 Июнь 2016, 10:14, всего редактировалось 2 раза.
alex881
Посетитель
Сообщения: 42
Зарегистрирован: 08 Апрель 2015, 19:31
Откуда: Оренбург

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение alex881 »

Ошибка при изменении записи через форму такая
An error (record not available(33)) was experienced when atteзmting to update record from the file. Probable cause: ИмяПроблемногоФайла.
Направление куда копать и о чем думать понял, всем большое спасибо за помощь.
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение Shur »

Объявите уникальный ключ в словаре данных Клариона, можно даже формальный -- лишь бы был хоть какой.
alex881
Посетитель
Сообщения: 42
Зарегистрирован: 08 Апрель 2015, 19:31
Откуда: Оренбург

Подскажите по работе с MSSQL из Clarion 5EE

Сообщение alex881 »

Еще раз благодарю - форма ожила, добавляет/изменяет/удаляет записи и поля подтягиваються
Ответить