반응형

출처:

http://blog.naver.com/PostView.nhn?blogId=timeofline&logNo=140098964103


BDE_Alias.ZIP




 

읽기, 추가, 삭제 포함.

 

예제를 만들어 소스화일과 같이 첨부한다.

다들 수고하고 감기 조심하자.

 

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBTables, ExtCtrls, Grids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    memo1: TMemo;

    RadioGroup1: TRadioGroup;
    procedure Button1Click(Sender: TObject);
    procedure value_loading(Aname : string);
    procedure value_writing;
    procedure ComboBox1Change(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormActivate(Sender: TObject);
begin
 RadioGroup1Click(Sender);
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
 var
  CurrentAliases: TStringList;
begin
 case RadioGroup1.ItemIndex of
 0,2 : begin
        ComboBox1.Style := csDropDownList;
        CurrentAliases := TStringList.Create;
        try
         Session.GetAliasNames(CurrentAliases) ;
         ComboBox1.Items:= CurrentAliases;
        finally
         CurrentAliases.Free;
        end;

        IF ComboBox1.Items.Count > 0 then
         begin
          ComboBox1.ItemIndex := 0;
          ComboBox1.OnChange(Sender);
         end;
       end;
   1 : begin
        ComboBox1.Clear;
        ComboBox1.Items.Add('ERPDB');
        ComboBox1.SetFocus;
        ComboBox1.ItemIndex := 0;
        ComboBox1.SelectAll;
        ComboBox1.Style := csDropDown;
       end;
 end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 Case RadioGroup1.ItemIndex of
 0, 2 : begin
        if ComboBox1.ItemIndex <> -1 then
        value_loading(ComboBox1.text);
        end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Case RadioGroup1.ItemIndex of
    0 : RadioGroup1.OnClick(Sender);
    1 : begin
         IF Trim(ComboBox1.Text) <> '' then
         value_writing
         else
          ShowMessage('Alias명 또는 Params List를 확인하세요');
        end;
    2 : begin
         IF ComboBox1.ItemIndex <> -1 then
         begin
          IF MessageDlg('Alias('+ComboBox1.Text+')를 정말 삭제하시겠습니까?' +#13#13+ '삭제된 Alias는 복구되지 않습니다.',mtWarning,mbOKCancel,0) = mrOK then
          begin
          Session.DeleteAlias(ComboBox1.Text);
          ShowMessage('Alias('+ComboBox1.Text+')가 삭제되었습니다.');
          RadioGroup1.OnClick(Sender);
          end;
         end else
          ShowMessage('삭제할 Alias가 선택되지 않았습니다.');
        end;
  end;
end;

procedure TForm1.value_loading(Aname : string);
var
  sMaybeAlias : string;
  ParamList : TStringList;
begin
 if ComboBox1.ItemIndex <> -1 then
 begin
  sMaybeAlias := ComboBox1.Text;
  if Session.isAlias(sMaybeAlias) then
  begin
    ParamList := TStringList.Create;
    try
     Session.GetAliasParams(sMaybeAlias, ParamList) ;
     //     ListBox1.Items := ParamList;
     memo1.Lines := ParamList;
    finally
     ParamList.Free;
    end;
  end
  else
  ShowMessage(sMaybeAlias) ;
 end;
end;

procedure TForm1.value_writing;
var NewAliasParams : TStringList;
    AliasName : string;
    i : Integer;
    s : string;
begin
  ComboBox1.text := Trim(ComboBox1.text);
  AliasName:=ComboBox1.text;

  IF Session.IsAlias(AliasName) then
  Case MessageDlg('이미 Alias : '+AliasName+' 가 존재합니다.'+#13#13+'삭제한 후 진행할까요?' +#13#13+ '삭제된 Alias는 복구되지 않습니다.',mtWarning,mbOKCancel,0) of
  mrOk     : Session.DeleteAlias(AliasName);
  mrCancel : Exit;
  end;

  NewAliasParams := TStringList.create;
  try
    for i := 0 to memo1.Lines.Count-1 do
    begin
     s := memo1.Lines.Strings[i];
     if (Trim(s) <> '') and (Trim(Copy(s,1,Pos('=',s)-1)) <> '') and (Trim(Copy(s, Pos('=',s)+1 , Length(s))) <> '') then
      NewAliasParams.Values[ Trim(Copy(s,1,Pos('=',s)-1)) ] := Trim(Copy(s, Pos('=',s)+1 , Length(s)));
    end;

    Session.AddAlias(AliasName, 'MSSQL', NewAliasParams) ;
    Session.SaveConfigFile;
    ShowMessage('Alias : '+ AliasName +' 이 정상적으로 등록되었습니다.');
    {
    NewAliasParams.Values['DATABASE NAME'] := 'DBname';
    NewAliasParams.Values['SERVER NAME'] := '192.168.0.1';
    NewAliasParams.Values['USER NAME'] := 'sa';
    NewAliasParams.Values['OPEN MODE'] := 'READ/WRITE';
    NewAliasParams.Values['SCHEMA CACHE SIZE'] := '8';
    NewAliasParams.Values['BLOB EDIT LOGGING'] := '';
    NewAliasParams.Values['LANGDRIVER'] := '';
    NewAliasParams.Values['SQLQRYMODE'] := '';
    NewAliasParams.Values['SQLPASSTHRU MODE'] := 'SHARED AUTOCOMMIT';
    NewAliasParams.Values['DATE MODE'] := '0';
    NewAliasParams.Values['SCHEMA CACHE TIME'] := '-1';
    NewAliasParams.Values['MAX QUERY TIME'] := '300';
    NewAliasParams.Values['MAX ROWS'] := '-1';
    NewAliasParams.Values['BATCH COUNT'] := '200';
    NewAliasParams.Values['ENABLE SCHEMA CACHE'] := 'FALSE';
    NewAliasParams.Values['SCHEMA CACHE DIR'] := '';
    NewAliasParams.Values['HOST NAME'] := '';
    NewAliasParams.Values['APPLICATION NAME'] := '';
    NewAliasParams.Values['NATIONAL LANG NAME'] := '';
    NewAliasParams.Values['ENABLE BCD'] := 'FALSE';
    NewAliasParams.Values['TDS PACKET SIZE'] := '4096';
    NewAliasParams.Values['BLOBS TO CACHE'] := '64';
    NewAliasParams.Values['BLOB SIZE'] := '32';
    Session.AddAlias(AliasName, 'MSSQL', NewAliasParams) ;
    Session.SaveConfigFile;
    }
  except
    on E: Exception do
    MessageDlg(E.Message, mtWarning, [mbOK], 0);
  end;
 NewAliasParams.Free;
end;

end.

 

 

반응형
반응형