Связать recordset с MSHFlexGrid

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Связать recordset с MSHFlexGrid

Сообщение JumpingJack » 25.01.2006 (Ср) 12:56

подскажите, плз, как связать MSHFlexGrid с имеющимся RecordSet'ом?

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 25.01.2006 (Ср) 13:25

Set Form1.MSHFlexGrid1.DataSource = rs
рекордсет - ADO-шный

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 25.01.2006 (Ср) 13:27

Делаю так:

Код: Выделить всё
   Set SendRs = New ADODB.Recordset
   SendRs.Fields.Append "Ind", adInteger, , adFldKeyColumn
   SendRs.Fields.Append "AppName", adVarChar, 200, adFldUpdatable
   SendRs.Fields.Append "AppVar", adInteger, , adFldUpdatable
   SendRs.Fields.Append "IdApp", adInteger

   SendRs.Open
   SendRs.AddNew "AppName", "test"
   SendRs.Close

   Set frmCreateApp2.MSHFlexGrid1.DataSource = SendRs


Пишет, что MSHFlexGrid не поддерживает этот тип данных..

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 25.01.2006 (Ср) 13:55

Ты снача заполняй грид, а потом закрывай рекордсет - и будет тебе счастье (Поменяй две последние строчки местами).

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 25.01.2006 (Ср) 14:00

Точно! Спасибо :)
А можно как-то сделать чтобы не все записи из рекордсета показывались? И как сделать в рекордсете индексное поле (чтоы автоматом заполнялось)? :)

И последний вопрос - SendRs.AddNew "AppName", "test" добавляет запись только в одно поле таблицы.. А как заполнить остальные?? :roll:

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 25.01.2006 (Ср) 14:21

Для отбора записей используй проперть rs.filter, а если надо скрыть столбцы - то убирай их в гриде, насчет индексного поля точно не знаю можно ли через ADO, через ADOX вроде можно. Посмотри help по ADO и ADOX (смотря какая у тебя версия, у меня файл справки ado210.chm) - там примеры есть. Так же посмотри в разделе "Кирпичный завод" на этом форуме - создание структуры БД из кода, может там это есть.

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 25.01.2006 (Ср) 14:24

Ок, спасибо!
ТОлько остался вопрос - а как убирать поля в гриде?

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 25.01.2006 (Ср) 14:36

MSHFlexGrid1.ColWidth(номер_поля) = 0

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 25.01.2006 (Ср) 16:19

Надо было догадаться.. :)
Еще вопрос - надо ли Set frmCreateApp2.MSHFlexGrid1.DataSource = SendRs делать всякий раз при добавлении новой записи в таблицу? Потому что просто MSHFlexGrid1.Refresh не помогает..

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 26.01.2006 (Чт) 7:23

раз источник записей изменился - значит надо делать, а если тебя это напрягает и часто приходится добавлять новые записи, то лучше используй другие гриды, например, DataGrid - также работает с рекордсетом, можно добалять записи в самом гриде.

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 26.01.2006 (Чт) 12:10

Надо именно этот грил использовать... а как в нем установить курсор на определенную ячейку??

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 26.01.2006 (Чт) 13:02

Как везде: мышкой или клавой...

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 26.01.2006 (Чт) 13:04

Не... эт понятно :) Я имел в виду программно! :)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.01.2006 (Чт) 13:06

Код: Выделить всё
grd.Row=i
grd.Col=j


так устроит :?:

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 26.01.2006 (Чт) 13:21

Неа... не выбирается.. мне нужно, чтобы при добавлении строки курсор В ГРИДЕ устанавливался на превую запись..

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.01.2006 (Чт) 13:25

Код: Выделить всё
grd.row=1
grd.col=0

после добавления своей строки.

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 26.01.2006 (Чт) 13:53

О, точно, спасибо, еще setfocus надо было делать)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 111

    TopList