By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,971 Members | 900 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,971 IT Pros & Developers. It's quick & easy.

Problem updating this recordset...

P: n/a
Lo all,

I'm having a little bit of trouble (betty...).

I have removed some of the obvious stuff from this example (like connections
being opened/closed etc)

I create a recordset in ASP (not linked to a database)

Set testRS = Server.CreateObject("ADODB.RecordSet")
testRS.Fields.Append "WebsiteID", adInteger
testRS.Fields.Append "WebsiteName", adVarchar, 20
testRS.Fields.Append "WebsiteDesc", adVarchar, 255
testRS.Fields.Append "WebsiteURL", adVarchar, 255
testRS.Fields.Append "Relevance", adInteger

testRS.Open

I then iterate through a secondset recordset (linked to a database) and dump
in all of my rows of data into my 'local' recordset.

Do While Not RS2.EOF

testRS.AddNew

testRS("WebsiteID") = RS2("WebsiteID")
testRS("WebsiteName") = RS2("WebsiteName")
testRS("WebsiteDesc") = RS2("WebsiteDesc")
testRS("WebsiteURL") = RS2("WebsiteURL")
testRS("Relevance") = RS2("Relevance")

testRS.Update

RS2.MoveNext
Loop

I now iterate through my local recordset and populate an array and look for
words with the string for each field (calling the GetSubstringCount
function)

Dim aFields(3)
testRS.MoveFirst

Do While Not testRS.EOF

aFields(0) = testRS("WebsiteName")
aFields(1) = testRS("WebsiteDesc")
aFields(2) = testRS("WebsiteMetaKeywords")
aFields(3) = testRS("WebsiteMetaDescription")

iCount = 0

For intLoop = 0 To UBound(aSearchCriteria)

For intLoop2 = 0 To UBound(aFields)

iCount = iCount + GetSubstringCount(aFields(intLoop2),
aSearchCriteria(intLoop), False)

Next

Next

testRS("Relevance") = iCount
testRS.Update

intTotalRelevance = intTotalRelevance + iCount

testRS.MoveNext
Loop

Ok - so thats pretty much the code, now then - my 'revelance' field for each
row needs to be a numeric value, initially I'd set this to be a Integer then
realised that I would get 12.35 as a result etc, so had a quick look at the
constants for the ado stuff and saw the adNumeric - which according to this
page :

http://www.able-consulting.com/ADODataTypeEnum.htm

can be used for the SQL Server version of Numeric/Decimal - so I figured I'd
use that...

So I've changed the above field appends to this :

Set testRS = Server.CreateObject("ADODB.RecordSet")
testRS.Fields.Append "WebsiteID", adInteger
testRS.Fields.Append "WebsiteName", adVarchar, 20
testRS.Fields.Append "WebsiteDesc", adVarchar, 255
testRS.Fields.Append "WebsiteURL", adVarchar, 255
testRS.Fields.Append "Relevance", adNumeric

But now everytime it runs I get this error :

Microsoft Cursor Engine error '80040e21'

Multiple-step operation generated errors. Check each status value.

/parasolit/statics/mainbody-search-results.asp, line 708

Line 708 is the line which tries to do this :

testRS("Relevance") = iCount

followed by

testRS.Update

When I leave it set as an integer its fine works ok but I dont get the
decimals, when I change it to numeric it goes tits up....

What I am trying to achieve is the population of at percentage value in
there - so if it goes and finds a couple of results they may be stored in
the local recordset (ready to dump to the page) like so :

58.35
41.65

etc etc

Can anyone see where I'm going wrong - I can post the entire page of code if
you want but its quite big and has lots of extra stuff not really relevant
to this problem.

Any info appreciated,

Regards

Rob
Jul 19 '05 #1
Share this Question
Share on Google+
7 Replies


P: n/a
"Rob Meade" wrote ...

[..snip..]

Incidentally, I do realise I could change it to a varchar and it would
probably accept the values but because I want to sort this column later I
assumed that I might get something like this :

1
2
3
33
4
5
6
66
67
68
7

etc, based on it being text rather than

1
2
3
5
6
7
33
66
67
68

Regards

Rob
Jul 19 '05 #2

P: n/a
Rob Meade wrote:

http://www.able-consulting.com/ADODataTypeEnum.htm

can be used for the SQL Server version of Numeric/Decimal - so I
figured I'd use that...

So I've changed the above field appends to this :

testRS.Fields.Append "Relevance", adNumeric

You need to set the NumericScale and Precision properties of the Field
separately when using adNumeric or adDecimal:

testRs("Relevance").Precision=5
testRs("Relevance").NumericScale = 2

HTH,
Bob Barrows
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.
Jul 19 '05 #3

P: n/a
"Bob Barrows [MVP]" wrote...
You need to set the NumericScale and Precision properties of the Field
separately when using adNumeric or adDecimal:

testRs("Relevance").Precision=5
testRs("Relevance").NumericScale = 2


I so wish this stuff was in my vbScripts book!!!

Where do I add that then Bob - near the field appends?

Regards

Rob
Jul 19 '05 #4

P: n/a
"Bob Barrows [MVP]" wrote ...
You need to set the NumericScale and Precision properties of the Field
separately when using adNumeric or adDecimal:

testRs("Relevance").Precision=5
testRs("Relevance").NumericScale = 2


Hello again Bob,

thanks for that, I've added it beneath my code for the append.fields stuff,
just ran it and it works perfectly - :o)

Can you now tell me what they do :oD

I'm 'guessing' that numeric scale is for 2 decimal places - not sure about
the precision....

Thanks again

Rob
Jul 19 '05 #5

P: n/a
Just found this looking for something else- lol...

http://www.aspfaq.com/show.asp?id=2503
"Rob Meade" <ro**********@NOSPAMubht.swest.nhs.uk> wrote in message
news:eY****************@TK2MSFTNGP10.phx.gbl...
"Bob Barrows [MVP]" wrote...
You need to set the NumericScale and Precision properties of the Field
separately when using adNumeric or adDecimal:

testRs("Relevance").Precision=5
testRs("Relevance").NumericScale = 2


I so wish this stuff was in my vbScripts book!!!

Where do I add that then Bob - near the field appends?

Regards

Rob

Jul 19 '05 #6

P: n/a
Rob Meade wrote:
"Bob Barrows [MVP]" wrote...
You need to set the NumericScale and Precision properties of the
Field separately when using adNumeric or adDecimal:

testRs("Relevance").Precision=5
testRs("Relevance").NumericScale = 2
I so wish this stuff was in my vbScripts book!!!


It's not really vbscript: it's ADO. It's not surprising (to me, anyways)
that a vbscript book would not cover this.

ADO documentation is at msdn.microsoft.com/library - here's a link to the
starting point:
http://msdn.microsoft.com/library/en...dooverview.asp

Make sure you look up these properties so you understand what they do.

Where do I add that then Bob - near the field appends?

Yep. Actually, any time between the creation of the Field object and the
first attempt to add data to it.

Bob Barrows
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.
Jul 19 '05 #7

P: n/a
"Bob Barrows [MVP]" wrote ...
It's not really vbscript: it's ADO. It's not surprising (to me, anyways)
that a vbscript book would not cover this.

ADO documentation is at msdn.microsoft.com/library - here's a link to the
starting point:
http://msdn.microsoft.com/library/en...dooverview.asp

Make sure you look up these properties so you understand what they do.

Where do I add that then Bob - near the field appends?

Yep. Actually, any time between the creation of the Field object and the
first attempt to add data to it.


Many thanks again Bob :o)

Regards

Rob
Jul 19 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.