The IsValidUser method determines if the specified user name is in the list of authorized users. Behind the scenes, it simply calls the Item method and returns True if that method returns a valid object.

Syntax

IsValidUser(UserName as String) as Boolean

Parameters
UserName
The name of the user to check.

Return Value
True if the specified user name is in the list of authorized users.

Example
This example, which could be used as the code for the Application.BeforeLogin script for a project, adds all valid users of the target application to the list of users for Stonefield Query (assuming the password is the same as the user name). In the case of the Visual FoxPro code, it assumes there's a table in the target application's directory called USERS containing the valid users of the application. The VBScript and JavaScript code uses the Employee table of the Northwind database instead. Note if the maximum number of licensed users has already been added, Users.AddItem returns a null value, so the script code handles this.

Visual FoxPro

lparameters toApplication as SQApplication
local lcDirectory, lnSelect, lcUserName, loUser as User
lcDirectory = toApplication.TargetApplicationDirectory
lnSelect = select()
select 0
use (lcDirectory + 'USERS')
scan
  lcUserName = trim(USERNAME)
  if not toApplication.Users.IsValidUser(lcUserName)
    loUser = toApplication.Users.AddItem(lcUserName)
    if vartype(loUser) = 'O'
      loUser.Password = lcUserName
    endif
  endif
endscan
use
select (lnSelect)

VBScript

function Main(Application)
dim Conn, RS, User
set Conn = createobject("ADODB.Connection")
set RS = createobject("ADODB.RecordSet")
Conn.ConnectionString = "provider=SQLOLEDB.1;" & _
  "data source=(local);initial catalog=Northwind;"
Conn.Open
RS.ActiveConnection = Conn
RS.Open("select * from employees")
on error resume next
do while not RS.EOF
  UserName = RS.Fields("LastName").Value & _
    RS.Fields("FirstName").Value
  if Application.Users.IsValidUser(UserName) = False then
    set User = Application.Users.AddItem(UserName)
    if Err.Number = 0 then
      User.FirstName = RS.Fields("FirstName").Value
      User.LastName = RS.Fields("LastName").Value
      User.Password = UserName
    end if
    RS.MoveNext
  end if
loop
on error goto 0
RS.Close
Conn.Close
Main = True
end function

JavaScript

function Main(Application) {
var Conn, RS, UserName, User, e ;
Conn = new ActiveXObject('ADODB.Connection') ;
RS = new ActiveXObject('ADODB.RecordSet') ;
Conn.ConnectionString = 'provider=SQLOLEDB.1;' +
  'data source=(local);initial catalog=Northwind;' ;
Conn.Open ;
RS.ActiveConnection = Conn ;
RS.Open('select * from employees') ;
do {
  UserName = RS.Fields('LastName').Value +
    RS.Fields('FirstName').Value ;
  if (Application.Users.IsValidUser(UserName) = false) {
    try {
      User = Application.Users.AddItem(UserName) ;
      User.FirstName = RS.Fields('FirstName').Value ;
      User.LastName = RS.Fields('LastName').Value ;
      User.Password = UserName ;
      }
    catch(e) { }
    }
    RS.MoveNext ;
  }
}
while (! RS.EOF) ;
RS.Close ;
Conn.Close ;
return true ;
}

C#

public static bool Application_BeforeLogin(SFQApplication sfqApplication)
{	
  string userName = String.Empty;
  Database database = SQApplication.DataEngine.Databases.GetMainDatabase();

  string resultSet = database.ExecuteSQLStatement("select firstname, " + 
    "lastname from employees");
  XmlDocument doc = new XmlDocument();
  doc.LoadXml(resultSet);
  string nodePath = "/DataSet/_resultset";
  XmlNode node = doc.SelectSingleNode(nodePath);

  if (node != null)
  {
    do
    {
      userName = node.Attributes[0].Value + " " + node.Attributes[1].Value;
      node = node.NextSibling;
      if (!SQApplication.Users.IsValidUser(userName)) 
      {
        try 
        {
          User user = SQApplication.Users.AddItem(userName.Substring(0, 10));
          user.FirstName = node.Attributes[0].Value ;
          user.LastName = node.Attributes[1].Value ;
          user.Password = userName.Substring(0, 10);
        }
        catch(Exception e) 
        { 
        }
      }
    }while (node != null);
  }
  return true;
}

VB.NET

public shared function Application_BeforeLogin(sfqApplication as SFQApplication) as Boolean

  Dim userName As String = String.Empty
  Dim database As Database = SQApplication.DataEngine.Databases.GetMainDatabase()
  Dim resultSet As String = database.ExecuteSQLStatement("select firstname, " +
    "lastname from employees")
  Dim doc As XmlDocument = New XmlDocument()
  doc.LoadXml(resultSet)
  Dim nodePath As String = "/DataSet/_resultset"
  Dim node As XmlNode = doc.SelectSingleNode(nodePath)

  If Not node Is Nothing Then
    Do
      userName = node.Attributes(0).Value + " " + node.Attributes(1).Value
      node = node.NextSibling
      If Not SQApplication.Users.IsValidUser(userName) Then
        Try
          Dim newUser as User = SQApplication.Users.AddItem(userName.Substring(0, 10))
          newUser.FirstName = node.Attributes(0).Value
          newUser.LastName = node.Attributes(1).Value
          newUser.Password = userName.Substring(0, 9)
        Catch e As Exception
        End Try
      End If
    Loop While Not node Is Nothing
  End If
  Return True
End Function

See also

Users Collection