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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? updatesqlediteh.pas

?? 一個(gè)功能強(qiáng)大的DBGRID控件
?? PAS
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
{*******************************************************}
{                                                       }
{       Borland Delphi Visual Component Library         }
{       UpdateSQL Component Editor                      }
{                                                       }
{       Copyright (c) 1997,1999 Borland Software Corp.  }
{                                                       }
{       Changed by Dmitry V. Bolshakov                  }
{                                                       }
{*******************************************************}

unit UpdateSQLEditEh;

{$I EHLIB.INC}

interface

uses Forms, DB, ExtCtrls, StdCtrls, Controls, ComCtrls,
  Classes, SysUtils, Windows, Menus, DataDriverEh, MemTableEh, Graphics,
{$IFDEF EH_LIB_6}
  Variants,
{$ENDIF}
  Mask, DBCtrlsEh, MemTableDataEh;

type

  TWaitMethod = procedure of object;

  TUpdateSQLEditFormEh = class(TForm)
    OkButton: TButton;
    CancelButton: TButton;
    HelpButton: TButton;
    GenerateButton: TButton;
    PrimaryKeyButton: TButton;
    DefaultButton: TButton;
    UpdateTableName: TComboBox;
    FieldsPage: TTabSheet;
    SQLPage: TTabSheet;
    PageControl: TPageControl;
    KeyFieldList: TListBox;
    UpdateFieldList: TListBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    FTempTable: TMemTableEh;
    QuoteFields: TCheckBox;
    GetTableFieldsButton: TButton;
    FieldListPopup: TPopupMenu;
    miSelectAll: TMenuItem;
    miClearAll: TMenuItem;
    PageControl1: TPageControl;
    tsInsert: TTabSheet;
    tsModify: TTabSheet;
    tsDelete: TTabSheet;
    tsGetrec: TTabSheet;
    MemoInsert: TMemo;
    MemoModify: TMemo;
    MemoDelete: TMemo;
    MemoGetRec: TMemo;
    cbUpdate: TCheckBox;
    cbDelete: TCheckBox;
    cbGetRec: TCheckBox;
    cbInsert: TCheckBox;
    cbIncrementField: TComboBox;
    Label2: TLabel;
    cbIncrementObject: TComboBox;
    labelUpdateObjects: TLabel;
    tsSpecParams: TTabSheet;
    cbSpecParams: TCheckBox;
    Panel11: TPanel;
    Label5: TLabel;
    Label6: TLabel;
    cbUpdateFields: TCheckBox;
    cbKeyFields: TCheckBox;
    cbTableName: TCheckBox;
    Label7: TLabel;
    Panel1: TPanel;
    Panel10: TPanel;
    Label8: TLabel;
    Bevel4: TBevel;
    bLoadSpecString: TButton;
    mSpecParams: TMemo;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    MemoUpdateFields: TMemo;
    MemoKeyFields: TMemo;
    dbeTableName: TDBEditEh;
    procedure FormCreate(Sender: TObject);
    procedure HelpButtonClick(Sender: TObject);
    procedure DefaultButtonClick(Sender: TObject);
    procedure GenerateButtonClick(Sender: TObject);
    procedure PrimaryKeyButtonClick(Sender: TObject);
    procedure PageControlChanging(Sender: TObject;
      var AllowChange: Boolean);
    procedure GetTableFieldsButtonClick(Sender: TObject);
    procedure SettingsChanged(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure UpdateTableNameChange(Sender: TObject);
    procedure UpdateTableNameClick(Sender: TObject);
    procedure SelectAllClick(Sender: TObject);
    procedure ClearAllClick(Sender: TObject);
    procedure cbInsertClick(Sender: TObject);
    procedure MemoModifyKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    DataDriver: TCustomSQLDataDriverEh;
    FSettingsChanged: Boolean;
    FDatasetDefaults: Boolean;
    function GetTableRef(const TabName, QuoteChar: string): string;
    function Edit: Boolean;
    procedure GenWhereClause(const TabAlias, QuoteChar: string; KeyFields, SQL: TStrings);
    procedure GenDeleteSQL(const TableName, QuoteChar: string; KeyFields, SQL: TStrings);
    procedure GenInsertSQL(const TableName, QuoteChar: string; UpdateFields, SQL: TStrings);
    procedure GenModifySQL(const TableName, QuoteChar: string; KeyFields, UpdateFields, SQL: TStrings);
    procedure GenGetRecSQL(SelectSQL, KeyFields, SQL: TStrings);
    procedure GenerateSQL;
    procedure FillMemoFromList(Memo: TMemo; List: TListBox);
    procedure GenerateSQLViaDBService;
    procedure GetDataSetFieldNames;
    procedure GetTableFieldNames;
    procedure InitGenerateOptions;
    procedure InitUpdateTableNames;
    procedure SetButtonStates;
    procedure SelectPrimaryKeyFields;
    procedure SetDefaultSelections;
    procedure ShowWait(WaitMethod: TWaitMethod);
//    function TempTable: TMemTableEh;
  end;

{ TSQLParser }

  TSQLToken = (stSymbol, stAlias, stNumber, stComma, stEQ, stOther, stLParen,
    stRParen, stEnd);

  TSQLParser = class
  private
    FText: string;
    FSourcePtr: Integer;
    FTokenPtr: Integer;
    FTokenString: string;
    FToken: TSQLToken;
    FSymbolQuoted: Boolean;
    function NextToken: TSQLToken;
    function TokenSymbolIs(const S: string): Boolean;
    procedure Reset;
  public
    constructor Create(const Text: string);
    procedure GetSelectTableNames(List: TStrings);
    procedure GetUpdateTableName(var TableName: string);
    procedure GetUpdateFields(List: TStrings);
    procedure GetWhereFields(List: TStrings);
  end;

function EditDataDriverUpdateSQL(ADataDriver: TCustomSQLDataDriverEh): Boolean;

implementation

{$R *.dfm}

uses Dialogs, TypInfo, SQLDriverEditEh;

{ Global Interface functions }

function EditDataDriverUpdateSQL(ADataDriver: TCustomSQLDataDriverEh): Boolean;
begin
  with TUpdateSQLEditFormEh.Create(Application) do
  try
    DataDriver := ADataDriver;
    Result := Edit;
  finally
    Free;
  end;
end;

{ Utility Routines }

procedure GetSelectedItems(ListBox: TListBox; List: TStrings);
var
  I: Integer;
begin
  List.Clear;
  for I := 0 to ListBox.Items.Count - 1 do
    if ListBox.Selected[I] then
      List.Add(ListBox.Items[I]);
end;

function SetSelectedItems(ListBox: TListBox; List: TStrings): Integer;
var
  I: Integer;
begin
  Result := 0;
  ListBox.Items.BeginUpdate;
  try
    for I := 0 to ListBox.Items.Count - 1 do
      if List.IndexOf(ListBox.Items[I]) > -1 then
      begin
        ListBox.Selected[I] := True;
        Inc(Result);
      end
      else
        ListBox.Selected[I] := False;
    if ListBox.Items.Count > 0 then
    begin
      ListBox.ItemIndex := 0;
      ListBox.TopIndex := 0;
    end;
  finally
    ListBox.Items.EndUpdate;
  end;
end;

procedure SelectAll(ListBox: TListBox);
var
  I: Integer;
begin
  ListBox.Items.BeginUpdate;
  try
    with ListBox do
      for I := 0 to Items.Count - 1 do
        Selected[I] := True;
    if ListBox.Items.Count > 0 then
    begin
      ListBox.ItemIndex := 0;
      ListBox.TopIndex := 0;
    end;
  finally
    ListBox.Items.EndUpdate;
  end;
end;

{procedure GetDataFieldNames(Dataset: TDataset; ErrorName: string; List: TStrings);
var
  I: Integer;
begin
  with Dataset do
  try
    FieldDefs.Update;
    List.BeginUpdate;
    try
      List.Clear;
      for I := 0 to FieldDefs.Count - 1 do
        List.Add(FieldDefs[I].Name);
    finally
      List.EndUpdate;
    end;
  except
    if ErrorName <> '' then
      MessageDlg(Format('SSQLDataSetOpen', [ErrorName]), mtError, [mbOK], 0);
  end;
end;
}

procedure GetSQLTableNames(const SQL: string; List: TStrings);
begin
  with TSQLParser.Create(SQL) do
  try
    GetSelectTableNames(List);
  finally
    Free;
  end;
end;

procedure ParseUpdateSQL(const SQL: string; var TableName: string;
  UpdateFields: TStrings; WhereFields: TStrings);
begin
  with TSQLParser.Create(SQL) do
  try
    GetUpdateTableName(TableName);
    if Assigned(UpdateFields) then
    begin
      Reset;
      GetUpdateFields(UpdateFields);
    end;
    if Assigned(WhereFields) then
    begin
      Reset;
      GetWhereFields(WhereFields);
    end;
  finally
    Free;
  end;
end;

{ TSQLParser }

constructor TSQLParser.Create(const Text: string);
begin
  inherited Create;
  FText := Text;
  FText := FText + #0;
  FSourcePtr := 1;
  NextToken;
end;

function TSQLParser.NextToken: TSQLToken;
var
  P, TokenStart: Integer;
  QuoteChar: Char;
  IsParam: Boolean;

{$IFDEF CIL}
{$ELSE}
  function IsKatakana(const Chr: Byte): Boolean;
  begin
    Result := (SysLocale.PriLangID = LANG_JAPANESE) and (Chr in [$A1..$DF]);
  end;
{$ENDIF}

begin
  if FToken = stEnd then SysUtils.Abort;
  FTokenString := '';
  FSymbolQuoted := False;
  P := FSourcePtr;
  while (FText[P] <> #0) and (FText[P] <= ' ') do Inc(P);
  FTokenPtr := P;
  case FText[P] of
    'A'..'Z', 'a'..'z', '_', '$', #127..#255:
      begin
        TokenStart := P;
        if not SysLocale.FarEast then
        begin
          Inc(P);
          while FText[P] in ['A'..'Z', 'a'..'z', '0'..'9', '_', '.', '"', '$', #127..#255] do Inc(P);
        end
        else
          begin
            while TRUE do
            begin
              if (FText[P] in ['A'..'Z', 'a'..'z', '0'..'9', '_', '.', '"', '$'])
{$IFDEF CIL}
{$ELSE}
                 or IsKatakana(Byte(FText[P]))
{$ENDIF}
              then
                Inc(P)
              else
                if FText[P] in LeadBytes then
                  Inc(P, 2)
                else
                  Break;
            end;
          end;
        FTokenString := Copy(FText, TokenStart, P - TokenStart);

//        SetString(FTokenString, TokenStart, P - TokenStart);
        FToken := stSymbol;
      end;
    '''', '"':
      begin
        QuoteChar := FText[P];
        Inc(P);
        IsParam := FText[P] = ':';
        if IsParam then Inc(P);
        TokenStart := P;
        while not (FText[P] in [QuoteChar]) and not (FText[P] = #0) do Inc(P);
        FTokenString := Copy(FText, TokenStart, P - TokenStart);
//        SetString(FTokenString, TokenStart, P - TokenStart);
        Inc(P);
        Trim(FTokenString);
        FToken := stSymbol;
        FSymbolQuoted := True;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区精品| 日本一区免费视频| 丁香激情综合国产| 图片区小说区区亚洲影院| 精品国产91亚洲一区二区三区婷婷| 91麻豆免费在线观看| 久久se这里有精品| 亚洲高清免费视频| 亚洲女同一区二区| 久久久精品人体av艺术| 88在线观看91蜜桃国自产| 99久免费精品视频在线观看| 久久99国产乱子伦精品免费| 婷婷综合久久一区二区三区| 亚洲欧洲中文日韩久久av乱码| 久久欧美一区二区| 91精品国产欧美一区二区| 在线看国产日韩| 波多野结衣精品在线| 国产精品一区在线观看乱码| 日韩高清电影一区| 樱桃国产成人精品视频| 国产精品麻豆久久久| 久久久99精品免费观看不卡| 欧美sm极限捆绑bd| 日韩一区二区电影在线| 欧美一级一区二区| 69久久99精品久久久久婷婷 | 久久久久久9999| 91精品国产欧美日韩| 欧美日韩国产高清一区二区三区| 色婷婷综合久久久| 色先锋资源久久综合| 波多野结衣中文一区| 高清免费成人av| 成人免费av网站| 99久久99久久精品国产片果冻| 国产精一区二区三区| 国产一区二区精品久久| 国产在线视频一区二区三区| 日本免费新一区视频| 麻豆精品国产传媒mv男同| 丝袜脚交一区二区| 久久精品国产亚洲5555| 久久精品国产亚洲5555| 九色porny丨国产精品| 蜜桃久久av一区| 国内外成人在线| 国产成人av在线影院| 成人一二三区视频| 97超碰欧美中文字幕| 一本色道久久综合精品竹菊| 91福利视频久久久久| 欧美人动与zoxxxx乱| 欧美美女喷水视频| 欧美成人性战久久| 国产欧美一区二区精品秋霞影院| 中文字幕欧美激情| 亚洲女人****多毛耸耸8| 一二三四社区欧美黄| 偷拍与自拍一区| 国内精品在线播放| 丁香亚洲综合激情啪啪综合| 粉嫩绯色av一区二区在线观看 | 色综合av在线| 欧美日韩一区二区三区不卡| 欧美区在线观看| 久久综合色一综合色88| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲素人一区二区| 日日摸夜夜添夜夜添精品视频| 久久99国产精品麻豆| 成人在线视频一区二区| 欧美性猛交xxxx乱大交退制版| 日韩免费看的电影| 日韩毛片精品高清免费| 婷婷综合五月天| 成人美女在线观看| 欧美精品亚洲一区二区在线播放| 欧美精品一区二区三| 亚洲欧洲日韩女同| 免费av成人在线| www.99精品| 日韩一卡二卡三卡四卡| 亚洲丝袜制服诱惑| 国产最新精品免费| 欧美日韩免费视频| 久久精品男人的天堂| 图片区小说区区亚洲影院| 高清久久久久久| 日韩一级完整毛片| 一区二区三区国产| 国产一区二区三区黄视频| 欧美日韩久久久一区| 亚洲国产高清在线观看视频| 日韩成人一级大片| 色综合视频在线观看| 2017欧美狠狠色| 日韩国产欧美视频| 欧美综合一区二区三区| 中文av一区特黄| 激情欧美一区二区| 8x8x8国产精品| 亚洲亚洲精品在线观看| 成人av手机在线观看| 久久在线免费观看| 午夜婷婷国产麻豆精品| 99久久国产免费看| 国产视频在线观看一区二区三区| 日本在线不卡一区| 欧美日韩在线综合| 亚洲欧美日韩人成在线播放| 国产suv一区二区三区88区| 日韩女优视频免费观看| 偷拍一区二区三区| 欧美日韩国产系列| 午夜精彩视频在线观看不卡| 一本大道久久a久久精品综合| 中文文精品字幕一区二区| 国产精品资源网站| 精品国产一区二区三区久久久蜜月| 亚洲动漫第一页| 91国模大尺度私拍在线视频| 亚洲少妇30p| 色综合久久久久久久久久久| 最近中文字幕一区二区三区| 成人精品在线视频观看| 欧美极品xxx| 国产乱色国产精品免费视频| 精品久久国产97色综合| 九一久久久久久| 亚洲精品一区二区三区香蕉| 久久99精品久久久久久国产越南 | 激情深爱一区二区| 欧美精品一区二区精品网| 美女视频网站久久| 日韩欧美电影一区| 麻豆成人免费电影| 欧美精品一区二区三| 国产经典欧美精品| 国产精品美女久久久久aⅴ | 国产一区二区三区最好精华液| 在线观看91精品国产麻豆| 午夜精品在线看| 日韩美一区二区三区| 久久精品国产99久久6| 精品日韩99亚洲| 国产寡妇亲子伦一区二区| 国产欧美日韩另类一区| 97久久超碰精品国产| 亚洲一区二区三区影院| 欧美日韩国产123区| 美女被吸乳得到大胸91| 久久久久久亚洲综合| 成人午夜电影网站| 亚洲欧美一区二区三区久本道91 | 精品亚洲porn| 久久九九全国免费| 91丝袜国产在线播放| 香蕉久久一区二区不卡无毒影院| 国产精品久久久久久一区二区三区| 成人av动漫网站| 亚洲一卡二卡三卡四卡五卡| 欧美一区二区三区免费大片| 激情五月激情综合网| 亚洲天堂2014| 日韩亚洲欧美在线| 国产99精品在线观看| 亚洲国产你懂的| 欧美精品一区二区精品网| 99热精品国产| 青青草91视频| 欧美国产欧美亚州国产日韩mv天天看完整| 91免费国产在线| 免费观看一级特黄欧美大片| 国产精品五月天| 欧美日韩高清一区二区不卡| 国产乱淫av一区二区三区| 一二三区精品视频| 久久亚洲精品国产精品紫薇| 色综合天天在线| 亚洲美女在线一区| 欧美一区二区观看视频| 99久久婷婷国产综合精品电影| 午夜精品影院在线观看| 国产偷国产偷精品高清尤物| 欧美在线观看视频一区二区 | 一本色道综合亚洲| 久久99在线观看| 亚洲国产一区二区在线播放| 久久久亚洲高清| 7777精品伊人久久久大香线蕉超级流畅| 国产精品正在播放| 婷婷综合在线观看| 亚洲色欲色欲www在线观看| 欧美xxxx在线观看| 欧美性猛片aaaaaaa做受| 成人午夜精品在线| 精品一区二区精品| 午夜精品国产更新|