±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
Áú¹®°ú ´äº¯ Áú¹®°ú ´äº¯ ÀÔ´Ï´Ù.
±Û³»¿ë - Áú¹®°ú ´äº¯
 [Áú¹®]¹®ÀåÀ» ¹ÙÀ̳ʸ®·Î º¯È¯Àº µÇ´Âµ¥ ÀúÀåÀÌ ¾ÊµË´Ï´Ù.
ÀüºÀ¼ö
(ÀüºÀ¼ö)
2017-06-15 ¿ÀÈÄ 4:08:09
881ȸ Á¶È¸


÷ºÎÆÄÀÏ ´Ù¿î·Îµå
12345.txt
1. °³¹ß/½ÇÇà Ç÷§Æû 
  (1) OS : Windows 7
  (2) °³¹ßÅø :Delphi 7 
  (3) »ç¿ë Database : Firebird 2.1
2. °³¹ß ÁßÀΠÇÁ·Î±×·¥ °øÁö»çÇ×

3. Áú¹® ³»¿ë 
¾È³çÇϼ¼¿ä?
°øÁö»çÇ× ÇÁ·Î±×·¥À» ¸¸µå´Â ÁßÀÔ´Ï´Ù.
¸®Ä¡¿¡µðÅ͸¦ ÀÌ¿ëÇÏ¿© ±Û²Ã ÆùÆ®·Î º¯È¯ÇÏ¿© ½ºÆ®¸²À¸·Î DB¿¡ ¹ÙÀ̳ʸ®·Î º¯È¯Àº µÇ´Âµ¥ ÀúÀåÁß 
ÀúÀåÀÌ ¾ÊµÇ°í ¿¡·¯°¡ ³³´Ï´Ù. Ã·ºÎÆÄÀÏÀº ¹ÙÀ̳ʸ®·Î ÅؽºÆ®¿¡ ÀúÀåµÈ ÄÚµåÀÔ´Ï´Ù.
Á¾Àü¿¡´Â ºÎºÐÀûÀ¸·Î Äڵ带 ¿Ã·È´Âµ¥ ´ä±ÛÀÌ ¾ø¾î¼­ À̹ø¿¡´Â Ç® ÄÚµå·Î Áú¹®À» µå¸³´Ï´Ù.


¾Æ·¡¿Í °°ÀÌ ÀúÀåÀü SQLÀ̳ª Text·Î ÀúÀåÇؼ­ º¸¸éÀº º¯È¯Àº µË´Ï´Ù.
//showmessage(sSQL);
//Memo1.Lines.Add(sSQL);
//RI_MOTICE_NM.Lines.SaveToFile('C:\12345.txt'); 



¾Æ·¡´Â °øÁö»çÇ× Ç® ÄÚµåÀÔ´Ï´Ù.

unit Motice;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AdvToolBtn, ExtCtrls, StdCtrls, ComCtrls, DB, DBTables, Buttons,
  ADODB, Contnrs;

type
  TModeType = (mNone,mAppend,mUpdate,mDelete);
  TMotice_F = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Btn_Save: TAdvToolButton;
    Btn_CLOSE: TAdvToolButton;
    spAPPEND: TAdvToolButton;
    spUPDATE: TAdvToolButton;
    spDELETE: TAdvToolButton;
    QR_MOTICE: TQuery;
    Sp_Motice_CD: TSpeedButton;
    ED_MOTICE_CD: TEdit;
    RI_Motice_NM: TRichEdit;
    Panel4: TPanel;
    Panel5: TPanel;
    FontDialog1: TFontDialog;
    Btn_Font1: TAdvToolButton;
    Memo1: TMemo;
    procedure Btn_CLOSEClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ED_MOTICE_CDChange(Sender: TObject);
    procedure Sp_Motice_CDClick(Sender: TObject);
    procedure spAPPENDClick(Sender: TObject);
    procedure Btn_SaveClick(Sender: TObject);
    procedure Btn_Font1Click(Sender: TObject);
  private
    { Private declarations }
    MODETYPE: TMODETYPE;      // ÇöÀçÀÇ ¸ðµå»óÅÂ
    PROCEDURE COMPONENTCLEAR; // ÄÄÆ÷³ÍÆ® ÃʱâÈ­ ÇÔ¼ö
    PROCEDURE CHECKNUM(SENDER: TOBJECT);
    procedure GET_MOTICE(sMOTICECD: string);
  public
    { Public declarations }
  end;

var
  Motice_F: TMotice_F;

implementation

uses GOCOMU,ULSEQRUM, DataModule;

var
  startSQL : String;

{$R *.dfm}

// ÀÛ¾÷¸ðµå¸¦ ¼öÁ¤¸ðµå·Î ÀüȯÇÑ´Ù.(ÇÁ·Î±×·¥ ÃʱâÈ­)
procedure TMotice_F.FormCreate(Sender: TObject);
begin
  spUPDATE.Click;                         // ¼öÁ¤¹öÆ° È°¼ºÈ­
end;

// EDIT ÃʱâÈ­
PROCEDURE TMotice_F.COMPONENTCLEAR;
VAR
  wCC: WORD;
BEGIN
  //  Àüü COMPONENTÁß¿¡¼­ EDIT CHECKBOXÃʱâÈ­
  FOR wCC:=1 TO COMPONENTCOUNT - 1 DO
    IF COMPONENTS[wCC] IS TEDIT THEN
      TEDIT(COMPONENTS[wCC]).TEXT:=''
    ELSE
    IF COMPONENTS[wCC] IS TCHECKBOX THEN
      TCHECKBOX(COMPONENTS[wCC]).CHECKED:=FALSE
    ELSE
    IF COMPONENTS[wCC] IS TRichEdit THEN
      TRichEdit(COMPONENTS[wCC]).Lines.Text:='';
end;

// µî·ÏµÈ ÀÚ·á º¸¿©ÁÖ±â ÇÔ¼ö
PROCEDURE TMotice_F.CHECKNUM(SENDER: TOBJECT);
Var
  sSQL : String;
begin
  sSQL := ' Select * From TF_MOTICE';
  DM.SQL_OPEN(QR_MOTICE, sSQL);
  if QR_MOTICE.Eof then
    Exit;
    try
      QR_MOTICE.OPEN;
    except
      APPLICATION.MESSAGEBOX('°øÁö»çÇ× Á¤º¸ Å×ÀÌºí »ý¼ºµµÁß ¿¡·¯¹ß»ý!!!',
                             '¿À·ù', MB_OK + MB_ICONINFORMATION);
      QR_MOTICE.CLOSE;
    end;
end;

// ÀÛ¾÷Á¾·á
procedure TMotice_F.Btn_CLOSEClick(Sender: TObject);
begin
  Close;
end;

// µî·ÏµÈ ÀڷḦ º¸¿©ÁØ´Ù.
procedure TMotice_F.FormShow(Sender: TObject);
Var
  sSQL : String;
begin
  startSQL := ' Select * From TF_MOTICE';
  DM.SQL_OPEN(QR_MOTICE, startSQL);
  if QR_MOTICE.Eof then
    Exit;
    try
      QR_MOTICE.OPEN;
    except
      APPLICATION.MESSAGEBOX('°øÁö»çÇ× Á¤º¸ Å×ÀÌºí »ý¼ºµµÁß ¿¡·¯¹ß»ý!!!',
                             '¿À·ù', MB_OK + MB_ICONINFORMATION);
      QR_MOTICE.CLOSE;
    end;
end;

// °øÁöÄڵ尡 ¹Ù²î¸é µî·ÏµÈ ÀڷḦ Àç ÀÛ¼ºÇÑ´Ù.
procedure TMotice_F.ED_MOTICE_CDChange(Sender: TObject);
begin
  // °øÁöÄڵ带 Àç ÀÛ¼ºÇÑ´Ù.
  Sp_Motice_CD.Click;

  // µî·ÏµÈ Àڷΰ¡ ÀÖÀ¸¸é º¸¿©ÁÖ°í »èÁ¦¹öÆ° È°¼ºÈ­¿©ºÎ Á¡°Ë
  IF SENDER = ED_MOTICE_CD THEN
    BEGIN
      GET_MOTICE(TRIM(TEDIT(SENDER).TEXT));
      IF QR_MOTICE.ACTIVE THEN
        QR_MOTICE.Locate('MOTICE_CD',TRIM(TEDIT(SENDER).TEXT),[lopartialkey]);
    END;

  // ÀԷ¿¡¼­ °øÁö»çÇ× ÄÚµå±â ÀԷµǸ頰øÁö ³»¿ëÀ» Ã£¾ÆÁØ´Ù.
  if SENDER = ED_MOTICE_CD then
    BEGIN
      RI_MOTICE_NM .TEXT:=
      GET_CODE_DESC('TF_MOTICE',1,[1],['MOTICE_CD'],[TRIM(ED_MOTICE_CD.TEXT)],'MOTICE_NM');
    END;
end;

// µî·ÏµÈ ÀÚ·á º¸¿©ÁÖ±â ÇÔ¼ö
procedure TMotice_F.GET_MOTICE(sMOTICECD: string);
Var
  Q1 : TQUery;
  SS: TStringStream;
  sTemp: String;
begin
  if MODETYPE in [mNone] then
    EXIT;

    Q1:=TQUERY.CREATE(SELF);
    Q1.DATABASENAME:=ALIASNAME;
    Q1.SQL.CLEAR;
    Q1.SQL.ADD(' SELECT * FROM TF_MOTICE WHERE MOTICE_CD = '''+sMOTICECD+'''');
    Q1.OPEN;
    SS := TStringStream.Create('');
    sTemp := Q1.FieldByName('MOTICE_NM').AsString;
    RI_MOTICE_NM.Lines.SaveToStream(SS);
    SS.Free;
    Q1.CLOSE;
    Q1.FREE;
    ACTIVECONTROL:=RI_MOTICE_NM;
end;

// °øÁö»çÇ×Äڵ堽ÇÇà
procedure TMotice_F.Sp_Motice_CDClick(Sender: TObject);
begin
  ED_MOTICE_CD.Text := 'MOT001';
end;

//-----------------------------------------------------------------------------
// BUTTON EVENT
//-----------------------------------------------------------------------------
// »ðÀÔ¹öÆ°(¼±ÅùöÆ° ¸ðµå¼³Á¤
procedure TMotice_F.spAPPENDClick(Sender: TObject);
Var
  sSQL :String;
begin
  // ÇöÀç ÀÛ¾÷¸ðµå »óÅ ¼³Àü
  if SENDER = spAPPEND then MODETYPE := mAPPEND
  else
  if SENDER = spUPDATE then MODETYPE := mUPDATE
  else
  if SENDER = spDELETE then MODETYPE := mDELETE;

  // µî·ÏµÈ ÀüüÀÚ·á º¸¿©ÁÖ±â
  sSQL := 'SELECT * FROM TF_MOTICE';
  DM.SQL_Open(QR_Motice, sSQL);
  if not QR_Motice.Active then
    QR_Motice.OPEN;
    CHECKNUM(SENDER);
    ACTIVECONTROL := RI_Motice_NM; // Ä¿¼ÅÁ¦¾î
end;

// ÀúÀå¹öÆ°(¼³Á¤µÈ ¸ðµå¿¡µû¶ó SQL±¸¹®À» µ¿ÀûÀ¸·Î »ý¼ºÇÏ¿© ½ÇÇà
procedure TMotice_F.Btn_SaveClick(Sender: TObject);
var
  sSQL: string;
  sEPM_CD, sStreamVal : String;
  rtVal : Boolean;
//  SS: TMemoryStream;
  SS: TStringStream;
begin
    // °øÁö¸í Á¡°Ë
  IF (Trim(RI_Motice_NM.Text) = '') then
    begin
      Application.MessageBox('°øÁö¸íÀ» ÁöÁ¤ÈÄ ÀÛ¾÷ÇϽÿä...','°øÁö¸í Á¡°Ë',
                              mb_ok+mb_IconInformation);
      ActiveControl := RI_Motice_NM;
      Exit;
    end;

  IF APPLICATION.MESSAGEBOX('ÀԷµȠµ¥ÀÌŸ¸¦ ÀúÀå ÇϽðڽÀ´Ï±î?','ÀúÀåÈ®ÀÎ',
                               MB_YESNO+MB_ICONQUESTION) <> IDYES THEN
    EXIT;

  SS := TStringStream.Create(RI_Motice_NM.Text);
  try
    SS.Position := 0;
    RI_MOTICE_NM.Lines.SaveToStream(SS);

  sStreamVal := SS.DataString;

  // ¸ðµå¿¡µû¸¥ SQL ±¸¹®»ý¼º
  case MODETYPE of
    mAPPEND: // Ãß°¡ ¸ðµå½Ã
      begin
        sSQL := 'INSERT INTO TF_MOTICE(MOTICE_CD,MOTICE_NM) '+
                'VALUES(' +
                 FORMAT('''%s''',  [TRIM(ED_MOTICE_CD.TEXT)])+  //°øÁöÄÚµå
                FORMAT(',''%s''', [TRIM(sStreamVal)])+ //RI_MOTICE_NM.TEXT)])+  //°øÁö¸í
                ')';
      end;
    mUPDATE: // ¼öÁ¤¸ðµå
      begin
        sSQL := 'UPDATE TF_MOTICE SET' +
                 FORMAT(' MOTICE_NM =''%s''', [TRIM(sStreamVal)])+  // °øÁö¸í
                 FORMAT(' WHERE MOTICE_CD=''%s''', [TRIM(ED_MOTICE_CD.Text)]);   // °øÁöÄÚµå
      end;
    mDELETE: // »èÁ¦¸ðµå
      begin
        if APPLICATION.MESSAGEBOX('Á¤¸»·Î »èÁ¦ ÇϽðڽÀ´Ï±î?', '»èÁ¦È®ÀÎ',
          MB_YESNO + MB_ICONQUESTION) <> IDYES then
          EXIT;
          sSQL := 'DELETE FROM TF_MOTICE Where ' +
                  'MOTICE_CD = ' + FORMAT('''%s''', [TRIM(ED_MOTICE_CD.Text)]);
      end;
  end;

//showmessage(sSQL);
//Memo1.Lines.Add(sSQL);
//RI_MOTICE_NM.Lines.SaveToFile('C:\12345.txt'); //<- ÅؽºÆ®·Î ÀúÀåÇϸ頹ÙÀ̳ʸ®·Î ÀúÀå µÊ

  // µ¿Àû QUERY »ý¼º
  rtVal := DM.SQL_Exec(DM.qryExec, sSQL);  // DataModule¸¦ OpenÇÑ´Ù.
  if not rtVal then
    begin
      case MODETYPE of
        mAPPEND:
          APPLICATION.MessageBox('°øÁö»çÇ× Å×À̺í Ãß°¡µµÁß ERROR ¹ß»ý!!!', '¿À·ù',
                                  MB_OK + MB_ICONINFORMATION);
        mUPDATE:
          APPLICATION.MessageBox('°øÁö»çÇ× Å×ÀÌºí ¼öÁ¤µµÁß ERROR ¹ß»ý!!!', '¿À·ù',
                                  MB_OK + MB_ICONINFORMATION);
        mDELETE:
          APPLICATION.MessageBox('°øÁö»çÇ× Å×ÀÌºí »èÁ¦µµÁß ERROR ¹ß»ý!!!', '¿À·ù',
                                  MB_OK + MB_ICONINFORMATION);
    end;
  end;

    sStreamVal := ss.DataString;
  finally
    SS.Free;
  end;

  // ÃʱâÈ­
  DM.SQL_OPEN(QR_MOTICE, startSQL);
  CHECKNUM(SENDER);
  ACTIVECONTROL:=RI_Motice_NM;
end;

// ¸®Ä¡¿¡µðÅÍ¿¡ ºí·°À¸·Î ±Û²Ã°ú »ö»ó Å©±â ÆùÆ® ³Ö±â
procedure TMotice_F.Btn_Font1Click(Sender: TObject);
begin
  if RI_Motice_NM.SelLength > 0 then
    begin
      FontDialog1.Font.Assign(RI_Motice_NM.DefAttributes);
      if FontDialog1.Execute then
        RI_Motice_NM.SelAttributes.Assign(FontDialog1.Font);
    end;
end;

end.