Обновление невозможно.БД или объект доступны только для чтения..

Daemon`

Здравствуйте уважаемые аксессовцы.Фишка следующая: кое-что я тут нарыл и возникла идея как можно расчитать мне стоимость заказов в таблице.МСА 2000, Таблица Почта.Сделал отдельную форму и добавил ей кнопку. Формирую програмно запрос, чтобы изменить данные в таблице, проанализировав ее. У кнопки код(упрощенно):Dim strSelect As StringDim rst As DAO.RecordsetstrSelect = "SELECT [Почта].*, [НасПункты].* " & _" FROM [НасПункты], [Почта] " & _" WHERE (Not IsNull([Почта].НомерЗаказа)) And (Nz([Почта].ОплатаЗаказчику, 0) = 0) " & _" and ([НасПункты].КодГорода = [Почта].КодГорода)"Set rst = CurrentDb.OpenRecordset(strSelect)rst.MoveFirstDo While Not rst.EOF() '''Дальше идет анализ if ... then ...else ....Потом: rst.Edit /// вот тут дебаггер и врубает свою месагу (см. сабж.) Runtime error 3027 rst![ОплатаЗаказчику] = oplrst.Updaterst.MoveNextLooprst.CloseSet rst = NothingЧто я не так делаю?? Кстати, если я пробовал "Dim rst As New DAO.Recordset - он говорил что типа Invalid use of new Keyword
10 ответов

Daemon`

Забыл..БД - .mdb


Daemon`

Попробуйте использовать текст вашего запроса в таком виде:
SELECT [Почта].*, [НасПункты].*
FROM [НасПункты] INNER JOIN [Почта] ON [НасПункты].КодГорода = [Почта].КодГорода
WHERE [Почта].НомерЗаказа Is Not Null AND Nz([Почта].ОплатаЗаказчику,<b>0</b>)=<b>0</b>


Daemon`

Еще вопрос:как в коде ссылаться на поля таблицы?Например мне нужно проанализировать поле Вес в таблице ПОЧТА.If Вес.Почта>1 then.....(если в поле Вес таблицы ПОЧТА вес больше 1) Верно или нет? У меня не анализирует это и я не пойму в чем дело...скорее всего ссылаюсь неправильно на поля..


Daemon`

Например мне нужно проанализировать поле Вес в таблице ПОЧТА.
А в какой записи? И чье это поле(recordset, tabledef, querydef etc.)?


Daemon`

Ссылаться на поля таблицы надо через RecordSet


Daemon`

Dim strSelect As StringDim rst As DAO.RecordsetstrSelect = "SELECT [Почта].*, [НасПункты].* " & _" FROM [НасПункты], [Почта] " & _" WHERE (Not IsNull([Почта].НомерЗаказа)) And (Nz([Почта].ОплатаЗаказчику, 0) = 0) " & _" and ([НасПункты].КодГорода = [Почта].КодГорода)"Set rst = CurrentDb.OpenRecordset(strSelect)rst.MoveFirstDo While Not rst.EOF() Таблица формируется из запроса (см.выше). Мне нужно посчитать Стоимость заказа - поле ОплатаЗаказчику в таблице Почта.Гоняю все через рекордсет ДАО.Если пробую If [вес]>1 then ОплатаЗаказчику = 5не катит..Может rst![Вес].Почта???Или как?


Daemon`

Dim strSelect As StringDim rst As DAO.RecordsetstrSelect = "SELECT [Почта].*, [НасПункты].* " & _" FROM [НасПункты], [Почта] " & _" WHERE (Not IsNull([Почта].НомерЗаказа)) And (Nz([Почта].ОплатаЗаказчику, 0) = 0) " & _" and ([НасПункты].КодГорода = [Почта].КодГорода)"Set rst = CurrentDb.OpenRecordset(strSelect)rst.MoveFirstDo While Not rst.EOF() Таблица формируется из запроса (см.выше). Мне нужно посчитать Стоимость заказа - поле ОплатаЗаказчику в таблице Почта.Гоняю все через рекордсет ДАО.Если пробую If [вес]>1 then ОплатаЗаказчику = 5не катит..Может rst![Вес].Почта???Или как?


Daemon`

Сорри, что-то инет заглючил и запостил 2 раза один пост..Простите великодушно:)


Daemon`

нужно проанализировать поле Вес в таблице ПОЧТА...нужно посчитать... поле ОплатаЗаказчику в таблице Почта....
Если rst As DAO.Recordset, то можно так:
If rst("Вес").Value > <b>1</b> then rst("ОплатаЗаказчику").Value = <b>5</b>


Daemon`

Спасибо огромное, буду пробовать!