У меня в MDB-базе есть табличка Events - "события". Одно из её полей - "Статус". На сегодняшний день юзер может туда вколотить только одно из трёх возможных значений: "Открытое", "Закрытое" или "Отменилось". Это контролируется сейчас просто через ComboBox типа DropDownList на форме ввода таблицы - там фиг выберешь что-нибудь, кроме того, что в списке. Поэтому в самой MDB-базе я и не стал на вкладке "Подстановка" задавать Тип Элемента Управления как "Список" - оставил "Поле"; контроль ввода и так приличный. ' Пару недель назад никакого контроля ввода у меня ещё не было, и поле "Статус" могло принимать любые значения (например, "Будущее", "Прошедшее" и т.п.). Но все такие старые записи с недопустимыми (на сегодня) значениями поля "Статус" я уже давным давно потёр в базе ручками (в Аксессе). ' И тут, блин, вызов adoEvents.Recordset!Статус выдаёт мне вдруг строчку "Будущее" !!!!! Лезу в Аксесс, смотрю базу, - нету там такой записи. И давно уже не может быть - говорю же, затёр я их! Впихиваю в код рядышком всякие Debug.Print adoEvents.Recordset!EventID и т.д. - т.е. распечатку других полей записи таблицы Events. Смотрю, чё оно мне напечатало. Да, была пару недель назад такая запись - с таким EventID и прочими полями. ' Она что: не стёрлась? Дал в Аксессе "Сжатие и восстановление базы" - по фигу. Ну могу понять, что стирание на самом деле не стирает, а просто "помечает" (по старому DBF-формату ещё помню). Но неужто эти "помеченные" записи контрол ADODC (в моём примере имеет имя adoEvents) тоже будет обрабатывать? Причём он их не выводит, в итоге, в связанный DataGrid, и стёртых записей в гриде НЕТУ. Я и натолкнулся на эту беду случайно: просто при заполнении ComboBox-а (в котором есть только три элемента - см. выше) из базы попытка установить его св-во Text в строку "Будущее" дало, ессс-но, ошибку (на то он и DropDownList).
Ответить
|