Microsoft Cursor Engine error '80040e21'

Hi, I keep getting this error:

  Microsoft Cursor Engine error '80040e21'
  Multiple-step operation generated errors. Check each status value.

I know this error generally appears when trying to enter too much data into a field that hasn't been set big enough.

The code generating the error is below. It appears on the line:
transactionRS("transactionItem") = serviceName

it is trying to enter some data into a MySQL database, the datatype for the filed is VARCHAR(255) but serviceName is a maximum of 20 characters

any suggestions?
transactionRS.AddNew
transactionRS("transactionItem") = serviceName
transactionRS.Update

Open in new window

LVL 7
RomoloIT Professional ConsultantAsked:
Who is Participating?
 
Ryan ChongConnect With a Mentor Commented:
you spell it incorrectly...

>>transactionsRS.execute SQL

should be as:

transactionRS.execute SQL
0
 
Ryan ChongCommented:
can you post the source code before the line:

transactionRS.AddNew


?

make sure you open your recordset is writable?

like:

transactionRS.open yourSQL, conn, 3, 3

?
0
 
RomoloIT Professional ConsultantAuthor Commented:
here you go:


Set transactionRS = Server.CreateObject("ADODB.Recordset")
transactionQuery = "Select * FROM transactions"
transactionRS.Locktype = 3
transactionRS.CursorLocation = 3
transactionRS.Open transactionQuery, insertConnect

Open in new window

0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Ryan ChongCommented:
Ok, that's working fine for me, data is inserted into database:
<%
 
serviceName = "My service " & Now()
 
insertConnect = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=root;PASSWORD=password"
 
    Set transactionRS = Server.CreateObject("ADODB.Recordset")
    transactionQuery = "Select * FROM transactions"
    transactionRS.LockType = 3
    transactionRS.CursorLocation = 3
    transactionRS.Open transactionQuery, insertConnect
    
    transactionRS.AddNew
    transactionRS("transactionItem") = serviceName
    transactionRS.Update
    
    transactionRS.Close
    Set transactionRS = Nothing
 
response.write "Done! " & Now()
 
%>

Open in new window

0
 
RomoloIT Professional ConsultantAuthor Commented:
that's what I thought. It's totally confusing me as it seems to work sometimes but not others.
for the following serviceName cases it works
Swap Shop
Stylefile

but for these it doesn't:
Wardrobe Rehab
Delux Wardrobe Rehab

You can see that these are larger strings but it's writing to a field with a datatype of varchar(255)
0
 
Ryan ChongCommented:
The values I tested to be inserted into database certainly are longer than "Delux Wardrobe Rehab" and without any problems.

alternatively, you may try use an Insert SQL statement instead, just in case you can't figure it out and you run out of time... like below:
<%
 
serviceName = "My service " & Now()
 
insertConnect = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=root;PASSWORD=password"
 
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open insertConnect 
 
    v = Replace(serviceName,"'","''")
    SQL = "Insert into transactions (transactionItem) Values ('" & v & "')"
 
    conn.execute SQL
    conn.close
    set conn = nothing
 
response.write "Done! " & Now()
 
%>

Open in new window

0
 
RomoloIT Professional ConsultantAuthor Commented:
ok, tried that. The code below is the actual code in the page.
I've put a Response.Write statement in there to view the generated sql string and it produces valid SQL:
INSERT INTO transactions (date,TxCode,transactionItem,clientId) VALUES ('07-04-2009 16:12:18','stylefile07042009091','Swap Shop Points','3')

But I get the following error:

Microsoft VBScript runtime  error '800a01a8' Object required: '' /protx/buyservice.asp, line 300

line 300 is the line with transactionsRS.execute SQL

SQL = "INSERT INTO transactions (date,TxCode,transactionItem,clientId) VALUES ('" & dateNow & "','" & VendorTxCode & "','" & serviceName & "','" & clientSet__MMColParam & "')"
Response.Write(SQL)
transactionsRS.execute SQL

Open in new window

0
 
Ryan ChongCommented:
>>transactionsRS.execute SQL

?

is transactionsRS an ADODB.Connection object?

please try amend using the scripts posted @ ID:24078554
0
 
RomoloIT Professional ConsultantAuthor Commented:
Your right, i had it set as the wrong object.
Here's the new full code

MM_sfasp_STRING is the connection string

Dim insertConnect, transactionRS
					
Set transactionRS = Server.CreateObject("ADODB.Connection")
insertConnect = MM_sfasp_STRING
transactionRS.Open insertConnect
					
Dim dateNow, SQL
				
dateNow = Replace(now,"/","-")
SQL = "INSERT INTO transactions (date,TxCode,transactionItem,clientId) VALUES ('" & dateNow & "','" & VendorTxCode & "','" & serviceName & "','" & clientSet__MMColParam & "')"
Response.Write(SQL)
transactionsRS.execute SQL

Open in new window

0
 
RomoloIT Professional ConsultantAuthor Commented:
whoops, forgot to say that it's still producing the same error
0
 
RomoloIT Professional ConsultantAuthor Commented:
genius, thanks I know it would be something like that. thank you
0
All Courses

From novice to tech pro — start learning today.