Xbasic

SQL::CallResultFromText Method

Syntax

N errorCode = FromText(message as C)

Arguments

messageCharacter

The error message.

Returns

ErrorCodeNumeric

Returns the corresponding code for the message. If the message does not match any existing error codes, 201 will be returned.

Description

Set the error value from the supplied message.

Discussion

The Text property of the SQL::CallResult object is used to communicate detailed information about any error that occurs when working with a SQL::Connection (or other object in the SQL namespace). The Text property for the SQL::CallResult object cannot be set directly. Any attempt to directly assign a value will result in an error:

dim cr as SQL::CallResult

cr.Text = "An Error Has Occurred"
ERROR: Cannot assign:Left-side value can't be constant 
cr.Text subproperty cannot be assigned to

The value of Text can be set by calling the FromText() method. For example, the Xbasic below is the open method for an Xbasic class that implements a custom AlphaDAO connection:

function open as L (_cn as SQL::Connection)
    if connectionString = "" then
        _cn.CallResult.FromText("No audited Connection specified")
        open = .f.
        exit function
    end if

    open = cn.open(connectionString)

    if open = .f. then
        _cn.CallResult.FromText("Could not open connection to database: " + cn.CallResult.text)
        exit function
    end if
end function

Observe that the FromText() method is used to set error information in the SQL::CallResult object for the _cn parameter passed into the function.

If the error message corresponds to one of the built-in Alpha Anywhere SQL error codes, the FromText() method will return the error code. Otherwise, it returns "201", indicating that the error message does not match any known Alpha Anywhere SQL error code.

About SQL::CallResult Error Codes 

The SQL::CallResult Code property is a number that is assigned an Alpha Anywhere SQL error code. The number corresponds to one of a set of pre-defined error messages in Alpha Anywhere. You cannot modify the set of error codes to include your own. For a list of error messages and and their corresponding codes, run the following Xbasic in the interactive window:

dim lst as c = ""

for i = 1 to 1000
    delete cr
    dim cr as sql::CallResult
    cr.code = i
    if cr.text <> "Unexpected error"
       lst = lst + cr.code + "="+ cr.Text + crlf()
    end if
next

showvar(lst)