Есть такой код:

var adods_WebSite = GetSingleItemByCode('adods_WebSiteRecord');
        adods_WebSite.Close();
        adods_WebSite.Parameters('ID').Value=Dataset('ID').substr(1,36);
        adods_WebSite.Open();
        if(adods_WebSite.RecordsCount>0){
                Dataset('Name')=adods_WebSite('Name');
        }
        adods_WebSite.Close();

при выполнении adods_WebSite.Open(); выбивает ошибку "rowset position cannot be restarted".
что интересно, когда Dataset('ID').substr(1,36); заменить на Dataset('ID').substr(1,35); или Dataset('ID').substr(2,36); то ошибки нет, но результат ничего не возвращает. Как избавится от этой ошибки?

Нравится

7 комментариев

Добрый день
Подскажите, а какая СУБД находится на другой стороне? И для чего Вам делать substr?

My SQL.
Если делать без substr, то ошибки нет, но возвращается пустой результат

Вы можете посмотреть какой запрос уходит на my sql?
Также, можно попробовать вместо Dataset('ID').subst(1, 35) поставить известный ID (константу), чтобы убедится, что формат id подходит

К сожалению там нет SQLText.
Я пробую разные варианты

SELECT `ID`, `Name` 
FROM `tbl_tyre`
where '{'+CAST(ID AS char(36))+'}' = :ID

пробовал и через like.
Такое впечатление что оно знает чего мне нужно и упорно препятствует мне...

Похоже, дело именно в неправильном запросе, уходящем в MySQL.
Надо попробовать найти программу-профайлер для MySQL и посмотреть, что за запрос идёт на базу.

Проблема в параметре, без него все работает хорошо...

Показать все комментарии