PRB: Recordset.MoveNext Changes Variable in JavaScript (195193)



The information in this article applies to:

  • Microsoft Active Server Pages
  • ActiveX Data Objects (ADO) 2.0
  • ActiveX Data Objects (ADO) 2.1 SP2
  • ActiveX Data Objects (ADO) 2.5
  • ActiveX Data Objects (ADO) 2.6

This article was previously published under Q195193

SYMPTOMS

When you use JavaScript to set a variable equal to a field value in a Recordset object--that is, myField = RS.Fields("FieldName")--the value in the variable changes when a rs.MoveNext is performed.

CAUSE

In JavaScript, Recordset.Fields returns an ADO Field object rather than the value stored in that field, thus when an RS.MoveNext is performed, the values in the properties of the Field object are changed, most notably the .value property.

RESOLUTION

Use the .value property if your intention is to return the value of the field in the recordset object rather than a Field object, as in the following example:
   LastFieldName = RS.Fields("FieldName").value;
				

STATUS

This behavior is by design.

MORE INFORMATION

The following Active Server Pages (ASP) sample code demonstrates how to return the value of the field in the Recordset object.
   <SCRIPT LANGUAGE=javascript RUNAT=Server>
   var RS1 = Server.CreateObject("ADODB.RECORDSET")
   RS1.ActiveConnection = "DSN=Pubs"
   RS1.Open ("select * from authors")
   myVal = RS1.Fields("au_lname").value  //Remove the .value
                                         //to change myVal.
   Response.Write ((myVal) + "<BR>")
   RS1.MoveNext()
   Response.Write (myVal)
   </SCRIPT>
				

Modification Type:MinorLast Reviewed:3/14/2005
Keywords:kbDatabase kbprb KB195193