• Your code

    If cmdExecProc.ExecuteScalar.Equals(True) Then

    is comparing two objects, in this case the first column of the first row returned (in you case nothing) and the value True (Boolean) and will always be false and therefore you get the result you stated.

    ExecuteNonQuery will throw an exception if an error occurs. No exception = successful execution.

    Note you can test the value of your error parameter after ExecuteNonQuery if the procedure returns success/fail via this parameter.

    Far away is close at hand in the images of elsewhere.
    Anon.