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

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

?? updatesqlediteh.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
      end;
    '-', '0'..'9':
      begin
        TokenStart := P;
        Inc(P);
        while FText[P] in ['0'..'9', '.', 'e', 'E', '+', '-'] do Inc(P);
        FTokenString := Copy(FText, TokenStart, P - TokenStart);
//        SetString(FTokenString, TokenStart, P - TokenStart);
        FToken := stNumber;
      end;
    ',':
      begin
        Inc(P);
        FToken := stComma;
      end;
    '=':
      begin
        Inc(P);
        FToken := stEQ;
      end;
    '(':
      begin
        Inc(P);
        FToken := stLParen;
      end;
    ')':
      begin
        Inc(P);
        FToken := stRParen;
      end;
    #0:
      FToken := stEnd;
  else
    begin
      FToken := stOther;
      Inc(P);
    end;
  end;
  FSourcePtr := P;
  if (FToken = stSymbol) and
    (FTokenString[Length(FTokenString)] = '.') then FToken := stAlias;
  Result := FToken;
end;

procedure TSQLParser.Reset;
begin
//  FSourcePtr := PChar(FText);
  FSourcePtr := 1;
  FToken := stSymbol;
  NextToken;
end;

function TSQLParser.TokenSymbolIs(const S: string): Boolean;
begin
  Result := (FToken = stSymbol) and (CompareText(FTokenString, S) = 0);
end;

procedure TSQLParser.GetSelectTableNames(List: TStrings);
begin
  List.BeginUpdate;
  try
    List.Clear;
    if TokenSymbolIs('SELECT') then { Do not localize }
    try
      while not TokenSymbolIs('FROM') do NextToken; { Do not localize }
      NextToken;
      while FToken = stSymbol do
      begin
{$IFDEF CIL}
        List.AddObject(FTokenString, TObject(FSymbolQuoted));
{$ELSE}
        List.AddObject(FTokenString, Pointer(Integer(FSymbolQuoted)));
{$ENDIF}
        if NextToken = stSymbol then NextToken;
        if FToken = stComma
          then NextToken
          else break;
      end;
    except
    end;
  finally
    List.EndUpdate;
  end;
end;

procedure TSQLParser.GetUpdateTableName(var TableName: string);
begin
  if TokenSymbolIs('UPDATE') and (NextToken = stSymbol) then { Do not localize }
    TableName := FTokenString else
    TableName := '';
end;

procedure TSQLParser.GetUpdateFields(List: TStrings);
begin
  List.BeginUpdate;
  try
    List.Clear;
    if TokenSymbolIs('UPDATE') then { Do not localize }
    try
      while not TokenSymbolIs('SET') do NextToken; { Do not localize }
      NextToken;
      while True do
      begin
        if FToken = stAlias then NextToken;
        if FToken <> stSymbol then Break;
        List.Add(FTokenString);
        if NextToken <> stEQ then Break;
        while NextToken <> stComma do
          if TokenSymbolIs('WHERE') then Exit;{ Do not localize }
        NextToken;
      end;
    except
    end;
  finally
    List.EndUpdate;
  end;
end;

procedure TSQLParser.GetWhereFields(List: TStrings);
begin
  List.BeginUpdate;
  try
    List.Clear;
    if TokenSymbolIs('UPDATE') then { Do not localize }
    try
      while not TokenSymbolIs('WHERE') do NextToken; { Do not localize }
      NextToken;
      while True do
      begin
        while FToken in [stLParen, stAlias] do NextToken;
        if FToken <> stSymbol then Break;
        List.Add(FTokenString);
        if NextToken <> stEQ then Break;
        while true do
        begin
          NextToken;
          if FToken = stEnd then Exit;
          if TokenSymbolIs('AND') then Break; { Do not localize }
        end;
        NextToken;
      end;
    except
    end;
  finally
    List.EndUpdate;
  end;
end;

function TUpdateSQLEditFormEh.Edit: Boolean;
var
  DataSetName: string;
begin
  Result := False;
{  if Assigned(UpdateSQL.DataSet) and (UpdateSQL.DataSet is TDBDataSet) then
  begin
    DataSet := TDBDataSet(UpdateSQL.DataSet);
//    FTempTable.SessionName := DataSet.SessionName;
//    FTempTable.DatabaseName := DataSet.DatabaseName;
    DataSetName := Format('%s%s%s', [DataSet.Owner.Name, DotSep, DataSet.Name]);
  end else
    DataSetName := SNoDataSet;}
  cbIncrementObject.Enabled := TDesignDataBaseEh(DataDriver.DesignDataBase).GetIncrementObjectsList <> nil;
  if cbIncrementObject.Enabled
    then labelUpdateObjects.Font.Color := clWindowText
    else labelUpdateObjects.Font.Color := clGrayText;

  Caption := Format('%s%s%s (%s)', ['DataDriver.Owner.Name', DotSep, DataDriver.Name, DataSetName]);

  MemoModify.Lines := DataDriver.UpdateSQL;
  MemoInsert.Lines := DataDriver.InsertSQL;
  MemoDelete.Lines := DataDriver.DeleteSQL;
  MemoGetRec.Lines := DataDriver.GetrecSQL;
  mSpecParams.Lines := TBaseSQLDataDriverEh(DataDriver).SpecParams;
  MemoUpdateFields.Lines.CommaText := TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.UpdateFields;
  MemoKeyFields.Lines.CommaText := TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.KeyFields;
  dbeTableName.Text := TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.UpdateTable;
  if TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.Options <> [] then
  begin
    cbUpdateFields.Checked := True;
    cbKeyFields.Checked := True;
    cbTableName.Checked := True;
  end else
  begin
    cbUpdateFields.Checked := False;
    cbKeyFields.Checked := False;
    cbTableName.Checked := False;
  end;
//    StatementTypeClick(Self);
  InitUpdateTableNames;
  ShowWait(InitGenerateOptions);
  PageControl.ActivePage := PageControl.Pages[0];
  if ShowModal = mrOk then
  begin
    DataDriver.UpdateSQL := MemoModify.Lines;
    DataDriver.InsertSQL := MemoInsert.Lines;
    DataDriver.DeleteSQL := MemoDelete.Lines;
    DataDriver.GetrecSQL := MemoGetRec.Lines;
    TBaseSQLDataDriverEh(DataDriver).SpecParams := mSpecParams.Lines;
    TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.UpdateFields := MemoUpdateFields.Lines.CommaText;
    TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.KeyFields := MemoKeyFields.Lines.CommaText;
    TBaseSQLDataDriverEh(DataDriver).DynaSQLParams.UpdateTable := dbeTableName.Text;
    Result := True;
  end;
end;

procedure TUpdateSQLEditFormEh.GenWhereClause(const TabAlias, QuoteChar: string;
  KeyFields, SQL: TStrings);
var
  I: Integer;
  BindText: string;
  FieldName: string;
begin
  SQL.Add('where'); { Do not localize }
  for I := 0 to KeyFields.Count - 1 do
  begin
    FieldName := KeyFields[I];
    BindText := Format('  %s%s%s%1:s = :%1:sOLD_%2:s%1:s', { Do not localize }
      [TabAlias, QuoteChar, FieldName]);
    if I < KeyFields.Count - 1 then
      BindText := Format('%s and',[BindText]); { Do not localize }
    SQL.Add(BindText);
  end;
end;

procedure TUpdateSQLEditFormEh.GenDeleteSQL(const TableName, QuoteChar: string;
  KeyFields, SQL: TStrings);
begin
  SQL.Clear;
  SQL.Add(Format('delete from %s', [TableName])); { Do not localize }
  GenWhereClause(GetTableRef(TableName, QuoteChar), QuoteChar, KeyFields, SQL);
end;

procedure TUpdateSQLEditFormEh.GenInsertSQL(const TableName, QuoteChar: string;
  UpdateFields, SQL: TStrings);

  procedure GenFieldList(const TabName, ParamChar, QuoteChar: String);
  var
    L: string;
    I: integer;
    Comma: string;
  begin
    L := '  (';
    Comma := ', ';
    for I := 0 to UpdateFields.Count - 1 do
    begin
      if I = UpdateFields.Count - 1 then Comma := '';
      L := Format('%s%s%s%s%s%3:s%5:s',
        [L, TabName, ParamChar, QuoteChar, UpdateFields[I], Comma]);
      if (Length(L) > 70) and (I <> UpdateFields.Count - 1) then
      begin
        SQL.Add(L);
        L := '   ';
      end;
    end;
    SQL.Add(L+')');
  end;

begin
  SQL.Clear;
  SQL.Add(Format('insert into %s', [TableName])); { Do not localize }
  GenFieldList(GetTableRef(TableName, QuoteChar), '', QuoteChar);
  SQL.Add('values'); { Do not localize }
  GenFieldList('', ':', QuoteChar);
end;

procedure TUpdateSQLEditFormEh.GenModifySQL(const TableName, QuoteChar: string;
  KeyFields, UpdateFields, SQL: TStrings);
var
  I: integer;
  Comma: string;
  TableRef: string;
begin
  SQL.Clear;
  SQL.Add(Format('update %s', [TableName]));  { Do not localize }
  SQL.Add('set');                             { Do not localize }
  Comma := ',';
  TableRef := GetTableRef(TableName, QuoteChar);
  for I := 0 to UpdateFields.Count - 1 do
  begin
    if I = UpdateFields.Count -1 then Comma := '';
    SQL.Add(Format('  %s%s%s%1:s = :%1:s%2:s%1:s%3:s',
      [TableRef, QuoteChar, UpdateFields[I], Comma]));
  end;
  GenWhereClause(TableRef, QuoteChar, KeyFields, SQL);
end;

procedure TUpdateSQLEditFormEh.GenerateSQL;

  function QuotedTableName(const BaseName: string): string;
  begin
    with UpdateTableName do
      if ((ItemIndex <> -1) and (Items.Objects[ItemIndex] <> nil)) or
         ({DatabaseOpen and not Database.IsSQLBased and} (Pos('.', BaseName) > 0)) then
         Result := Format('"%s"', [BaseName]) else
         Result := BaseName;
  end;

var
  KeyFields: TStringList;
  UpdateFields: TStringList;
  QuoteChar, TableName: string;
begin
  if (KeyFieldList.SelCount = 0) or (UpdateFieldList.SelCount = 0) then
    raise Exception.Create('SSQLGenSelect');
  KeyFields := TStringList.Create;
  try
    GetSelectedItems(KeyFieldList, KeyFields);
    UpdateFields := TStringList.Create;
    try
      GetSelectedItems(UpdateFieldList, UpdateFields);
      TableName := QuotedTableName(UpdateTableName.Text);

      if TDesignDataBaseEh(DataDriver.DesignDataBase).GetCustomDBService <> nil then
        GenerateSQLViaDBService
      else
      begin
        if QuoteFields.Checked then
          QuoteChar := '"' else
          QuoteChar := '';
        if cbInsert.Checked then
          GenInsertSQL(TableName, QuoteChar, UpdateFields, MemoInsert.Lines);
        if cbUpdate.Checked then
          GenModifySQL(TableName, QuoteChar, KeyFields, UpdateFields, MemoModify.Lines);
        if cbDelete.Checked then
          GenDeleteSQL(TableName, QuoteChar, KeyFields, MemoDelete.Lines);
        if cbGetRec.Checked then
          GenGetRecSQL(DataDriver.SelectSQL, KeyFields, MemoGetRec.Lines);
        if cbUpdateFields.Checked then
          FillMemoFromList(MemoUpdateFields, UpdateFieldList);
        if cbKeyFields.Checked then
          FillMemoFromList(MemoKeyFields, KeyFieldList);
        if cbTableName.Checked then
          dbeTableName.Text := UpdateTableName.Text;
      end;

      PageControl.SelectNextPage(True);
    finally
      UpdateFields.Free;
    end;
  finally
    KeyFields.Free;
  end;
end;

procedure TUpdateSQLEditFormEh.GetDataSetFieldNames;
begin
{ TODO : realize }
{  if Assigned(DataSet) then
  begin
    GetDataFieldNames(DataSet, DataSet.Name, KeyFieldList.Items);
    UpdateFieldList.Items.Assign(KeyFieldList.Items);
  end;}
end;

function TUpdateSQLEditFormEh.GetTableRef(const TabName, QuoteChar: string): string;
begin
  if QuoteChar <> '' then
    Result :=  TabName + '.' else
    REsult := '';
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三级电影在线观看 | 91亚洲国产成人精品一区二三 | 91麻豆精品国产91久久久久 | 久久99精品国产麻豆婷婷洗澡| 麻豆视频观看网址久久| 精品午夜久久福利影院 | 国产日韩精品一区| 亚洲欧美日韩系列| 日韩福利视频导航| 成人一区在线看| 欧美亚洲动漫另类| 国产亚洲精品bt天堂精选| 亚洲h在线观看| 不卡一区二区在线| 日韩午夜小视频| 亚洲人吸女人奶水| 丁香婷婷综合激情五月色| 欧美日高清视频| 亚洲少妇最新在线视频| 国产精品一区二区免费不卡 | 久久精品国产亚洲一区二区三区| 波多野洁衣一区| 国产欧美一区视频| 免费精品视频在线| 成人黄色大片在线观看| 欧美电视剧在线看免费| 五月天亚洲婷婷| 欧美视频日韩视频| 亚洲天堂a在线| 色丁香久综合在线久综合在线观看| 国产亚洲人成网站| 成人免费视频网站在线观看| 日韩亚洲欧美成人一区| 亚洲不卡一区二区三区| 欧美理论片在线| 日韩成人精品在线| 日韩欧美国产综合| 国产精品亚洲一区二区三区在线| 欧美一区二区在线不卡| 午夜不卡av在线| 日韩三级精品电影久久久 | 欧美精品一区二| 成人动漫一区二区三区| 亚洲色图清纯唯美| 91麻豆精品国产91久久久久| 久久激五月天综合精品| 精品福利av导航| av不卡一区二区三区| 一区二区三区在线视频免费观看| 欧美亚洲综合网| 久久国产生活片100| 国产精品成人网| 国产视频一区在线播放| 99久久99久久久精品齐齐| 亚洲成人你懂的| 久久精品在这里| 欧美日韩精品一区二区三区蜜桃 | 欧美在线一二三| 精品一区二区av| 亚洲精品乱码久久久久久久久| 日韩一区二区三区四区五区六区| av不卡免费在线观看| 国产在线播放一区三区四| 亚洲午夜在线观看视频在线| 中文字幕乱码一区二区免费| 日韩一区二区免费在线观看| 99亚偷拍自图区亚洲| 国产老肥熟一区二区三区| 亚洲午夜久久久久久久久电影网| 国产亚洲成aⅴ人片在线观看| 欧美男女性生活在线直播观看| 成人av在线一区二区| 国产制服丝袜一区| 久久精品国产亚洲5555| 午夜精品久久久久久久久久| 一区二区三区精品| 亚洲人成人一区二区在线观看 | 国产精品中文字幕欧美| 乱中年女人伦av一区二区| 日韩精品一区第一页| 亚洲不卡av一区二区三区| 亚洲国产美女搞黄色| 亚洲免费大片在线观看| 一区二区三区在线视频观看58| 亚洲天堂中文字幕| 亚洲激情六月丁香| 天天亚洲美女在线视频| 蜜臀av在线播放一区二区三区| 久久国产成人午夜av影院| 美国欧美日韩国产在线播放| 精品一二线国产| 91在线高清观看| 欧美日韩激情一区二区| 日韩久久久久久| 国产精品美女视频| 亚洲成人免费视| 国产精品1024| 欧美人与禽zozo性伦| 国产欧美一区二区精品性色 | 91网址在线看| 精品久久久久香蕉网| 亚洲欧洲国产日本综合| 免费在线观看视频一区| 不卡一卡二卡三乱码免费网站| 欧美色图在线观看| 欧美激情一区不卡| 久久99热99| 欧美夫妻性生活| 国产精品乱码一区二三区小蝌蚪| 亚洲v中文字幕| av在线综合网| 国产精品国产三级国产aⅴ中文| 日韩av中文字幕一区二区| 99re视频这里只有精品| 日韩精品一区二区三区swag| 亚洲一级片在线观看| 床上的激情91.| www日韩大片| 国内久久婷婷综合| 在线不卡欧美精品一区二区三区| 亚洲激情欧美激情| 99re热这里只有精品视频| 国产精品欧美一级免费| 国产91丝袜在线播放| 国产网站一区二区| 国产精品一区二区91| 国产片一区二区| 97久久超碰精品国产| 亚洲美女一区二区三区| 91丝袜美腿高跟国产极品老师 | 亚洲理论在线观看| 国产成人在线色| 国产精品美女久久福利网站| 99久免费精品视频在线观看| 亚洲色图清纯唯美| 欧美日韩中文另类| 久草精品在线观看| 欧美国产亚洲另类动漫| 色婷婷久久一区二区三区麻豆| 亚洲一区免费观看| 中文字幕高清不卡| 欧美色视频在线观看| 精品一区二区三区的国产在线播放| 亚洲同性gay激情无套| 欧美不卡一区二区三区四区| 欧美天堂亚洲电影院在线播放| 国精产品一区一区三区mba桃花| 亚洲综合另类小说| 亚洲天堂av一区| 久久亚洲一区二区三区明星换脸| 99在线视频精品| 狠狠色伊人亚洲综合成人| 亚洲成精国产精品女| 亚洲一区免费观看| 亚洲免费观看在线视频| 中文字幕乱码亚洲精品一区| 成人综合婷婷国产精品久久蜜臀 | 色成人在线视频| 欧美在线看片a免费观看| 色婷婷综合久久久久中文| 欧洲精品在线观看| 91蝌蚪porny九色| 国产精品主播直播| 国产不卡一区视频| 久久国产福利国产秒拍| 六月婷婷色综合| 免费成人结看片| 久久成人免费电影| 精品一二三四在线| 国产在线不卡一区| 国产精品一区久久久久| 国产成人在线视频网址| 国产成人免费视频一区| 91在线你懂得| 欧美酷刑日本凌虐凌虐| 欧美一区二区三区免费在线看| 欧美一级淫片007| 亚洲精品一区二区三区99| 国产精品国产三级国产a| 一区二区免费视频| 久久疯狂做爰流白浆xx| 国产a区久久久| 欧美群妇大交群的观看方式 | 免费在线观看视频一区| 美国毛片一区二区| 91丨porny丨首页| 3751色影院一区二区三区| 国产欧美日韩激情| 亚洲图片欧美色图| 丰满白嫩尤物一区二区| 欧美色图一区二区三区| 国产丝袜欧美中文另类| 亚洲成人你懂的| 99在线精品一区二区三区| 精品精品国产高清a毛片牛牛| 亚洲欧洲国产专区| 国产 欧美在线| 欧美成人欧美edvon| 三级欧美在线一区| 欧洲av一区二区嗯嗯嗯啊|