Solved

Can't use recordset .AddNew and rs.State raise error: Operation is not allowed in this context. ?

Posted on 2008-11-03
7
615 Views
Last Modified: 2011-10-19
Hi,
The first trouble is IIS doesn't dislay script language error msg with which line raised error ?
And next.
I dun't know why last time this code worked with MS SQL 2008 Enterprise. But i changed to 2005 Express than everything dump.
For below code why :
- I got no error but addnew doesn't effect
- This code was worked last time with SQL 2008 Ent ???
And ... this code will raise error at rs.State of Class_Terminate of clsProduct (please ref in file)

Please help me to solve addnew that i can insert to databse.

Thank you
Public Function AddNew (objProduct)			

'			On Error Resume Next

			p_ErrorMsg = ""				

			

			If IsObject(objProduct)  Then

				' --------------- Validating ---------------

				p_ErrorMsg = objProduct.ErrorMsg

				' --------------- Validating ---------------																

			End If

			

			If p_ErrorMsg = "" Then ' Everything is OK 

				rs.Open "eshop_products", objConn, adOpenKeyset, adLockOptimistic, adCmdTable

				If rs.State = adStateOpen Then

					rs.AddNew							

						rs("product_name") = CStr(objProduct.ProductName)

						rs("category_id") = CInt(objProduct.Category.CategoryID)

						If HaveValue(objProduct.Colour) Then rs("product_colour") = CStr(objProduct.Colour)

						If HaveValue(objProduct.Image) Then rs("product_image") = CStr(objProduct.Image)

						rs("product_price") = CInt(objProduct.Price)

						If HaveValue(objProduct.SalePrice) Then rs("product_saleprice") = CInt(objProduct.SalePrice)

						If HaveValue(objProduct.ProductDescription) Then rs("product_description") = CStr(objProduct.ProductDescription)

						rs("product_featured") = CBool(objProduct.Featured)			

					rs.Update

					If rs("product_id") <> 0 Then ' OK					

						AddNew = rs("product_id")

					Else

						p_ErrorMsg = " Can't Add new Product. Something wrong"

					End If				

				End If				

			End If

			If rs.State = adStateOpen Then rs.Close

			If Err.Number > 0 Then p_ErrorMsg = Err.Description	

		End Function

Open in new window

Product.asp.txt
0
Comment
Question by:BrendaMcMahon
  • 4
  • 3
7 Comments
 
LVL 41

Expert Comment

by:graye
ID: 22867767
Put an "else" clause in there to record what's going on if the rs.Open fails.
Did you remember to add "\SQLEXPRESS" to the end of the server name in the connection string?
0
 

Author Comment

by:BrendaMcMahon
ID: 22867951
My conn below.

And i'm sure that rs.Open is ok because i tried to use response.write (something) inside adStateOpen and it's work.



strConn = "Provider=SQLOLEDB;Persist Security Info=False;Data Source=MONSTER\SQLEXPRESS;Initial Catalog=eshop;User Id=sa;"

Open in new window

0
 
LVL 41

Expert Comment

by:graye
ID: 22868884
I'd check it anyway.... if the connection failed, then you wouldn't get any error message and the insert wouldn't run (which sounds a lot like what you've described)
0
Control application downtime with dependency maps

Visualize the interdependencies between application components better with Applications Manager's automated application discovery and dependency mapping feature. Resolve performance issues faster by quickly isolating problematic components.

 

Author Comment

by:BrendaMcMahon
ID: 22872251
Thank you,
But ... the problem still over there. I dont know why the Class_Terminate raised while i'm still not destroy the object.

Here is my used code to test AddNew.

The event Class_Terminate raised right after call AddNew without nothing ???

And these code was worked with SQL Server 2008 Ent, only raise error with SQL 2005 !!!
<% Option Explicit %>
 

<!-- #include file="includes/database.asp" -->

<!-- #include file="includes/validating.asp" -->

<!-- #include file="classes/Product.asp" -->

<!-- #include file="classes/clsCategory.asp" -->
 
 

<%

Dim objProduct

Set objProduct = New clsProduct

Dim objProducts

Set objProducts = New clsProducts
 

With objProduct

	.ProductName = "316ti SE 3dr"

	.Price = 5457

	.Category.CategoryID = 2

	.ProductID = 9	

End With

response.Write(objProducts.AddNew (objProduct))

response.Write(objProducts.ErrorMsg)

%>

Open in new window

iis-productasp.png
0
 
LVL 41

Accepted Solution

by:
graye earned 500 total points
ID: 22872564
Well, let's try this to begin with....

Inside your Class_Terminate do something like this:

if rs Is Nothing then
....
end If
0
 

Author Comment

by:BrendaMcMahon
ID: 22873239
1. Thank you. I almost found what's wrong. It's by rs with wrong field name.
And because in database file have On Error Resume so system doesn't raise error.
2. Anyways, thank you for give me idea with check on rs for each case.

So i close this question and give points for you.
0
 

Author Closing Comment

by:BrendaMcMahon
ID: 31512711
Thank you for fast and nice help
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Suggested Solutions

So every once in a while at work I am asked to export data from one table and insert it into another on a different server.  I hate doing this.  There's so many different tables and data types.  Some column data needs quoted and some doesn't.  What …
I would like to start this tip/trick by saying Thank You, to all who said that this could not be done, as it forced me to make sure that it could be accomplished. :) To start, I want to make sure everyone understands the importance of utilizing p…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now