Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 18:41   #1
Ecosasha
Форумчанин
 
Регистрация: 22.05.2009
Сообщений: 248
По умолчанию Что за ошибка "В операции должен использоваться обновляемый запрос"?

Что за ошибка "В операции должен использоваться обновляемый запрос"?

Использую IIS (Windows XP Sp3) +Access 2003
В учебнике
Литвин, Гетц, Гунделой "Разработка корпоративных приложений в Аксесс 2002-2003"
в главе 14
обсуждается создание asp страниц, приводятся исходники,
на их основе решил переделать для своих нужд по аналогии для своей таблицы.
Так вот, записи через asp страницы считывает из базы данных Аксесс и выводит в html форме,
а как запрос на запись через запрос с параметрами, то выводит вышеупомянутую ошибку. Я, сначала думал, что у меня что-то не так, но потом посмотрел, в исходниках автора, тоже самое.
В чем ошибка, что не учтено?
Файлы скидывал в сервер по умолчанию Inetpub\wwwroot
Вот вкратце подключение на выполнение запроса у автора книги:

Код:
Dim cnn
Dim cmd
Dim varRecords
Dim prm

Set cnn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")

cnn.Open strADH2KCnn
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc

Select Case Request.Form("cmdSubmit")
Case "Save Changes"
	cmd.CommandText = "qryCustomerUpdate" 
	Set prm = cmd.CreateParameter("CustomerId", adInteger, _
	 adParamInput, ,Z2Null(Request.Form("txtCustomerId")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("FirstName", adVarWChar, _
	 adParamInput, 50, Z2Null(Request.Form("txtFirstName")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("LastName", adVarWChar, _
	 adParamInput, 50, Z2Null(Request.Form("txtLastName")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("Address", adVarWChar, _
	 adParamInput, 50, Z2Null(Request.Form("txtAddress")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("City", adVarWChar, _
	 adParamInput, 50, Z2Null(Request.Form("txtCity")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("State", adVarWChar, _
	 adParamInput, 2, Z2Null(Request.Form("txtState")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("ZipCode", adVarWChar, _
	 adParamInput, 10, Z2Null(Request.Form("txtZipCode")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("Phone", adVarWChar, _
	 adParamInput, 10, Z2Null(Request.Form("txtPhone")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("Extension", adVarWChar, _
	 adParamInput, 5, Z2Null(Request.Form("txtExtension")))
	cmd.Parameters.Append prm
	Set prm = cmd.CreateParameter("Notes", adVarWChar, _
	 adParamInput, 100, Z2Null(Trim(Request.Form("tarNotes"))))
	cmd.Parameters.Append prm

	cmd.Execute varRecords
	If varRecords <> 0 Then
		Response.Write "Record updated!"
	Else
		Response.Write "Unable to update record."
	End If
Там далее код идет по дальнейшему выбору case.
Но ошибка на строке "cmd.Execute varRecords"

Код запроса в Акссесс qryCustomerUpdate:

Код:
PARAMETERS prmCustomerId Long, prmFirstName Text ( 255 ), prmLastName Text ( 255 ), prmAddress Text ( 255 ), prmCity Text ( 255 ), prmState Text ( 255 ), prmZipCode Text ( 255 ), prmPhone Text ( 255 ), prmExtension Text ( 255 ), prmNotes Text ( 255 );
UPDATE tblCustomer SET tblCustomer.LastName = [prmLastName], tblCustomer.FirstName = [prmFirstName], tblCustomer.Address = [prmAddress], tblCustomer.City = [prmCity], tblCustomer.State = [prmState], tblCustomer.ZipCode = [prmZipCode], tblCustomer.Phone = [prmPhone], tblCustomer.Extension = [prmExtension], tblCustomer.Notes = [prmNotes]
WHERE (((tblCustomer.CustomerId)=[prmCustomerId]));

Читал в поддержке про данную ошибку:
http://support.microsoft.com/default...NoWebContent=1

Но, что-то так и не удалось исправить положение...

Может в сервере какие-то опции поставить надо, если да, то где?
Ecosasha вне форума Ответить с цитированием
Старый 22.05.2011, 13:00   #2
Ecosasha
Форумчанин
 
Регистрация: 22.05.2009
Сообщений: 248
По умолчанию

Вообщем, сам задал вопрос, сам и отвечу на него,
может кому пригодится

Оказывается, причина была в правах доступа NTFS для пользователей.
Решение:
Если в проводнике в свойствах папки нет вкладки Безопасность, то делаем ее,
http://forum.sources.ru/index.php?showtopic=216702
В свойствах папки или файла на вкладке Безопасность устанавливаем доступ на запись или полный доступ, зависит от целей.

P.S. Конечно, у других могут быть и другие причины (в ODBC только на чтение, или атрибут у файла только на чтение, или запросы неправильные и т.д.), но у меня в этом оказалась причина.
Ecosasha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что означает ошибка "')' expected but ';' found"? katris Помощь студентам 17 19.12.2009 17:00
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Правда ли что Java "Тяжелая" и все "вешает" ? webmaster-n Общие вопросы по Java, Java SE, Kotlin 10 30.07.2009 01:22
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
запрос (выйти(завершить программу)) "Y";"N". SKS Паскаль, Turbo Pascal, PascalABC.NET 7 15.01.2009 16:32