Datagrid и выделенные строки - VB
Формулировка задачи:
у меня есть 2-е даты и 2-е датагрида
по нжатию кнопки происходит вот такая штука:
Data_xls.Recordset.Fields("Uid").Value = data_class.Recordset.Fields("uid").Value
Подскажите плизз можно сделать так чтобы в первую таблицу в выделенные строки вносились изменения.
т.е. сейчас происходит в одну строку проставляеться из одной строки, а мне нуна что бы было: в множество из одной !
Заранее спасибо
по нжатию кнопки происходит вот такая штука:
Data_xls.Recordset.Fields("Uid").Value = data_class.Recordset.Fields("uid").Value
Подскажите плизз можно сделать так чтобы в первую таблицу в выделенные строки вносились изменения.
т.е. сейчас происходит в одну строку проставляеться из одной строки, а мне нуна что бы было: в множество из одной !
Заранее спасибо
Решение задачи: «Datagrid и выделенные строки»
textual
Листинг программы
<font color="blue">Private</font> <font color="blue">Sub</font> Command1_Click()
<font color="blue">Dim</font> rs <font color="blue">As</font> ADODB.Recordset <font color="00AA00">'Рекордсет которым <font color="teal">"роемся"</font> в первом наборе данных</font>
<font color="blue">Dim</font> rs2 <font color="blue">As</font> ADODB.Recordset <font color="00AA00">'Рекордсет которым пишем во второй набор данных</font>
<font color="blue">Dim</font> Item <font color="blue">As</font> Variant <font color="00AA00">'Каким типом перебираем SelBookmarks - не знаю. Поэтому Variant</font>
<font color="blue">Set</font> rs = rsGrid.Clone <font color="00AA00">'Используем только клоны рекордсета-источнка данных грида</font>
<font color="blue">Set</font> rs2 = rsGrid2.Clone <font color="00AA00">'(для Adodc - Adodc1.Recordset.Clone)</font>
SetBookmarkFor_rsTarget rs2
<font color="blue">For</font> <font color="blue">Each</font> Item <font color="blue">In</font> DataGrid1.SelBookmarks
<font color="blue">If</font> IsNumeric(Item) <font color="blue">Then</font> <font color="00AA00">'Item-ы бывают Null или Empty</font>
rs.MoveFirst <font color="00AA00">'здесь Item - это Bookmark,</font>
rs.Move Item - <font color="darkblue"><b>1</b></font> <font color="00AA00">'значит тупой сдвиг от начала на Bookmark записей, даст нам то что надо</font>
rs2(<font color="teal">"ПолеХ"</font>) = rs(<font color="teal">"ПолеY"</font>) <font color="00AA00">'Это копирование нужных данных</font>
rs2.MoveNext <font color="00AA00">'Перемещаем на следующую запись получатель данных</font>
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">Next</font>
<font color="blue">End</font> <font color="blue">Sub</font>
<font color="00AA00">'Установка позиции рекордсета-приемника данных на первую выделенную строку во втором гриде</font>
<font color="00AA00">'т.к. SelBookmarks - не отсортированы</font>
<font color="00AA00">'Можно было просто rs.Move DataGrid2.Bookmark</font>
<font color="blue">Private</font> <font color="blue">Sub</font> SetBookmarkFor_rsTarget(<font color="blue">ByRef</font> rs <font color="blue">As</font> ADODB.Recordset)
<font color="blue">Dim</font> i <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> Item <font color="blue">As</font> Variant
i = <font color="darkblue"><b>0</b></font>
<font color="00AA00">'Находим стартовую позицию (наименьшую)</font>
<font color="blue">For</font> <font color="blue">Each</font> Item <font color="blue">In</font> DataGrid2.SelBookmarks
<font color="blue">If</font> IsNumeric(Item) <font color="blue">Then</font>
<font color="blue">If</font> i = <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
i = Item
<font color="blue">Else</font>
<font color="blue">If</font> i < Item <font color="blue">Then</font> i = Item
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">Next</font>
<font color="00AA00">'Ставим на нее рекордсет и потом будем двигаться от нее на шаг в каждом цикле</font>
rs.MoveFirst
rs.Move i - <font color="darkblue"><b>1</b></font>
<font color="blue">End</font> <font color="blue">Sub</font>