Автор вопроса: RotesByte | Web-сайт:koch.onestop.net
Привет всем! Братцы, выручайте! весь день провоевал, и без толку... :(
Делаю запрос к SQL-Server, полученный RecordSet отсоединяю, базу закрываю. Этот висящий в памяти RecordSet фильтрую и показываю юзеру. Тут всё нормально.
Проблема: при попытке добавить запись в этот RecordSet новая запись добавляется, НО в одни поля я могу внести значения, а в другие - нет, выпадает ошибка: "Multiple-step poeration generated errors. Check each status value".
Доходит до маразма: в поле, все значения которого только слово "Server" не могу добавить запись со значением "Local"
Вот как я получаю и отсоединяю RecordSet:
Public Sub readAllForCmbProject(rsAllForCmbProject As ADODB.Recordset) Dim conn As ADODB.Connection Dim strQuery As String
Дык, это... Ты его обратно то подсоедени.. . Куда он обновлять будет?
Set rsAllForCmbProject.ActiveConnection =conn
rsAllForCmbProject.Update
И еще одна весЧ.
adLockBatchOptimistic. т.к. рекордсет у тебя отсоеденен, то обновлять он все должен пачкой, вот и ставь вышеозначенный лок. Да и открывать его в этом случае надо статическим.
1. Почему два поля работают нормально? Для новых записей эти поля заполняются без проблем. И почему остальные три при внесении значений в новую запись ругаются?
По-моему, уж если работать, то всем, а если ругаться - так тоже всем...
2. На счет обновления: Ошибка-то лезет до команды Update, на
3. Если я из кода создаю аналогичный RecordSet и, например добавляю записи и заполняю поля, то всё работает нормально. Так у меня было с начала: Запрос --> получаю "присоединенный" RecordSet --> генерирую "отсоединённый" со структурой как у первого --> копирую данные из "присоединенного" в "отсоединённый" --> отключаюсь от базы, "присоединенный" исчезает, зато остаётся второй.
4. Может, что-то с самими полями? Что означает "Check each status value"? Тоесть, перевести я могу, то это значит?
Действительно странно... Кинь мне его, я гляну. База в акцесе? Ее тоже давай. Только необходимое.
Эта ошибка может быть вызвана очень многимни причинами.
Например попытка заполнения поля имеющего автономер, или же если это поле у тебя связано с другим из другой таблицы(constraint) и ты пытаешься внести недопустимое значение. Автоматически оно внесено не будет а база пытается сохранить Iоntegrity, вот и ругается.