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

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

?? udatacopy.pas

?? 抽象三層訪問數據庫示例
?? PAS
字號:
{*******************************************************}
{       軟件名稱: --通用--                              }
{       單元名稱: DataCopy.pas                          }
{       中文名稱: 數據復制類                            }
{       單元描述:                                       }
{       創    建: SamonHua                              }
{       創建日期: 2007-12-18                            }
{       修    改: 參見VSS記錄                           }
{       版權所有 (C)2002-2007 深圳壹平臺信息技術有限公司}
{*******************************************************}
unit uDataCopy;

interface

uses
  SysUtils, Classes, DB, Variants, uCommon;

type
  TDataCopy = class(TComponent)
  private
    FTargetKey: string;
    FSourceKey: string;
    FTargetDataSet: TDataSet;
    FSourceDataSet: TDataSet;
    FAllowNoneKeyField: Boolean;
    FBeforeCopyData: TNotifyEvent;
    FAfterCopyData: TNotifyEvent;
    FBeginCopyData: TNotifyEvent;
    FEndCopyData: TNotifyEvent;
    FAutoLocateRecord: boolean;
    FAutoDisablePostEvent: Boolean;
    FAutoDisableInsertEvent: Boolean;
    FAutoDisableEditEvent: Boolean;
    FUnallowModifyTargetStatus: Boolean;
    { Private declarations }
  protected
    { Protected declarations }
    function LocateSourceDataSet: boolean;
    function LocateTargetDataSet: boolean;
  public
    procedure CopyCurrentData;//復制當前記錄
    procedure CopyAllData;//復制所有記錄
    procedure CloneAllData;//復制所有記錄,使兩個數據集數據一模一樣
    { Public declarations }
  published
    property SourceDataSet: TDataSet read FSourceDataSet write FSourceDataSet;
    property TargetDataSet: TDataSet read FTargetDataSet write FTargetDataSet;
    property SourceKey: string read FSourceKey write FSourceKey;
    property TargetKey: string read FTargetKey write FTargetKey;
    property AllowNoneKeyField: Boolean read FAllowNoneKeyField write FAllowNoneKeyField default False;
    property BeginCopyData: TNotifyEvent read FBeginCopyData write FBeginCopyData;
    property EndCopyData: TNotifyEvent read FEndCopyData write FEndCopyData;
    property BeforeCopyData: TNotifyEvent read FBeforeCopyData write FBeforeCopyData;
    property AfterCopyData: TNotifyEvent read FAfterCopyData write FAfterCopyData;
    property AutoLocateRecord: boolean read FAutoLocateRecord write FAutoLocateRecord default false;
    property AutoDisableInsertEvent: Boolean read FAutoDisableInsertEvent write FAutoDisableInsertEvent default true;
    property AutoDisableEditEvent: Boolean read FAutoDisableEditEvent write FAutoDisableEditEvent default true;
    property AutoDisablePostEvent: Boolean read FAutoDisablePostEvent write FAutoDisablePostEvent default true;
    property UnallowModifyTargetStatus: Boolean read FUnallowModifyTargetStatus write FUnallowModifyTargetStatus default False;
    constructor Create(AOwner: TComponent); override;
    { Published declarations }
  end;

//procedure Register;

implementation

{procedure Register;
begin
  RegisterComponents('Egov', [TDataCopy]);
end;}

{ TDataCopy }

procedure TDataCopy.CloneAllData;
var
  tmpBookmark1, tmpBookmark2: TBookmark;
  tmpBeforeScroll1, tmpBeforeScroll2, tmpAfterScroll1, tmpAfterScroll2,
    tmpBeforeInser, tmpAfterInsert, tmpBeforeEdit, tmpAfterEdit,
    tmpBeforeDelete1, tmpBeforePost, tmpAfterPost: TDataSetNotifyEvent;
  i: integer;
  strKeyValue: string;
begin
  if Assigned(FBeginCopyData) then
    FBeginCopyData(self);
  FTargetDataSet.DisableControls;
  FSourceDataSet.DisableControls;
  tmpBookmark1 := FTargetDataSet.GetBookmark;
  tmpBeforeScroll1 := FTargetDataSet.BeforeScroll;
  tmpBeforeDelete1 := FTargetDataSet.BeforeDelete;
  tmpAfterScroll1 := FTargetDataSet.AfterScroll;
  FTargetDataSet.BeforeScroll := nil;
  FTargetDataSet.AfterScroll := nil;
  FTargetDataSet.BeforeDelete := nil;
  tmpBookmark2 := FSourceDataSet.GetBookmark;
  tmpBeforeScroll2 := FSourceDataSet.BeforeScroll;
  tmpAfterScroll2 := FSourceDataSet.AfterScroll;
  FSourceDataSet.BeforeScroll := nil;
  FSourceDataSet.AfterScroll := nil;
  if FAutoDisableInsertEvent then
  begin
    tmpBeforeInser := FTargetDataSet.BeforeInsert;
    tmpAfterInsert := FTargetDataSet.AfterInsert;
    FTargetDataSet.BeforeInsert := nil;
    FTargetDataSet.AfterInsert := nil;
  end;
  if FAutoDisableEditEvent then
  begin
    tmpBeforeEdit := FTargetDataSet.BeforeEdit;
    tmpAfterEdit := FTargetDataSet.AfterEdit;
    FTargetDataSet.BeforeEdit := nil;
    FTargetDataSet.AfterEdit := nil;
  end;
  if FAutoDisablePostEvent then
  begin
    tmpBeforePost := FTargetDataSet.BeforePost;
    tmpAfterPost := FTargetDataSet.AfterPost;
    FTargetDataSet.BeforePost := nil;
    FTargetDataSet.AfterPost := nil;
  end;
  try
    strKeyValue := '';
    if (FSourceKey <> '') and (FSourceDataSet.FieldList.IndexOf(FSourceKey) <> -1) then
      strKeyValue := FSourceDataSet.FieldByName(FSourceKey).AsString;
    FTargetDataSet.First;
    while not FTargetDataSet.Eof do
      if not LocateSourceDataSet then
        FTargetDataSet.Delete
      else
        FTargetDataSet.Next;
    FSourceDataSet.First;
    while not FSourceDataSet.Eof do
    begin
      if Assigned(FBeforeCopyData) then
        FBeforeCopyData(self);
      if LocateTargetDataSet then
        FTargetDataSet.Edit
      else
        FTargetDataSet.Append;
      for i := 0 to FSourceDataSet.FieldCount - 1 do
        if FTargetDataSet.FieldList.IndexOf(FSourceDataSet.Fields[i].FieldName) <> -1 then
          FTargetDataSet.FieldByName(FSourceDataSet.Fields[i].FieldName).Value := FSourceDataSet.Fields[i].Value;
      FTargetDataSet.Post;
      if Assigned(FAfterCopyData) then
        FAfterCopyData(self);
      FSourceDataSet.Next;
    end;
  finally
    FTargetDataSet.BeforeScroll := tmpBeforeScroll1;
    FTargetDataSet.AfterScroll := tmpAfterScroll1;
    FTargetDataSet.BeforeDelete := tmpBeforeDelete1;
    //FTargetDataSet.GotoBookmark(tmpBookmark1);
    //FTargetDataSet.FreeBookmark(tmpBookmark1);
    FSourceDataSet.BeforeScroll := tmpBeforeScroll2;
    FSourceDataSet.AfterScroll := tmpAfterScroll2;
    FSourceDataSet.GotoBookmark(tmpBookmark2);
    FSourceDataSet.FreeBookmark(tmpBookmark2);
    if FAutoDisableInsertEvent then
    begin
      FTargetDataSet.BeforeInsert := tmpBeforeInser;
      FTargetDataSet.AfterInsert := tmpAfterInsert;
    end;
    if FAutoDisableEditEvent then
    begin
      FTargetDataSet.BeforeEdit := tmpBeforeEdit;
      FTargetDataSet.AfterEdit := tmpAfterEdit;
    end;
    if FAutoDisablePostEvent then
    begin
      FTargetDataSet.BeforePost := tmpBeforePost;
      FTargetDataSet.AfterPost := tmpAfterPost;
    end;
    FTargetDataSet.EnableControls;
    FSourceDataSet.EnableControls;
    if FAutoLocateRecord then
      FTargetDataSet.Locate(FTargetKey, strKeyValue, [loCaseInsensitive]);
    if Assigned(FEndCopyData) then
      FEndCopyData(self);
  end;
end;

procedure TDataCopy.CopyAllData;
var
  tmpBookmark1, tmpBookmark2: TBookmark;
  tmpBeforeScroll1, tmpBeforeScroll2, tmpAfterScroll1, tmpAfterScroll2,
    tmpBeforeInser, tmpAfterInsert, tmpBeforeEdit, tmpAfterEdit,
    tmpBeforePost, tmpAfterPost: TDataSetNotifyEvent;
  i: integer;
  strKeyValue: string;
begin
  if Assigned(FBeginCopyData) then
    FBeginCopyData(self);
  FTargetDataSet.DisableControls;
  FSourceDataSet.DisableControls;
  tmpBookmark1 := FTargetDataSet.GetBookmark;
  tmpBeforeScroll1 := FTargetDataSet.BeforeScroll;
  tmpAfterScroll1 := FTargetDataSet.AfterScroll;
  FTargetDataSet.BeforeScroll := nil;
  FTargetDataSet.AfterScroll := nil;
  tmpBookmark2 := FSourceDataSet.GetBookmark;
  tmpBeforeScroll2 := FSourceDataSet.BeforeScroll;
  tmpAfterScroll2 := FSourceDataSet.AfterScroll;
  FSourceDataSet.BeforeScroll := nil;
  FSourceDataSet.AfterScroll := nil;
  if FAutoDisableInsertEvent then
  begin
    tmpBeforeInser := FTargetDataSet.BeforeInsert;
    tmpAfterInsert := FTargetDataSet.AfterInsert;
    FTargetDataSet.BeforeInsert := nil;
    FTargetDataSet.AfterInsert := nil;
  end;
  if FAutoDisableEditEvent then
  begin
    tmpBeforeEdit := FTargetDataSet.BeforeEdit;
    tmpAfterEdit := FTargetDataSet.AfterEdit;
    FTargetDataSet.BeforeEdit := nil;
    FTargetDataSet.AfterEdit := nil;
  end;
  if FAutoDisablePostEvent then
  begin
    tmpBeforePost := FTargetDataSet.BeforePost;
    tmpAfterPost := FTargetDataSet.AfterPost;
    FTargetDataSet.BeforePost := nil;
    FTargetDataSet.AfterPost := nil;
  end;
  try
    strKeyValue := '';
    if (FSourceKey <> '') and (FSourceDataSet.FieldList.IndexOf(FSourceKey) <> -1) then
      strKeyValue := FSourceDataSet.FieldByName(FSourceKey).AsString;
    FSourceDataSet.First;
    while not FSourceDataSet.Eof do
    begin
      if Assigned(FBeforeCopyData) then
        FBeforeCopyData(self);
      if LocateTargetDataSet then
        FTargetDataSet.Edit
      else
        FTargetDataSet.Insert;
      for i := 0 to FSourceDataSet.FieldCount - 1 do
        if FTargetDataSet.FieldList.IndexOf(FSourceDataSet.Fields[i].FieldName) <> -1 then
          FTargetDataSet.FieldByName(FSourceDataSet.Fields[i].FieldName).Value := FSourceDataSet.Fields[i].Value;
      FTargetDataSet.Post;
      if Assigned(FAfterCopyData) then
        FAfterCopyData(self);
      FSourceDataSet.Next;
    end;
  finally
    FTargetDataSet.BeforeScroll := tmpBeforeScroll1;
    FTargetDataSet.AfterScroll := tmpAfterScroll1;
    //FTargetDataSet.GotoBookmark(tmpBookmark1);
    //FTargetDataSet.FreeBookmark(tmpBookmark1);
    FSourceDataSet.BeforeScroll := tmpBeforeScroll2;
    FSourceDataSet.AfterScroll := tmpAfterScroll2;
    FSourceDataSet.GotoBookmark(tmpBookmark2);
    FSourceDataSet.FreeBookmark(tmpBookmark2);
    if FAutoDisableInsertEvent then
    begin
      FTargetDataSet.BeforeInsert := tmpBeforeInser;
      FTargetDataSet.AfterInsert := tmpAfterInsert;
    end;
    if FAutoDisableEditEvent then
    begin
      FTargetDataSet.BeforeEdit := tmpBeforeEdit;
      FTargetDataSet.AfterEdit := tmpAfterEdit;
    end;
    if FAutoDisablePostEvent then
    begin
      FTargetDataSet.BeforePost := tmpBeforePost;
      FTargetDataSet.AfterPost := tmpAfterPost;
    end;
    FTargetDataSet.EnableControls;
    FSourceDataSet.EnableControls;
    if FAutoLocateRecord then
      FTargetDataSet.Locate(FTargetKey, strKeyValue, [loCaseInsensitive]);
    if Assigned(FEndCopyData) then
      FEndCopyData(self);
  end;
end;

procedure TDataCopy.CopyCurrentData;
var
  i: Integer;
  tmpBeforeInser, tmpAfterInsert, tmpBeforeEdit, tmpAfterEdit,
    tmpBeforePost, tmpAfterPost: TDataSetNotifyEvent;
begin
  if Assigned(FBeginCopyData) then
    FBeginCopyData(self);
  FTargetDataSet.DisableControls;
  if FAutoDisableInsertEvent then
  begin
    tmpBeforeInser := FTargetDataSet.BeforeInsert;
    tmpAfterInsert := FTargetDataSet.AfterInsert;
    FTargetDataSet.BeforeInsert := nil;
    FTargetDataSet.AfterInsert := nil;
  end;
  if FAutoDisableEditEvent then
  begin
    tmpBeforeEdit := FTargetDataSet.BeforeEdit;
    tmpAfterEdit := FTargetDataSet.AfterEdit;
    FTargetDataSet.BeforeEdit := nil;
    FTargetDataSet.AfterEdit := nil;
  end;
  if FAutoDisablePostEvent then
  begin
    tmpBeforePost := FTargetDataSet.BeforePost;
    tmpAfterPost := FTargetDataSet.AfterPost;
    FTargetDataSet.BeforePost := nil;
    FTargetDataSet.AfterPost := nil;
  end;
  try
    if Assigned(FBeforeCopyData) then
      FBeforeCopyData(self);
    if LocateTargetDataSet then
      FTargetDataSet.Edit
    else
      FTargetDataSet.Insert;
    for i := 0 to FSourceDataSet.FieldCount - 1 do
      if FTargetDataSet.FieldList.IndexOf(FSourceDataSet.Fields[i].FieldName) <> -1 then
        FTargetDataSet.FieldByName(FSourceDataSet.Fields[i].FieldName).Value := FSourceDataSet.Fields[i].Value;
    FTargetDataSet.Post;
    if Assigned(FAfterCopyData) then
      FAfterCopyData(self);
  finally
    if FAutoDisableInsertEvent then
    begin
      FTargetDataSet.BeforeInsert := tmpBeforeInser;
      FTargetDataSet.AfterInsert := tmpAfterInsert;
    end;
    if FAutoDisableEditEvent then
    begin
      FTargetDataSet.BeforeEdit := tmpBeforeEdit;
      FTargetDataSet.AfterEdit := tmpAfterEdit;
    end;
    if FAutoDisablePostEvent then
    begin
      FTargetDataSet.BeforePost := tmpBeforePost;
      FTargetDataSet.AfterPost := tmpAfterPost;
    end;
    FTargetDataSet.EnableControls;
    if Assigned(FEndCopyData) then
      FEndCopyData(self);
  end;
end;

constructor TDataCopy.Create(AOwner: TComponent);
begin
  inherited;
  FAutoLocateRecord := false;
  FAutoDisableInsertEvent := true;
  FAutoDisableEditEvent := true;
  FAutoDisablePostEvent := true;
  FUnallowModifyTargetStatus := false;
end;

function TDataCopy.LocateSourceDataSet: boolean;
var
  strFieldName: string;
  i: integer;
  varLocateValues: Variant;
begin
  Result := False;
  if FSourceKey = '' then
    if FAllowNoneKeyField then
      exit
    else
      raise Exception.Create('未設置關鍵字段,不能正確定位記錄。');
  if Pos(';', FSourceKey) = 0 then
    Result := FSourceDataSet.Locate(FSourceKey, FTargetDataSet.FieldByName(FTargetKey).AsString, [])
  else
  begin
    if SubStrCount(FSourceKey) <> SubStrCount(FTargetKey) then
      raise Exception.Create('來源和目的數據集關鍵字段數量不一致,不能正確定位記錄。');
    varLocateValues := VarArrayCreate([0, SubStrCount(FTargetKey)], varVariant);
    for i := 0 to SubStrCount(FTargetKey) do
    begin
      strFieldName := CopySubStr(FTargetKey, i);
      varLocateValues[i] := VarToStr(FTargetDataSet.FieldByName(strFieldName).Value);
    end;
    result := FSourceDataSet.Locate(FSourceKey, varLocateValues, [loCaseInsensitive]);
  end;
end;

function TDataCopy.LocateTargetDataSet: boolean;
var
  strFieldName: string;
  i: integer;
  varLocateValues: Variant;
begin
  Result := false;
  if FTargetKey = '' then
    if FAllowNoneKeyField then
      exit
    else
      raise Exception.Create('未設置關鍵字段,不能正確定位記錄。');
  if Pos(';', FTargetKey) = 0 then
    Result := FTargetDataSet.Locate(FTargetKey, FSourceDataSet.FieldByName(FSourceKey).AsString, [])
  else
  begin
    if SubStrCount(FSourceKey) <> SubStrCount(FTargetKey) then
      raise Exception.Create('來源和目的數據集關鍵字段數量不一致,不能正確定位記錄。');
    varLocateValues := VarArrayCreate([0, SubStrCount(FSourceKey)], varVariant);
    for i := 0 to SubStrCount(FSourceKey) do
    begin
      strFieldName := CopySubStr(FSourceKey, i);
      varLocateValues[i] := VarToStr(FSourceDataSet.FieldByName(strFieldName).Value);
    end;
    result := FTargetDataSet.Locate(FTargetKey, varLocateValues, [loCaseInsensitive]);
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
1000部国产精品成人观看| 免费人成在线不卡| 奇米精品一区二区三区四区 | 91精品国产高清一区二区三区 | 岛国av在线一区| 欧美精品一级二级| 亚洲欧洲精品一区二区三区不卡| 视频一区二区三区中文字幕| av在线不卡观看免费观看| 日韩欧美成人激情| 亚洲444eee在线观看| 色综合久久久久综合| 国产精品久久久久久久第一福利| 免费精品99久久国产综合精品| 一本色道亚洲精品aⅴ| 久久精品免费在线观看| 久久91精品久久久久久秒播| 欧美日韩一区二区电影| 亚洲激情网站免费观看| 99这里都是精品| 久久久国产精华| 免费高清在线视频一区·| 欧美色图天堂网| 亚洲第一av色| 欧美日本高清视频在线观看| 亚洲国产综合91精品麻豆| 91黄色激情网站| 亚洲综合一区在线| 欧洲av一区二区嗯嗯嗯啊| 亚洲精品国产视频| 在线观看网站黄不卡| 一区二区高清免费观看影视大全 | 欧美一级精品在线| 青青草97国产精品免费观看| 欧美喷潮久久久xxxxx| 午夜欧美视频在线观看| 欧美日韩国产综合视频在线观看| 亚洲一区二区不卡免费| 欧洲激情一区二区| 日韩精品一级二级| 精品日韩在线观看| 从欧美一区二区三区| 国产精品理论片在线观看| 99国产精品久| 亚洲一区在线看| 欧美一级片在线| 久久国产尿小便嘘嘘| 久久久午夜精品理论片中文字幕| 国产河南妇女毛片精品久久久| 国产日韩欧美一区二区三区乱码 | 亚洲精品亚洲人成人网 | 精品久久五月天| 成人精品鲁一区一区二区| 国产精品成人午夜| 欧美色网站导航| 精品一区二区精品| 国产精品美女一区二区在线观看| 色综合天天综合网天天狠天天| 亚洲一区二区精品3399| 亚洲精品一区二区三区四区高清| 国产成人免费av在线| 亚洲综合偷拍欧美一区色| 欧美成人video| www.欧美精品一二区| 午夜欧美大尺度福利影院在线看| 久久久一区二区三区| 欧美色综合影院| 成人精品电影在线观看| 视频一区二区国产| 国产精品丝袜久久久久久app| 欧美日韩久久久一区| 国产成人综合在线观看| 午夜精品视频在线观看| 中文字幕永久在线不卡| 日韩精品一区国产麻豆| 日本韩国一区二区三区| 国产一区二区三区免费| 视频一区二区中文字幕| 17c精品麻豆一区二区免费| 日韩一区二区三区av| 北条麻妃国产九九精品视频| 麻豆91精品91久久久的内涵| 成人免费在线播放视频| 久久色在线视频| 欧美一级片免费看| 欧美亚洲日本一区| 国产69精品久久久久777| 亚洲不卡一区二区三区| 亚洲欧美另类图片小说| 亚洲精品一区二区三区四区高清 | 色乱码一区二区三区88| 激情欧美日韩一区二区| 亚洲成a人片在线观看中文| 亚洲日本一区二区三区| 国产片一区二区三区| 日韩欧美精品三级| 91精品欧美久久久久久动漫| 色哟哟精品一区| 国产又粗又猛又爽又黄91精品| 亚洲午夜三级在线| 一区二区三区免费| 亚洲色图清纯唯美| 亚洲欧洲综合另类在线| 中文字幕免费一区| 国产欧美一区视频| 国产精品水嫩水嫩| 欧美国产1区2区| 亚洲国产高清aⅴ视频| 国产欧美日韩视频一区二区| 久久夜色精品一区| 亚洲精品一区二区三区四区高清| 日韩一区二区三区精品视频| 欧美一区二区三区视频免费 | 在线一区二区视频| 色婷婷综合激情| 不卡大黄网站免费看| 91影视在线播放| 在线观看国产日韩| 欧美男人的天堂一二区| 日韩一级精品视频在线观看| 日韩一级高清毛片| 久久精品欧美一区二区三区不卡| 久久精品亚洲精品国产欧美kt∨| 国产人成亚洲第一网站在线播放| 久久久高清一区二区三区| 欧美国产一区二区在线观看| 亚洲欧洲综合另类| 亚洲一区二区在线播放相泽| 亚洲第一狼人社区| 精品在线免费视频| 国产精品1区2区| 91捆绑美女网站| 7777精品伊人久久久大香线蕉经典版下载| 欧美无砖专区一中文字| 5858s免费视频成人| 亚洲精品一区二区三区四区高清| 中文字幕乱码日本亚洲一区二区| 亚洲人成7777| 男女性色大片免费观看一区二区| 极品瑜伽女神91| 99久久99久久综合| 欧美精品一二三区| 久久久九九九九| 夜夜嗨av一区二区三区四季av| 亚洲6080在线| 国产99精品视频| 欧美性xxxxx极品少妇| 欧美一区二区三区视频在线| 国产农村妇女精品| 亚洲成人在线网站| 国产伦精品一区二区三区视频青涩 | 高清成人在线观看| 欧美在线一区二区三区| 久久新电视剧免费观看| 亚洲精选视频免费看| 国产在线一区二区| 欧美日韩日日摸| 国产午夜亚洲精品午夜鲁丝片 | 久久精品国产一区二区| caoporn国产一区二区| 欧美一区二区三区视频在线| 亚洲日本免费电影| 国内精品久久久久影院色| 欧美日韩一区二区在线视频| 久久久精品欧美丰满| 丝袜亚洲精品中文字幕一区| 成人午夜激情在线| 精品剧情在线观看| 天堂av在线一区| 一本久久精品一区二区| 欧美国产激情一区二区三区蜜月| 奇米在线7777在线精品 | 精品欧美乱码久久久久久| 亚洲精品自拍动漫在线| 粉嫩av一区二区三区粉嫩| 日韩午夜电影av| 午夜欧美在线一二页| 91视频.com| 国产精品视频看| 国产成人自拍网| 精品久久久久久久久久久院品网| 日韩精品国产欧美| 欧美亚洲另类激情小说| 亚洲三级视频在线观看| 成人理论电影网| 欧美激情一区二区三区蜜桃视频 | 国产欧美一区二区精品婷婷| 韩国精品一区二区| 日韩欧美的一区| 日韩黄色小视频| 91精品久久久久久久91蜜桃| 亚洲香肠在线观看| 在线免费精品视频| 亚洲综合在线第一页| 色婷婷综合久久久久中文| 亚洲男人的天堂av| 99久久国产综合精品麻豆| 亚洲欧美一区二区三区极速播放| 成人av资源下载| 亚洲卡通欧美制服中文|