Добрый день! Я хочу сымитировать ленточную форму Access в VB. Насколько я понимаю, возможно использовать 2 варианта: 1) Data repeater + собственный контрол 2) DataGrid Но и с тем, и с другим возникают проблемы. Дело в том, что одно из полей моей таблицы содержит ключи, а пользователю, естественно, нужно показывать соответствующие им значения. Кроме того, пользователь должен иметь возможность редактировать содержимое этого поля, выбирая нужный вариант из списка. То есть нужен combobox. Вот тут и появляются трудности. Первый вариант: Я создаю контрол с datacombobox. Задаю Property Let/Get для каждого отображамого поля и Property Set для передачи в контрол recordset'а-списка вариантов для комбо. Задаю мой контрол в свойстве RepeatedControl Datarepeater'а. Привязываю свойства контрола к полям recordset'а в datasource datarepeater'а. Но когда я открываю форму, текст в combo виден только в активной записи, а в остальных комбо пуст. Если я перехожу на другую запись, то в комбо этой записи появляется текст (правильный), но исчезает в записи, которая была активной до этого. Что делать - не понятно... Второй вариант: Так как в DataGrid вставить комбо нельзя, я использую кнопку в поле для отображения скрытого листбокса с вариантами. Тут все просто. Но вот как отображать не ключ, а соответствующий ему текст, непонятно. Я пробовал использовать Left Join для того, чтобы в рекордсете иметь и текст, и его ключ. Соответственно, в datagrid'е я скрывал поле ключа, оставляя видимым поле с текстом. По клику на списке я обновлял оба поля. Но в этом случае не получается обновить запись, программа ругается, что не может внести изменения из-за повторяющихся значений в индексе, ключевых полях или связях. Если не привязывать поле текста к рекордсету, то все работает. Пробовал после отображения данных из рекордсета отвязать от него поле - все равно не работает. Что делать? Можно ли привязывать к рекордсету только поле ключа, а пользователю показывать текст??? Спасибо. Григорий
Ответить
|