Здравствуйте!
Возникла следующая ошибка:
есть таблица tbl_Brief с полями WCCitiesT и WCCitiesText с типом строкоа юникод (1500) и строка юникод (2500).
есть датасет ds_Brief с полями WCCitiesT и WCCitiesText с типом blob (когда эти поля были типа "строка", данные все равно обрезались).
Есть окно редактирования, в нем Lookup поле, в котором вызывается wnd_MultiSelectData. при нажатии ОК в этом окне происходит следующее:
&& (Sender.WindowCaption == "Выбор 'Город'")&& (Message == MSG_OK)) {
CitiesIDString = Sender.Attributes('KeyValues').CommaText;
Lookup.Text = Sender.Attributes('DisplayFieldValues').CommaText;
Self.ComponentsByName('dlData').Dataset.Values('WCCitiesText') = Sender.Attributes('DisplayFieldValues').CommaText;
var t = new String (Sender.Attributes('KeyValues').CommaText);
Self.ComponentsByName('dlData').Dataset.Values('WCCitiesT') = CitiesIDString
}
Потом при нажатии ОК в окне редактирования по профайлеру видно, что добавляется запись с пустыми значениями этих полей (хотя BaseDBEdit.Dataset.Values('WCCitiesT') и BaseDBEdit.Dataset.Values('WCCitiesText') не пустые). При чем только при первом добавлении записи в грид за сеанс. Если потом открыть ту же запись или создать новую, то значения полей добавляются.
в чем может быть проблема?
Нравится
Здравствуйте.
Сложно сказать в чем может быть проблема. Не понятно почему у Вас обрезается строка, если конечно у Вас и в таблице в и датасете длина поля типа nvarchar установлена одинаковая (1500 b 2500 соответственно).
Можете предоставить резервную копию БД для анализа проблемы?
Да, длина строк была одинаковая. но сейчас проблема не в этом, а в том, что при первой записи в датасет значения этих полей не сохраняются.
а смотрели события самого датасета? после выделенной строки как раз и срабатывает beforepost датасета (и потом afterpost)
Елена, подозреваю, что Дмитрий имел ввиду, что следует проверить события BeforePost и AfterPost для этого датасета в скрипте самого датасета и в скрипте карточки. Возможно в функциях обработчиках этих событий есть какая либо логика, которая в первый раз (для новой записи) очищает значение этих полей в датасете.
я поняла. Я имела ввиду, что в скрипте датасета нет нестандартных функций на это событие, как и в карточке.
Лена, в таком случае нужно смотреть реализацию.
Без отладки и анализа реализации сложно определить причину. Вложите, пожалуйста, сервисы функциональности либо направьте в службу технической поддержки резервную копию БД.
Оказалось, что если типа поля датасета поменять на строковый вместо blob, то всё сохраняется с перовго раза.