Здравствуйте!
Вопрос, быть может, детский, но он без помощи не решается.
На форме имеется объект 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!