Как выцепить инфу из ячейки флексгрида?

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

Как выцепить инфу из ячейки флексгрида?

Сообщение Dummiel » 23.11.2006 (Чт) 13:44

Здравствуйте!

Вопрос, быть может, детский, но он без помощи не решается.

На форме имеется объект Data и MsFlexGrid (MsFlexGrid.Name = flList)

Данными человеков заполняю грид стандартно:

1. Data1.DatabaseName = db1.mdb
2. В пропертях грида устанавливаю DataSource = Data1
3. sSQL = "SELECT * FROM Table1 ORDER BY Famil"
4. Data1.RecordSource = sSQL

В одном из столбцов грида (допустим, в 3-м) имеем PIN человека, который я хочу присвоить Public-переменной (допустим NoPIN).
Как выцепить его из грида? На flList.TextMatrix(1, 3) VB матерится - "Subscript out of range".
flList.TextMatrix(0, 3) дает Empty (естественно, ведь первый ряд фиксирован), а когда задаю 1-ю строку, так сразу -
"Индекс вне диапазона". Как может быть индекс вне диапазона (я так понимаю, что VB думает, что грид не заполнен),
если в гриде больше 3-х тысяч человеков?
Или отказаться от SQL и тупо заполнять грид посредством Do While Not DB_rs.EOF ... flList.Additem ... Loop? Долго, да и
лишний код ни к чему. Или идти через flList.TextArray()? Опять же лишний код - пока индекс ячейки вычислишь. Да при загрузке
грида flList.Row = flList.Col = 1. А там, ясно, ничего нет - ячейка относится к фиксированным строке-столбцу.
flList.MouseCol и flList.MouseRow использовать нереально, т.к. сразу после загрузки мышой еще никто не щелкнул, а NoPIN
уже должен быть "заряжен" PIN'ом. Пробовал flList_Click() с flList.MouseCol и flList.MouseRow, так VB вообще видит всегда
только первый столбец, а остальные не видит, хотя строки выдает исправно. А MsgBox flList.Rows показывает "1", хотя
в гриде (повторяюсь) больше 3-х тысяч записей. А вот flList.Cols показывает правильно.

Или нужно делать Set dbRs = dbMan.OpenRecordset(sSQL), и выцеплять из Table1 PIN и присваивать его NoPin? Опять код
дописывать, хоть и немного. Зачем тогда грид нарисован? Тупо "позырить"? :)

Короче, мозги начали плавиться. Может, чегой-то не догоняю? :( Помогите, PLEASE!

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 24.11.2006 (Пт) 7:52

может быть я не по делу, но пока не поздно, перейди на другую сетку, например TDBGRID, намного удобнее работать

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 24.11.2006 (Пт) 8:19

TextMatrix рабоает прекрасно, если конечно на сетке видны данные, судя по вашему случаю, эти данные не видны. Надо проверить поключение к базе, sql-запрос, и recordsettype элемента Data.
И маленькая тонкость:
после Data1.RecordSource = sSQL

Data1.Refresh

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 25.11.2006 (Сб) 9:54

Воистину, сколько людей, столько и мнений!

Один говорит - флексгрид проще хозяйственного мыла, другой к дбгриду привычен. :D

Проблема-то основная в том, что сразу после загрузки свойство MsFlexGrid.Row = 0, строки начинают "считываться" только после MsFlexGrid_Click(). А мне сразу надо, до клика. Я думаю, оптимальный вариант - Set dbRs = DB.Openrecordset(sSQL) Спасибо за отклик! :)


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

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

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

    TopList  
cron