⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vafuncs.pas

📁 详细说明:毕业论文中关于小型宾馆管理系统的详细设计毕 业论文中关于小型宾馆...一个酒店管理系统VB+Access [学生学籍管理系统(VB+Acess).zip] - !这个是刚刚编的毕业设计,可能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
//
// Variant array manipulation functions.
// (c) ChiconySoftware 2001
//
// When       Who      How
// ---------  ---      -------------------------------------------------------
// 2001.5.31  century  Initial version
//
unit vafuncs;

interface

uses sysutils, classes,dialogs,dbfuncs,dbInfo;

// Prototypes
function VarIsNullOrEmpty(const value: Variant): Boolean;

function RowsCheck(const rows: OleVariant; num_columns: Integer): Boolean;
function ColumnsCheck(const rows: OleVariant; num_columns: Integer): Boolean;

function GetArrayBounds(const var_array: OleVariant;
         var high_col, low_col, high_row, low_row: Integer): Boolean;

function GetArrayLowBounds(const var_array: OleVariant;
         var low_col, low_row: Integer): Boolean;

function InitialiseVariantArray(var var_array: OleVariant;
         const columns: Integer): Boolean; overload;
function InitialiseVariantArray(var var_array: OleVariant;
         const columns: Integer; var_type: Integer; init_value: Variant): Boolean; overload;

function ValidSelectResult(const value: Variant; const columns: Integer=0): Boolean;

function CopyRow(const src_array: OleVariant; var dest_array: OleVariant;
         const row: Integer=0): Boolean;

function NullValue(const value: Variant; const null_value: Variant): Variant;

function SortArray(var var_array: OleVariant; sort_column: Integer): Boolean;
function CheckExistStrVar(t_connection:TPodmsConnection;tableName,fieldName,val:string):boolean;
procedure AddValue(value: Variant; var q:TPodmsQuery;
         const par_name: String; const date_time: DT_TYPES);

function AddColumn(value: Variant; var rows_str, values_str: String;
         const col_name: String): Boolean;
function CheckExistIntVar(t_connection:TPodmsConnection;tableName,fieldName:string;varl:integer):boolean;
function CheckIssystem(val,ctype:string):boolean;
procedure AddUpdateValue(value: Variant; var q:TPodmsQuery;
         const col_name: String; const date_time: DT_TYPES=DT_DATE);

implementation



function AddColumn(value: Variant; var rows_str, values_str: String;
         const col_name: String): Boolean;
begin
     // Value is NULL?
     if (VarType(value)<>varNull) and (VarType(value)<>varEmpty) then begin
        // Update rows string
        rows_str:=rows_str + ',' + col_name;

        // Update parameters string
        values_str:=values_str + ',:v' + col_name;

        Result:=TRUE;
     end else
        Result:=FALSE;
end;

//
// Used by the Insertxx functions to add the parameter values to an SQL
// statement text.
//
// Args: value of the parameter
//       SQL query to add parameter value to
//       parameter name
//       format to use for date & time columns (optional, default is DT_DATE)
//
// Returns: TRUE on success
//          FALSE is value type is unknown
//
// NOTE: EUnknownValueType exception is raised if ValType of value is unknown
//
//       If the value is NULL or empty then no parameter value will be
//       included and TRUE will be returned
//
procedure AddValue(value: Variant; var q:TPodmsQuery;
         const par_name: String; const date_time: DT_TYPES);

begin
     if (VarType(value)=varString) or (VarType(value)=varOleStr) then
        // String
        q.ParamString(par_name, value)
     else if (VarType(value)=varInteger) or (VarType(value)=varSmallInt) or (VarType(value)=varByte) then
        // Integer
        q.ParamInteger(par_name, value)
     else if (VarType(value)=varDate) then
        // Date - use date, time, or both depending on date_time value
        GiveDateOrTime(true,q, par_name, date_time, value)
     else if (VarType(value)=varBoolean) then begin
        // Boolean - may not be supported by RDBMS
        //if g_Prefs.PREFS_BITSUPPORTED then begin
        //   q.ParamBoolean(par_name, value);
        //end else begin
           if value=TRUE then q.ParamString(par_name, 'Y')
           else q.ParamString(par_name, 'N');
        //end;
     end else if (VarType(value)=varCurrency) then
        // Currency - not used in Prexim
        q.ParamCurrency(par_name, value)
     else if (VarType(value)=varSingle) or (VarType(value)=varDouble) then
        // Real number - not used in Prexim
        q.ParamFloat(par_name, value)
     else if (varType(value)=varVariant) then begin
        q.ParamVariant(par_name,value);
     end else if VarIsNullOrEmpty(value) then begin
        // Ignore - NULL or empty value
        ;
     end else
        EUnknownValueType.Create('Unknown value type for parameter '+par_name);

end;
procedure AddUpdateValue(value: Variant; var q:TPodmsQuery;
         const col_name: String; const date_time: DT_TYPES=DT_DATE);
var par_name: String;
begin
     // Include this value?
     if VarIsEmpty(value) then Exit;

     // Initialise
     par_name:='vx'+col_name;

     // Add parameter value
     if (VarType(value)=varString) or (VarType(value)=varOleStr) then begin
        // String
        q.SQLAdd(', '+col_name+'=:'+par_name);
        q.ParamString(par_name, value);
     end else if (VarType(value)=varInteger) or (VarType(value)=varSmallInt) or (VarType(value)=varByte) then begin
        // Integer
        q.SQLAdd(', '+col_name+'=:'+par_name);
        q.ParamInteger(par_name, value)
     end else if (VarType(value)=varDate) then begin
        // Date - use date_time to decide to use date, time, or both
        q.SQLAdd(', '+col_name+'=:'+par_name);
        q.ParamDateTime(par_name,value);
        //GiveDateOrTime(q, par_name, date_time, value)
     end else if (VarType(value)=varBoolean) then begin
        // Boolean - may not be supported by RDBMS
        q.SQLAdd(', '+col_name+'=:'+par_name);
        q.ParamBoolean(par_name, value);

     end else if (VarType(value)=varCurrency) then begin
        // Currency - not used in Prexim
        q.SQLAdd(', '+col_name+'=:'+par_name);
        q.ParamCurrency(par_name, value)
     end else if (VarType(value)=varSingle) or (VarType(value)=varDouble) then begin
        // Real - not used in Prexim
        q.SQLAdd(', '+col_name+'=:'+par_name);
        q.ParamFloat(par_name, value)
     end else if VarIsNull(value) then begin
        // NULL
        q.SQLAdd(', '+col_name+'=NULL');
     end else begin
        // Failed - unknown value
        EUnknownValueType.Create('Unknown value type for column '+col_name);
     end;
end;


//

function CheckExistStrVar(t_connection:TPodmsConnection;tableName,fieldName,val:string):boolean;
var q: TPodmsQuery;
begin
     Result:=True;
     // Create query object
     q:=TPodmsQuery.Create(t_connection);
     if q=nil then begin
        Result:=false;
        Exit;
     end;
     // Construct SQL statement
     try
        q.SQLAdd('Select '+fieldName+' From '+tableName);
        q.SQLAdd(' where '+fieldName+'=:var');
        q.ParamString('var',val);
        q.Open;
        If q.RecordCount=0 then begin
           Result:=false;
           Exit;
        end;
      except on E:Exception do begin
           Result:=false;
           Exit;
        end;
     end;


     try
       CloseNewQuery(q);
     except

     end;

end;
function CheckIssystem(val,ctype:string):boolean;
begin
   Result:=false;
   if ctype='G' then  begin
      if uppercase(val)=uppercase('system') then result:=true;
   end
   else if ctype='U' then begin
      if (uppercase(val)=uppercase('Admin')) or (uppercase(val)=uppercase('Manager')) then result:=true;
   end;


end;
function CheckExistIntVar(t_connection:TPodmsConnection;tableName,fieldName:string;varl:integer):boolean;
var q: TPodmsQuery;
begin
     Result:=True;
     // Create query object
     q:=TPodmsQuery.Create(t_connection);
     if q=nil then begin
        Result:=false;
        Exit;
     end;
     // Construct SQL statement
     try
        q.SQLAdd('Select '+fieldName+' From '+tableName);
        q.SQLAdd(' where '+fieldName+'=:var');
        q.ParamInteger('var',varl);
        q.Open;
        If q.RecordCount=0 then begin
           Result:=false;
           Exit;
        end;
      except on E:Exception do begin
           Result:=false;
           Exit;
        end;
     end;


     try
       CloseNewQuery(q);
     except

     end;

end;


//
// Helper function to return a default value if the value is null/empty
//
// e.g. NullValue(value, TRUE) will return TRUE if value is null or
//                             will return value if value is not null
//
// Args: value to check to see if null or empty
//       default value to use if value is null or empty
//
// Returns: null_value if value is null or empty
//          value if value is not null or empty
//
function NullValue(const value: Variant; const null_value: Variant): Variant;
begin
     // Valid variant?
     if VarIsNullOrEmpty(value) then Result:=null_value
     else Result:=value;
end;

//
// Returns TRUE if the variant given is a valid result from a call
// to a DR_xx method or a AD_Getxx method
//
// Args: variant to check
//       number of columns expected (optional, 0=do not check)
//
// Returns: TRUE if the variant is two-dimensional and contains atleast
//          one row
//
function ValidSelectResult(const value: Variant; const columns: Integer=0): Boolean;
begin
     // Initialise
     Result:=FALSE;
     // Valid variant?
     if VarIsNullOrEmpty(value) then Exit;
     // Two-dimensional?
     if VarArrayDimCount(value)<>2 then Exit;
     // Correct number of columns?
     if (columns>0) and (VarArrayHighBound(value, 1) - VarArrayLowBound(value, 1)<>columns - 1) then Exit;
     // Atleast one row?
     if VarArrayHighBound(value, 2) - VarArrayLowBound(value, 2) < 0 then Exit;
     // Success
     Result:=TRUE;
end;

//
// Returns TRUE if a variant is Null or empty
//
// Args: variant to test
//
// Returns: TRUE if a variant is Null or empty
//
function VarIsNullOrEmpty(const value: Variant): Boolean;
begin
     Result:=VarIsEmpty(value) or VarIsNull(value);
end;

//
// A helper function for the UPDATE methods to check that the variant
// array passed is in the correct format
//
// Args: rows is the 1-dimensional variant array containing the row data to
//       update
//
//       num_columns is the number of columns expected
//
// Returns: TRUE on success
//
function RowsCheck(const rows: OleVariant; num_columns: Integer): Boolean;
var low_rows, high_rows: Integer;
begin
     // Assume failure
     Result:=FALSE;

     // Correct dimensions?
     if VarIsNullOrEmpty(rows) then Exit;
     if VarArrayDimCount(rows)<>1 then Exit;

     // Get boundaries
     low_rows:=VarArrayLowBound(rows, 1);
     high_rows:=VarArrayHighBound(rows, 1);

     // Correct number of columns?
     if (high_rows - low_rows <> num_columns - 1) then Exit;

     // Success
     Result:=TRUE;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -