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

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

?? datadrivereh.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    MemRec.Value[DataFieldIndex, DataValueVersion] := Field.Value;
end;

procedure TDataDriverEh.DefaultRefreshRecord(MemRecord: TMemoryRecordEh);
var
  vValues: Variant;
  i: Integer;
  KeyFound: Boolean;
  Bookmark: TBookmarkStr;
//  DeltaDataSet: TMemTableDataEh;
//  DeltaRec: TMemoryRecordEh;
begin
  if (ProviderDataSet <> nil) then
  begin
//    DeltaDataSet := CreateDeltaData;
//    DeltaDataSet.DataStruct.Assign(MemRecord.DataStruct);
    try

//      DeltaRec := DeltaDataSet.RecordsList.NewRecord;

      Bookmark := ProviderDataSet.Bookmark;
      try

        if MemRecord.UpdateStatus = usModified
          then vValues := MemRecord.DataValues[KeyFields, dvvOldValueEh]
          else vValues := MemRecord.DataValues[KeyFields, dvvValueEh];
        KeyFound := ProviderDataSet.Locate(KeyFields, vValues, []);

        if KeyFound then
//          for i := 0 to DeltaDataSet.DataStruct.Count-1 do
//            DeltaRec.Value[i, dvtValueEh] :=
            for i := 0 to MemRecord.DataStruct.Count-1 do
              AssignFieldValue(MemRecord.DataStruct.MemTableData, MemRecord, i,
                dvvRefreshValue, ReaderDataSet)
        else
          raise Exception.Create('Key is not found in ProviderDataSet');

      finally
        if (Bookmark <> '') and DataSetBookmarkValid(ProviderDataSet, Bookmark) then
          ProviderDataSet.Bookmark := Bookmark;
      end;

//      MemRecord.RefreshRecord(DeltaRec);

    finally
//      DeltaDataSet.Free;
    end;
//    Resync([]);
  end;
end;

procedure TDataDriverEh.RefreshRecord(MemRecord: TMemoryRecordEh);
begin
  if Assigned(OnRefreshRecord)
    then OnRefreshRecord(Self, MemRecord.DataStruct.MemTableData, MemRecord)
    else DefaultRefreshRecord(MemRecord);
end;

procedure TDataDriverEh.SetKeyFields(const Value: String);
begin
  FKeyFields := Value;
end;

procedure TDataDriverEh.SetProviderDataSet(const Value: TDataSet);
begin
  if Value <> FProviderDataSet then
  begin
    FProviderDataSet := Value;
    if Value <> nil then Value.FreeNotification(Self);
  end;
end;

{
function TDataDriverEh.GetReaderDataSet: TDataSet;
begin
  Result := ProviderDataSet;
end;
}

procedure TDataDriverEh.SetProviderEOF(const Value: Boolean);
begin
  if FProviderEOF <> Value then
  begin
    FProviderEOF := Value;
    if FProviderEOF and (FReaderDataSet <> nil) and FReaderDataSetFreeOnEof then
    begin
      FReaderDataSet.Free;
      FReaderDataSetFreeOnEof := False;
    end;
    FReaderDataSet := nil;
  end;
end;

procedure TDataDriverEh.SetAutoIncFields(Fields: TFields; DataStruct: TMTDataStructEh);
begin
end;

function TDataDriverEh.GetDataDriverConsumer: TObject;
begin
  Result := FDataDriverConsumer;
end;

procedure TDataDriverEh.SetDataDriverConsumer(ADataDriverConsumer: TObject);
begin
  FDataDriverConsumer := ADataDriverConsumer;
end;

{ TCustomSQLCommandEh }

constructor TCustomSQLCommandEh.Create(ADataDriver: TCustomSQLDataDriverEh);
begin
  inherited Create;
  FDataDriver := ADataDriver;
  FCommandText := TStringList.Create;
  TStringList(FCommandText).OnChange := CommandTextChanged;
end;

destructor TCustomSQLCommandEh.Destroy;
begin
  FreeAndNil(FCommandText);
  inherited Destroy;
end;

function TCustomSQLCommandEh.GetCommandText: TStrings;
begin
  Result := FCommandText;
end;

procedure TCustomSQLCommandEh.SetCommandText(const Value: TStrings);
begin
  FCommandText.Assign(Value);
end;

function TCustomSQLCommandEh.Execute(var Cursor: TDataSet; var FreeOnEof: Boolean): Integer;
var
  Processed: Boolean;
begin
  Processed := False;
  Result := -1;
  Cursor := nil;
  if DefaultSQLDataDriverResolver <> nil then
    Result := DefaultSQLDataDriverResolver.ExecuteCommand(DataDriver, Self, Cursor, FreeOnEof, Processed);
end;

procedure TCustomSQLCommandEh.CommandTextChanged(Sender: TObject);
begin
  if (DataDriver <> nil) then
    DataDriver.CommandTextChanged(Self);
end;

procedure TCustomSQLCommandEh.CommandTypeChanged;
begin
end;

function TCustomSQLCommandEh.GetCommandType: TSQLCommandTypeEh;
begin
  Result := FCommandType;
end;

procedure TCustomSQLCommandEh.SetCommandType(const Value: TSQLCommandTypeEh);
begin
  FCommandType := Value;
end;

procedure TCustomSQLCommandEh.RefreshParams(MemRecord: TMemoryRecordEh; DataValueVersion: TDataValueVersionEh);
begin
end;

function TCustomSQLCommandEh.GetOwner: TPersistent;
begin
  Result := FDataDriver;
end;

function TCustomSQLCommandEh.GetNamePath: String;
begin
  Result := 'SQLCommand';
end;

function TCustomSQLCommandEh.IsCommandTypeStored: Boolean;
begin
  Result := (FCommandType <> DefaultCommandType);
end;

function TCustomSQLCommandEh.DefaultCommandType: TSQLCommandTypeEh;
begin
  Result := DataDriver.GetDefaultCommandTypeFor(Self);
end;

procedure TCustomSQLCommandEh.Assign(Source: TPersistent);
begin
  if Source is TCustomSQLCommandEh then
    with (Source as TCustomSQLCommandEh) do
    begin
      Self.CommandText := CommandText;
      Self.CommandType := CommandType;
    end;
end;

{procedure TCustomSQLCommandEh.AssignParams(AParams: TParams);
begin
end;

procedure TCustomSQLCommandEh.AssignToParams(AParams: TParams);
begin
end;}

function TCustomSQLCommandEh.GetParams: TParams;
begin
  Result := nil;
end;

procedure TCustomSQLCommandEh.SetParams(AParams: TParams);
begin
end;

{procedure TCustomSQLCommandEh.SetDynamicSQL(const Value: Boolean);
begin
  FDynamicSQL := Value;
end;
}

{ TBaseSQLCommandEh }

constructor TBaseSQLCommandEh.Create(ADataDriver: TBaseSQLDataDriverEh);
begin
  inherited Create(ADataDriver);
  FParams := TParams.Create(Self);
  FParamCheck := True;
end;

destructor TBaseSQLCommandEh.Destroy;
begin
  FreeAndNil(FParams);
  inherited Destroy;
end;

procedure TBaseSQLCommandEh.RefreshParams(MemRecord: TMemoryRecordEh; DataValueVersion: TDataValueVersionEh);
var
  I: Integer;
begin
  for I := 0 to Params.Count - 1 do
  begin
    if Assigned(OnAssignParam)
      then OnAssignParam(Self, MemRecord, DataValueVersion, Params[I])
      else DefaultRefreshParam(MemRecord, DataValueVersion, Params[I]);
  end;
end;

procedure TBaseSQLCommandEh.DefaultRefreshParam(MemRecord: TMemoryRecordEh;
  DataValueVersion: TDataValueVersionEh; Param: TParam);
begin
  DataDriver.AssignCommandParam(Self, MemRecord, DataValueVersion, Param);
end;

function TBaseSQLCommandEh.GetParamCheck: Boolean;
begin
  Result := FParamCheck;
end;

procedure TBaseSQLCommandEh.SetParamCheck(const Value: Boolean);
begin
  FParamCheck := Value;
end;

procedure TBaseSQLCommandEh.SetParams(AParams: TParams);
begin
  if FParams <> AParams then
    FParams.Assign(AParams);
end;

function TBaseSQLCommandEh.GetParams: TParams;
begin
  Result := FParams;
end;

procedure TBaseSQLCommandEh.Assign(Source: TPersistent);
begin
  inherited Assign(Source);
  if Source is TBaseSQLCommandEh then
    with (Source as TBaseSQLCommandEh) do
    begin
      Self.ParamCheck := ParamCheck;
      Self.Params := Params;
    end
  else if Source is TCustomSQLCommandEh then
    with (Source as TCustomSQLCommandEh) do
    begin
      Self.ParamCheck := ParamCheck;
      Self.Params.Assign(GetParams);
    end
end;

procedure TBaseSQLCommandEh.CommandTextChanged(Sender: TObject);
var
  List: TParams;
begin
  inherited CommandTextChanged(Sender);
  if not (csReading in DataDriver.ComponentState) then
//    if ParamCheck then
//      Params.ParseSQL(CommandText.Text, True);
    if ParamCheck or (csDesigning in DataDriver.ComponentState) then
    begin
      List := TParams.Create(Self);
      try
        List.ParseSQL(CommandText.Text, True);
        List.AssignValues(Params);
        Params.Clear;
        Params.Assign(List);
      finally
        List.Free;
      end;
    end;
end;

function TBaseSQLCommandEh.GetDataDriver: TBaseSQLDataDriverEh;
begin
  Result := TBaseSQLDataDriverEh(inherited DataDriver);
end;

{procedure TBaseSQLCommandEh.AssignParams(AParams: TParams);
begin
  Params := AParams;
end;

procedure TBaseSQLCommandEh.AssignToParams(AParams: TParams);
begin
  AParams.Assign(Params);
end;}

{ TCustomSQLDataDriverEh }

constructor TCustomSQLDataDriverEh.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FSelectCommand := CreateSelectCommand;
  FSelectCommand.FCommandType := GetDefaultCommandTypeFor(FSelectCommand);
  FUpdateCommand := CreateUpdateCommand;
  FUpdateCommand.FCommandType := GetDefaultCommandTypeFor(FUpdateCommand);
  FInsertCommand := CreateInsertCommand;
  FInsertCommand.FCommandType := GetDefaultCommandTypeFor(FInsertCommand);
  FDeleteCommand := CreateDeleteCommand;
  FDeleteCommand.FCommandType := GetDefaultCommandTypeFor(FDeleteCommand);
  FGetrecCommand := CreateGetrecCommand;
  FGetrecCommand.FCommandType := GetDefaultCommandTypeFor(FGetrecCommand);
  FSpecParams := TStringList.Create;
  ResolveToDataSet := False;
  FServiceCommand := CreateCommand;
  FDynaSQLParams := TDynaSQLParamsEh.Create(Self);
end;

destructor TCustomSQLDataDriverEh.Destroy;
begin
  FreeAndNil(FDynaSQLParams);
  FreeAndNil(FSelectCommand);
  FreeAndNil(FUpdateCommand);
  FreeAndNil(FInsertCommand);
  FreeAndNil(FDeleteCommand);
  FreeAndNil(FGetrecCommand);
  FreeAndNil(FServiceCommand);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品高清在线| 国产91色综合久久免费分享| 国产欧美精品一区二区色综合朱莉| 欧美日韩一区二区三区在线看| 成人app网站| 91在线你懂得| 91蜜桃免费观看视频| 99国产精品久| 欧美视频在线一区二区三区 | 日韩精品一区二区三区视频 | 日韩一区二区在线看| 日韩一区二区三区视频在线观看| 日韩一区二区麻豆国产| 日韩欧美在线网站| 久久综合久久久久88| 中文字幕成人在线观看| 亚洲欧美日韩国产中文在线| 亚洲影视在线播放| 日韩和欧美一区二区三区| 免费的成人av| 成人午夜碰碰视频| 欧美亚洲动漫制服丝袜| 日韩欧美国产一区二区在线播放| 久久精品一区二区| 亚洲免费毛片网站| 日韩高清国产一区在线| 激情六月婷婷久久| gogogo免费视频观看亚洲一| 欧美专区在线观看一区| 欧美xxxx在线观看| 国产精品高潮呻吟| 日韩在线观看一区二区| 国产精品一区二区黑丝| 欧美日韩免费电影| 国产目拍亚洲精品99久久精品| 亚洲欧美视频在线观看| 另类小说综合欧美亚洲| 91一区在线观看| 欧美xxxxx牲另类人与| 亚洲欧美日韩在线| 黑人精品欧美一区二区蜜桃| 91丨porny丨国产| 精品国产区一区| 亚洲一区二区四区蜜桃| 国产成人免费高清| 日韩欧美在线观看一区二区三区| 日韩毛片一二三区| 黄色小说综合网站| 69久久99精品久久久久婷婷| 国产精品成人午夜| 国产在线播精品第三| 欧美日韩高清一区| 国产精品福利电影一区二区三区四区 | 日产国产高清一区二区三区| 成人午夜在线视频| 日韩一区二区在线看| 亚洲在线视频网站| 成人av免费在线观看| 久久这里只有精品视频网| 亚洲国产精品一区二区www | 欧美日韩不卡在线| 亚洲欧美欧美一区二区三区| 粉嫩蜜臀av国产精品网站| 日韩视频一区在线观看| 亚洲最新视频在线观看| 94-欧美-setu| 亚洲国产高清在线观看视频| 国产一区二区美女| 精品国产乱码久久| 全国精品久久少妇| 91精品国产高清一区二区三区蜜臀 | 中文字幕人成不卡一区| 高清不卡一二三区| 久久精品视频网| 国内精品自线一区二区三区视频| 4438x成人网最大色成网站| 一区二区三区四区五区视频在线观看 | 日韩免费看的电影| 蜜桃视频在线一区| 精品国产乱码久久| 国产精品一区在线观看乱码| 久久先锋影音av鲁色资源| 精品无人码麻豆乱码1区2区 | 亚洲成人中文在线| 日本韩国视频一区二区| 夜夜嗨av一区二区三区网页| 在线观看免费亚洲| 日韩av网站免费在线| 日韩你懂的在线播放| 国产精品一区二区在线观看不卡 | 亚洲va中文字幕| 欧美一区二区三区不卡| 蜜臀av一区二区| 国产亚洲自拍一区| eeuss影院一区二区三区| 亚洲激情男女视频| 欧美男男青年gay1069videost | 亚洲成人7777| 日韩欧美在线网站| 成人毛片视频在线观看| 亚洲精品乱码久久久久久黑人| 欧美日韩在线播放| 老司机免费视频一区二区三区| 欧美精品一区二区三区蜜桃 | 日韩精品一卡二卡三卡四卡无卡| 日韩西西人体444www| 国产一区二区久久| 亚洲欧美色一区| 日韩女优电影在线观看| av成人免费在线观看| 亚洲成精国产精品女| 久久精品网站免费观看| 欧美影片第一页| 国产伦理精品不卡| 亚洲一区精品在线| 国产亚洲va综合人人澡精品| 欧美吞精做爰啪啪高潮| 国产麻豆一精品一av一免费 | 亚洲欧洲成人自拍| 555夜色666亚洲国产免| 成人爱爱电影网址| 美女一区二区在线观看| 亚洲伦在线观看| 中文字幕成人网| 日韩免费观看高清完整版| 欧美性猛交xxxx乱大交退制版| 久久超碰97人人做人人爱| 亚洲小少妇裸体bbw| 国产精品国产三级国产aⅴ原创| 日韩欧美电影在线| 欧美日韩二区三区| 色综合久久88色综合天天6| 国产成人无遮挡在线视频| 丝袜美腿亚洲色图| 亚洲制服丝袜一区| 亚洲视频免费在线| 欧美国产激情一区二区三区蜜月 | 国产盗摄女厕一区二区三区| 久久国产夜色精品鲁鲁99| 亚洲一区二区在线播放相泽 | 日韩电影在线观看一区| 日韩理论电影院| 国产精品乱码一区二区三区软件| 日韩一二三区不卡| 欧美一级二级三级蜜桃| 欧美另类高清zo欧美| 欧美日韩亚洲国产综合| 欧美亚洲免费在线一区| 欧美在线观看你懂的| 色94色欧美sute亚洲线路一ni| 处破女av一区二区| 成人黄色国产精品网站大全在线免费观看 | 亚洲自拍偷拍图区| 亚洲夂夂婷婷色拍ww47| 一片黄亚洲嫩模| 亚洲一二三区在线观看| 伊人一区二区三区| 亚洲国产精品影院| 日日骚欧美日韩| 日韩高清不卡在线| 久久av资源网| 国产美女精品在线| 成人性生交大片免费看视频在线 | 成人午夜视频福利| 成人黄色一级视频| 色婷婷av一区二区三区软件 | 老色鬼精品视频在线观看播放| 日本中文在线一区| 韩国欧美国产1区| 国产成人精品影视| 99国产精品久久久| 欧美写真视频网站| 欧美精品久久天天躁| 精品日产卡一卡二卡麻豆| 久久久国产一区二区三区四区小说 | 亚洲综合网站在线观看| 青青国产91久久久久久| 蜜臀av一级做a爰片久久| 国产精品白丝jk白祙喷水网站| jizzjizzjizz欧美| 欧美精选午夜久久久乱码6080| 日韩美女一区二区三区四区| 国产欧美一区二区三区沐欲| 亚洲精品免费在线观看| 麻豆成人av在线| 99久久99久久久精品齐齐| 欧美日韩中文字幕一区| 久久久美女艺术照精彩视频福利播放| 一区在线观看视频| 五月天久久比比资源色| 国产精品亚洲专一区二区三区| 色妞www精品视频| xf在线a精品一区二区视频网站| 国产精品福利一区二区三区| 日本女优在线视频一区二区| 成年人网站91| 精品国产一区二区三区av性色| 亚洲精品午夜久久久| 国产又黄又大久久| 777色狠狠一区二区三区|