亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fr_ibxquery.pas

?? 工廠進銷存系統,包括權限管理
?? PAS
字號:

{******************************************}
{                                          }
{     FastReport v2.4 - IBX components     }
{             Query component              }
{                                          }
{        Copyright (c) 2000 by EMS         }
{ Copyright (c) 1998-2001 by Tzyganenko A. }
{                                          }
{******************************************}

unit FR_IBXQuery;

interface

{$I FR.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, StdCtrls, Controls, Forms,
  Menus, Dialogs, FR_Class, FR_Pars, DB, IBQuery, FR_IBXTable, FR_DBUtils;

type
  TfrIBXQuery = class(TfrIBXDataSet)
  private
    FQuery: TIBQuery;
    FParams: TfrVariables;
    procedure SQLEditor(Sender: TObject);
    procedure ParamsEditor(Sender: TObject);
    procedure ReadParams(Stream: TStream);
    procedure WriteParams(Stream: TStream);
    function GetParamKind(Index: Integer): TfrParamKind;
    procedure SetParamKind(Index: Integer; Value: TfrParamKind);
    function GetParamText(Index: Integer): String;
    procedure SetParamText(Index: Integer; Value: String);
    procedure BeforeOpenQuery(DataSet: TDataSet);
  protected
    procedure SetPropValue(Index: String; Value: Variant); override;
    function GetPropValue(Index: String): Variant; override;
    function DoMethod(MethodName: String; Par1, Par2, Par3: Variant): Variant; override;
  public
    constructor Create; override;
    destructor Destroy; override;
    procedure LoadFromStream(Stream: TStream); override;
    procedure SaveToStream(Stream: TStream); override;
    procedure DefineProperties; override;
    procedure Loaded; override;
    property Query: TIBQuery read FQuery;
    property ParamKind[Index: Integer]: TfrParamKind read GetParamKind write SetParamKind;
    property ParamText[Index: Integer]: String read GetParamText write SetParamText;
  end;


implementation

uses
  FR_Utils, FR_Const, FR_DBSQLEdit, FR_IBXQueryParam
{$IFDEF QBUILDER}
, FR_IBXQB, QBuilder
{$ENDIF}
{$IFDEF Delphi6}
, Variants
{$ENDIF};


{ TfrIBXQuery }

constructor TfrIBXQuery.Create;
begin
  inherited Create;
  FQuery := TIBQuery.Create(frDialogForm);
  FQuery.BeforeOpen := BeforeOpenQuery;
  FDataSet := FQuery;
  FDataSource.DataSet := FDataSet;

  FParams := TfrVariables.Create;

  Component := FQuery;
  BaseName := 'Query';
  Bmp.LoadFromResourceName(hInstance, 'FR_IBXQUERY');
end;

destructor TfrIBXQuery.Destroy;
begin
  FParams.Free;
  FDataSet := nil;
  FQuery.Free;
  inherited Destroy;
end;

procedure TfrIBXQuery.DefineProperties;

  function GetMasterSource: String;
  var
    i: Integer;
    sl: TStringList;
  begin
    Result := '';
    sl := TStringList.Create;
    frGetComponents(FQuery.Owner, TDataSet, sl, FQuery);
    sl.Sort;
    for i := 0 to sl.Count - 1 do
      Result := Result + sl[i] + ';';
    sl.Free;
  end;

begin
  inherited DefineProperties;
  AddEnumProperty('DataSource', GetMasterSource, [Null]);
  AddProperty('Params', [frdtHasEditor], ParamsEditor);
  AddProperty('SQL', [frdtHasEditor], SQLEditor);
  AddProperty('SQL.Count', [], nil);
end;

procedure TfrIBXQuery.SetPropValue(Index: String; Value: Variant);
var
  d: TDataset;
begin
  inherited SetPropValue(Index, Value);
  Index := AnsiUpperCase(Index);
  if Index = 'DATASOURCE' then
  begin
    d := frFindComponent(FQuery.Owner, Value) as TDataSet;
    FQuery.DataSource := frGetDataSource(FQuery.Owner, d);
  end
  else if Index = 'SQL' then
    FQuery.SQL.Text := Value
end;

function TfrIBXQuery.GetPropValue(Index: String): Variant;
begin
  Index := AnsiUpperCase(Index);
  Result := inherited GetPropValue(Index);
  if Result <> Null then Exit;
  if Index = 'DATASOURCE' then
    Result := frGetDataSetName(FQuery.Owner, FQuery.DataSource)
  else if Index = 'SQL' then
    Result := FQuery.SQL.Text
  else if Index = 'SQL.COUNT' then
    Result := FQuery.SQL.Count;
end;

function TfrIBXQuery.DoMethod(MethodName: String; Par1, Par2, Par3: Variant): Variant;
begin
  Result := inherited DoMethod(MethodName, Par1, Par2, Par3);
  if Result = Null then
    Result := LinesMethod(FQuery.SQL, MethodName, 'SQL', Par1, Par2, Par3);
  if MethodName = 'EXECSQL' then
  begin
    BeforeOpenQuery(FQuery);
    FQuery.ExecSQL
  end;
end;

procedure TfrIBXQuery.LoadFromStream(Stream: TStream);
var
  s: String;
begin
  FFixupList.Clear;
  inherited LoadFromStream(Stream);
  FFixupList['DataBase'] := frReadString(Stream);
  Prop['DataBase'] := FFixupList['DataBase'];
  FQuery.Filter := frReadString(Stream);
  FQuery.Filtered := Trim(FQuery.Filter) <> '';
  s := frReadString(Stream);
  FFixupList['DataSource'] := s;
  Prop['DataSource'] := FFixupList['DataSource'];
  frReadMemo(Stream, FQuery.SQL);

  FFixupList['Active'] := frReadBoolean(Stream);
  ReadFields(Stream);
  ReadParams(Stream);
  try
    FQuery.Active := FFixupList['Active'];
  except;
  end;
end;

procedure TfrIBXQuery.SaveToStream(Stream: TStream);
begin
  inherited SaveToStream(Stream);
  frWriteString(Stream, Prop['DataBase']);
  frWriteString(Stream, FQuery.Filter);
  frWriteString(Stream, Prop['DataSource']);
  frWriteMemo(Stream, FQuery.SQL);
  frWriteBoolean(Stream, FQuery.Active);
  WriteFields(Stream);
  WriteParams(Stream);
end;

procedure TfrIBXQuery.Loaded;
begin
  Prop['DataSource'] := FFixupList['DataSource'];
  inherited Loaded;
end;

procedure TfrIBXQuery.SQLEditor(Sender: TObject);
begin
  with TfrDBSQLEditorForm.Create(nil) do
  begin
    Query := FQuery;
    M1.Lines.Assign(FQuery.SQL);
{$IFDEF QBUILDER}
    QBEngine := TfrQBIBXEngine.Create(nil);
    TfrQBIBXEngine(QBEngine).Query := FQuery;
    QBEngine.DatabaseName := Prop['Database'];
{$ENDIF}
    if (ShowModal = mrOk) and ((Restrictions and frrfDontModify) = 0) then
    begin
      FQuery.SQL := M1.Lines;
      frDesigner.Modified := True;
    end;
{$IFDEF QBUILDER}
    QBEngine.Free;
{$ENDIF}
    Free;
  end;
end;

procedure TfrIBXQuery.ParamsEditor(Sender: TObject);
var
  Params: TParams;
  ParamValues: TfrVariables;
begin
  if FQuery.Params.Count > 0 then
  begin
    Params := TParams.Create;
    Params.Assign(FQuery.Params);
    ParamValues := TfrVariables.Create;
    ParamValues.Assign(FParams);
    with TfrIBXParamsForm.Create(nil) do
    begin
      QueryComp := Self;
      Query := FQuery;
      Caption := Self.Name + ' ' + frLoadStr(SParams);
      if ShowModal = mrOk then
        frDesigner.Modified := True
      else
      begin
        FQuery.Params.Assign(Params);
        FParams.Assign(ParamValues);
      end;
      Free;
    end;
    Params.Free;
    ParamValues.Free;
  end;
end;

function TfrIBXQuery.GetParamKind(Index: Integer): TfrParamKind;
begin
  Result := pkValue;
  if not FQuery.Params[Index].Bound then
    Result := pkAssignFromMaster;
end;

procedure TfrIBXQuery.SetParamKind(Index: Integer; Value: TfrParamKind);
begin
  if Value = pkAssignFromMaster then
  begin
    FQuery.Params[Index].Bound := False;
    FParams.Delete(FParams.IndexOf(FQuery.Params[Index].Name));
  end
  else
  begin
    FQuery.Params[Index].Clear;
    FQuery.Params[Index].Bound := True;
    FParams[FQuery.Params[Index].Name] := '';
  end;
end;

function TfrIBXQuery.GetParamText(Index: Integer): String;
begin
  Result := '';
  if ParamKind[Index] = pkValue then
    Result := FParams[FQuery.Params[Index].Name];
end;

procedure TfrIBXQuery.SetParamText(Index: Integer; Value: String);
begin
  if ParamKind[Index] = pkValue then
    FParams[FQuery.Params[Index].Name] := Value;
end;

procedure TfrIBXQuery.ReadParams(Stream: TStream);
var
  i: Integer;
  w, n: Word;
begin
  Stream.Read(n, 2);
  for i := 0 to n - 1 do
  with FQuery.Params[i] do
  begin
    Stream.Read(w, 2);
    DataType := ParamTypes[w];
    Stream.Read(w, 2);
    ParamKind[i] := TfrParamKind(w);
    ParamText[i] := frReadString(Stream);
  end;
end;

procedure TfrIBXQuery.WriteParams(Stream: TStream);
var
  i: Integer;
  w: Word;
begin
  w := FQuery.Params.Count;
  Stream.Write(w, 2);
  for i := 0 to FQuery.Params.Count - 1 do
  with FQuery.Params[i] do
  begin
    for w := 0 to 10 do
      if DataType = ParamTypes[w] then
        break;
    Stream.Write(w, 2);
    w := Word(ParamKind[i]);
    Stream.Write(w, 2);
    frWriteString(Stream, ParamText[i]);
  end;
end;

procedure TfrIBXQuery.BeforeOpenQuery(DataSet: TDataSet);
var
  i: Integer;
  SaveView: TfrView;
  SavePage: TfrPage;
  SaveBand: TfrBand;

  function DefParamValue(Param: TParam): String;
  begin
    if Param.DataType in [ftDate, ftDateTime] then
      Result := '01.01.00'
    else if Param.DataType = ftTime then
      Result := '00:00'
    else
      Result := '0';
  end;

begin
  SaveView := CurView;
  CurView := nil;
  SavePage := CurPage;
  CurPage := ParentPage;
  SaveBand := CurBand;
  CurBand := nil;
  i := 0;
  try
    while i < FQuery.Params.Count do
    begin
      if ParamKind[i] = pkValue then
        if DocMode = dmPrinting then
          FQuery.Params[i].Text := frParser.Calc(ParamText[i]) else
          FQuery.Params[i].Text := DefParamValue(FQuery.Params[i]);
      Inc(i);
    end;
  except
    Memo.Clear;
    Memo.Add(ParamText[i]);
    CurView := Self;
    raise;
  end;
  CurView := SaveView;
  CurPage := SavePage;
  CurBand := SaveBand;
end;


var
  Bmp: TBitmap;

initialization
  Bmp := TBitmap.Create;
  Bmp.LoadFromResourceName(hInstance, 'FR_IBXQUERYCONTROL');
  frRegisterControl(TfrIBXQuery, Bmp, IntToStr(SInsertQuery));

finalization
  frUnRegisterObject(TfrIBXQuery);
  Bmp.Free;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一三区三区四区免费在线看| 国产精品资源在线观看| 在线观看视频91| 亚洲午夜在线观看视频在线| 欧美日精品一区视频| 无吗不卡中文字幕| 精品噜噜噜噜久久久久久久久试看| 黑人巨大精品欧美黑白配亚洲| 久久久九九九九| 白白色亚洲国产精品| 亚洲亚洲人成综合网络| 日韩欧美久久一区| 成人性视频免费网站| 亚洲精品高清在线| 日韩一区二区三区在线| 国产成人午夜精品5599| 亚洲欧洲综合另类在线| 在线观看91av| 国产成人自拍在线| 亚洲国产乱码最新视频| 精品粉嫩超白一线天av| 91蜜桃在线观看| 蜜臀va亚洲va欧美va天堂| 国产精品国产三级国产aⅴ原创 | 成人免费视频视频| 亚洲乱码国产乱码精品精的特点| 91精品国产综合久久久蜜臀粉嫩 | 国产一级精品在线| 亚洲美女视频在线| 欧美电影免费观看高清完整版在线| 岛国精品一区二区| 丝袜脚交一区二区| 综合亚洲深深色噜噜狠狠网站| 9191久久久久久久久久久| 成人网在线免费视频| 日韩成人av影视| 亚洲人成精品久久久久| 久久综合色综合88| 欧美日韩极品在线观看一区| 国产传媒久久文化传媒| 免费观看91视频大全| 亚洲乱码中文字幕综合| 国产欧美日韩精品在线| 91精品国产综合久久精品app| 成人av在线一区二区| 精品亚洲国产成人av制服丝袜| 又紧又大又爽精品一区二区| 欧美韩日一区二区三区四区| 日韩免费观看高清完整版| 色综合天天综合| 成人免费毛片a| 激情综合色丁香一区二区| 亚洲18女电影在线观看| 亚洲美女在线一区| 中文字幕中文在线不卡住| 欧美精品一区二区不卡 | 欧美一二三四在线| 91黄色在线观看| 不卡一卡二卡三乱码免费网站| 另类小说综合欧美亚洲| 奇米色一区二区| 日日骚欧美日韩| 亚洲国产一区二区视频| 亚洲天天做日日做天天谢日日欢| 国产农村妇女毛片精品久久麻豆| 精品欧美一区二区久久| 91精品蜜臀在线一区尤物| 欧美日韩一区小说| 欧美中文一区二区三区| 色一情一伦一子一伦一区| 不卡欧美aaaaa| 99久久99久久精品国产片果冻| 风间由美性色一区二区三区| 大白屁股一区二区视频| 成人h版在线观看| 成人精品一区二区三区四区| 成人不卡免费av| eeuss鲁一区二区三区| 91香蕉视频黄| 欧美亚洲综合另类| 欧美三级电影在线看| 91麻豆精品国产91久久久资源速度| 欧美伊人久久久久久久久影院| 欧美日韩一区高清| 91精品国产色综合久久不卡电影| 91精品国产综合久久精品| 日韩欧美激情一区| 久久久久久久av麻豆果冻| 国产三级三级三级精品8ⅰ区| 国产精品人妖ts系列视频| 中文字幕一区二区不卡| 亚洲欧美偷拍卡通变态| 亚洲美女淫视频| 日日夜夜精品视频天天综合网| 麻豆精品视频在线观看免费| 国产乱一区二区| 91麻豆6部合集magnet| 欧美日韩一级大片网址| 日韩欧美综合在线| 日本一二三不卡| 亚洲已满18点击进入久久| 日韩成人精品在线| 国产美女久久久久| 91国产成人在线| 91精品国产欧美日韩| 久久综合久久综合久久| 亚洲人亚洲人成电影网站色| 亚洲成a天堂v人片| 国产激情精品久久久第一区二区| 91色视频在线| 日韩一级欧美一级| 国产精品久久久一区麻豆最新章节| 成人av网在线| 精品成人私密视频| 欧美国产亚洲另类动漫| 亚洲主播在线观看| 国产一区二区三区免费播放| 色综合激情久久| 日韩免费视频一区| 亚洲精选免费视频| 黑人巨大精品欧美一区| 色乱码一区二区三区88| 2020国产精品久久精品美国| 亚洲一区二区精品久久av| 国产一区二区三区蝌蚪| 欧美日韩中文一区| 国产精品理论片在线观看| 天堂在线亚洲视频| 99国产精品99久久久久久| 日韩欧美中文一区二区| 亚洲精品自拍动漫在线| 国产精品66部| 亚洲成a人v欧美综合天堂下载 | 欧美国产成人精品| 亚洲国产成人91porn| 成人教育av在线| 另类中文字幕网| 成人性生交大片免费看中文网站| 欧美日韩dvd在线观看| 中文字幕一区二区5566日韩| 精品一区免费av| 欧美日韩第一区日日骚| 亚洲欧美中日韩| 成人免费视频播放| 欧美精品一区视频| 日韩成人精品在线观看| 精品婷婷伊人一区三区三| 国产精品区一区二区三| 国产成人亚洲精品狼色在线| 日韩三级免费观看| 日韩高清不卡一区二区三区| 色偷偷久久人人79超碰人人澡| 欧美精彩视频一区二区三区| 国产一区在线看| 精品国产成人在线影院| 裸体在线国模精品偷拍| 制服视频三区第一页精品| 亚洲电影你懂得| 欧美视频精品在线| 亚洲风情在线资源站| 欧美探花视频资源| 亚洲国产日韩在线一区模特| 色视频一区二区| 亚洲激情成人在线| 色噜噜狠狠成人中文综合| 亚洲欧美国产三级| 色天天综合色天天久久| 亚洲精品美国一| 欧美影视一区在线| 午夜成人免费视频| 欧美精品第1页| 美国十次综合导航| 亚洲精品一区二区三区蜜桃下载 | 亚洲欧美日韩电影| 91蝌蚪porny成人天涯| 亚洲私人影院在线观看| 91久久人澡人人添人人爽欧美| 一区二区三区久久久| 欧美日韩视频专区在线播放| 亚洲国产成人av| 日韩一级免费观看| 国产精品中文字幕日韩精品 | 精品国产三级电影在线观看| 韩国成人精品a∨在线观看| 中文字幕不卡在线观看| 91毛片在线观看| 日精品一区二区| 欧美变态tickle挠乳网站| 国产成人综合在线播放| 亚洲精品五月天| 日韩欧美的一区二区| 高清av一区二区| 亚洲午夜久久久久久久久电影网| 91精品黄色片免费大全| 成人免费观看av| 亚洲成人免费影院| 久久精品一区二区三区不卡 | 欧美一级理论片| 国产成a人亚洲精| 亚洲国产精品欧美一二99|