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

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

Добавлено: 09 Июнь 2016, 14:07
alex881
Пытался в лоб перевести приложение с топспидовских таблиц в MSSQL, шаблоны стандартные, не ABC. Ничего хорошего не вышло, browse еще худо бедно показывает данные, а вот в форме подымаются данные только в тех полях, которые описаны в browse, остальные - пустые.
И добавление/удаление/изменение записи тоже не работает - только ошибками сыпет.
Как в общем и целом сделать правильно?

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

Добавлено: 09 Июнь 2016, 15:22
Yufil
Для начала в Словаре в каждой таблице найди уникальный ключик и поставь на него флажок Primary.
Разумеется, каждая таблица в SQL тоже должна иметь ключ Primary...

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

Добавлено: 09 Июнь 2016, 15:34
alex881
Вот ведь...у меня как раз табличка без уникального ключика, соответственно Primary закрыт. Это обязательное требование?

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

Добавлено: 09 Июнь 2016, 16:24
Yufil
Абсолютно обязательное. SQL драйвер просто не в состоянии найти запись в таблице, если не знает её первичного ключа, Pointer здесь не канает...

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

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

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

Добавлено: 09 Июнь 2016, 16:56
Shur
alex881 писал(а): а вот в форме подымаются данные только в тех полях, которые описаны в browse, остальные - пустые.
Специфику работы legacy шаблонов в применении с SQL не очень знаю, поскольку работал с ABC.
Но посоветовать можно пометить не участвующие поля броуза как Hot Fields.
И прислать нам сюда точные сообщения об ошибках. Может что и прояснится.

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

Добавлено: 09 Июнь 2016, 17:11
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.

Так говорил Заратустра....

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

Добавлено: 09 Июнь 2016, 17:44
kreator
Мало того, что Primary должен быть, но и ещё сам броуз должен быть по уникальному ключу (иначе задвоение записей получите). Плюс хорошо бы метод загрузки "File", что легаси не делает. Думаю, в легаси так и будете косяки устранять.

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

Добавлено: 10 Июнь 2016, 1:36
Shur
Заратустра Заратустрой, но вот работающий тест.
Обратите внимание, что таблица в SQL вообще не имеет ни уникального ID, ни каких бы то ни было индексов.
Уникальный ключ действительно потребовалось объявить в Кларионе. Без его формального объявления выползали ошибки unsupported function при попытках изменить или удалить запись. Флаг Primary не играет совершенно никакой роли для драйвера.
Дублирование действительно есть (3 записи вместо двух реальных -- см. скриншот) -- здесь с Kreator'ом не поспоришь -- ну да это особенность броуза, и драйвер вместе с SQL здесь не при чём. Но это при наличии дублей в самой таблице.
Ну и последнее. Изменение и удаление происходит по описанному мной ранее сценарию -- меняется и удаляется запись вместе с дублями.

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

Добавлено: 10 Июнь 2016, 6:50
alex881
Ошибка при изменении записи через форму такая
An error (record not available(33)) was experienced when atteзmting to update record from the file. Probable cause: ИмяПроблемногоФайла.
Направление куда копать и о чем думать понял, всем большое спасибо за помощь.

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

Добавлено: 10 Июнь 2016, 7:37
Shur
Объявите уникальный ключ в словаре данных Клариона, можно даже формальный -- лишь бы был хоть какой.

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

Добавлено: 10 Июнь 2016, 9:13
alex881
Еще раз благодарю - форма ожила, добавляет/изменяет/удаляет записи и поля подтягиваються