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.
|