Forum Discussion

pkudrys's avatar
pkudrys
Contributor
8 months ago

DBTableVariableObj.Reset() not working as expected

Hi guys,  I'm experiencing a weird problem with DBTableVariableObj.Reset(), which is supposed to reset the iterator back to the first row. Well, it seems it does not reset the iterator at all :)  H...
  • rraghvani's avatar
    8 months ago

    What you are seeing is something called pass by value, as opposed to pass by reference. It means that JavaScript copies the values of the variables into the function arguments. 

    In this example, you would expect the value of myString to be changed to 'New String'. However, we are just passing the value,

    function myfunc(sameString) {
        sameString = 'New String';
    }
    
    function Test()
    {
        var myString = 'Old String';
        myfunc(myString);
        Log.Message(myString);
    }

    The same applies to what you have written. However, I would have expected Variables.testDBTable not to change at all, as you are "passing by value". But it seems like the object value is changing, as shown in this example,

    function increaseAge(obj) {
        obj.age += 1;
    }
    
    function Test()
    {
        let person = {
          name: 'SmartBear',
          age: 25,
        };
    
        increaseAge(person);
        Log.Message(person.age);
    }

    To reset your iterator, insert the following at the end of your function,

    KeywordTests.Test1.Variables.testDBTable.Reset();