На форме есть MS DataGrid, через ADODC подключённая к MDB-базе, и несколько элементов типа TextBox, которые я использую как для вывода в них соответствующих полей выбранной в гриде записи (для просмотра), так и для ввода через них данных в базу. ' Примечание: текстбоксы НЕ ЗАВЯЗАНЫ на базу через своё свойство DataSource; при вводе/выводе чтение/заполнение текстбоксов выполняется тупо из кода. Так сделано потому, что хотелось ввод в базу выполнять не автоматом по ходу заполнения привязанных текстбоксов (полей), а только по нажатию кнопки "Сохранить". ' Так вот, если в одном из полей записи БД ничего нет (т.е. при создании базы в Аксессе в это поле просто ничего не ввели), то при попытке выполнить приведённый ниже код по заполнению текстбокса (соответствующего этому полю) возникает ошибка "Недопустимое использование пустого указателя". А вот и код: ' Private Sub adoEvents_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As _ ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) ' ... ' какой-то код ' ... TextBox1.Text = adoEvents.RecordSet![Описание события] ' ... ' какой-то код ' ... End Sub [/code] ' Если в поле "Описание события" есть какой-то текст, то всё ОК. Но если там нет НИЧЕГО, то выскакивает ошибка. Не помогает ни Is Nothing, ни Is Null, ни Is Empty, ни сравнение с пустой строкой, ни сравнение длины строки с нулём. ' Ставил даже в начале этой процедуры On Error Resume Next, а в конце - On Error Goto 0. Эта ошибка пропала, и стало вроде всё нормально: как будто приведённая выше строка "adoEvents.RecordSet![Описание события]" стала возвращать ПУСТУЮ СТРОКУ, когда сама эта строка вызывала ту самую ошибку. Но это очень некрасивый и неправильный способ решения проблемы, что очень скоро и подтвердилось: когда плюс к обычным текстбоксам я добавил маскированные (MS MaskEdit Control), то у них (при наличии всё тех же On Error ...) присвоение TextBox1.Text вообще не стало выполняться (т.е. строка "adoEvents.RecordSet![Описание события]" перестала возвращать не то что ПУСТУЮ СТРОКУ, но что-либо вообще!), в результате чего в MaskEdit-ах стали оставаться "хвосты" от их прошлых значений. Отключение On Error, естественно, опять вызвало ту же ошибку насчёт пустого указателя. ' В итоге, я никак не могу поставить контроль за выводом в текстбоксы (как обычные, так и маскированные) НЕЗАДАННЫХ в базе значений. Есть ли какой-нибудь выход помимо того, чтобы при предшествующей всему этому ЗАПИСИ В БАЗУ нарочно писать пустые строки или пробелы, если юзер ничего не задал вообще? ' PS: Всё это может показаться мутью, но если вы воссоздадите условия эксперимента (это 5-10 минут), то сразу поймёте, в чём проблема. ' Всем заранее спасибо!
Ответить
|