Q&A

  • [긴급]데이터가 저장되지 않는 이유...
아래 소스를 보시고 왜 테이블에 저장이 안되는지 알려 주시면 고맙겠습니다.

아주 급합니다.





unit BuyU;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Db, DBTables, Grids, DBGrids, filectrl, ExtCtrls, DBCtrls, ComCtrls,

Buttons, StdCtrls, Mask, ToolEdit, CurrEdit, Qrctrls, quickrpt, RXDBCtrl, RxCalc, PHeadLabel, bde;



type

TfrmBuy = class(TForm)

DataSource1: TDataSource;

dtBuy: TDateTimePicker;

Panel2: TPanel;

QuickRep1: TQuickRep;

QRBand1: TQRBand;

QRLabel10: TQRLabel;

DBNavigator1: TDBNavigator;

Panel3: TPanel;

SpeedButton7: TSpeedButton;

SpeedButton2: TSpeedButton;

ColumnHeaderBand1: TQRBand;

SummaryBand1: TQRBand;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

QRGroup1: TQRGroup;

QRLabel7: TQRLabel;

QRDBText1: TQRDBText;

QRDBText6: TQRDBText;

QRBand2: TQRBand;

QRDBText2: TQRDBText;

QRDBText5: TQRDBText;

QRDBText7: TQRDBText;

QRDBText8: TQRDBText;

QRExpr1: TQRExpr;

QRLabel9: TQRLabel;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRLabel11: TQRLabel;

QRDBText9: TQRDBText;

Table1: TTable;

Edit2: TEdit;

SpeedButton1: TSpeedButton;

Panel1: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit3: TEdit;

Edit4: TEdit;

CurrencyEdit1: TCurrencyEdit;

Edit6: TEdit;

Table1CommercialName: TStringField;

Table1buydate: TDateField;

Table1buy_pCode: TStringField;

Table1buy_cCode: TStringField;

Table1price: TCurrencyField;

Table1amount: TCurrencyField;

Table1buga: TCurrencyField;

Table1ProviderName: TStringField;

BitBtn1: TBitBtn;

Table1count: TFloatField;

Panel4: TPanel;

PHeadLabel1: TPHeadLabel;

Label4: TLabel;

Edit5: TEdit;

Label5: TLabel;

Edit7: TEdit;

Label6: TLabel;

Edit8: TEdit;

Label7: TLabel;

Edit9: TEdit;

Label8: TLabel;

Edit10: TEdit;

Label9: TLabel;

CurrencyEdit2: TCurrencyEdit;

Label10: TLabel;

CurrencyEdit3: TCurrencyEdit;

Label11: TLabel;

CurrencyEdit4: TCurrencyEdit;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Bevel1: TBevel;

Bevel2: TBevel;

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

CheckBox1: TCheckBox;

RxDBGrid1: TRxDBGrid;

procedure SpeedButton2Click(Sender: TObject);

// procedure InputData;

procedure SpeedButton6Click(Sender: TObject);

procedure SpeedButton5Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

procedure SpeedButton7Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure RxDBGrid1KeyPress(Sender: TObject; var Key: Char);

procedure Table1NewRecord(DataSet: TDataSet);

procedure RxDBGrid1ColExit(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure Edit4KeyPress(Sender: TObject; var Key: Char);

procedure Panel1Click(Sender: TObject);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

procedure Table1AfterPost(DataSet: TDataSet);

procedure Edit6KeyPress(Sender: TObject; var Key: Char);

procedure BitBtn1Click(Sender: TObject);

procedure RxDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer;

Field: TField);

procedure BitBtn3Click(Sender: TObject);

procedure Edit5KeyPress(Sender: TObject; var Key: Char);

procedure Edit7KeyPress(Sender: TObject; var Key: Char);

procedure Edit8KeyPress(Sender: TObject; var Key: Char);

procedure Edit10KeyPress(Sender: TObject; var Key: Char);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure CurrencyEdit4KeyPress(Sender: TObject; var Key: Char);

procedure CheckBox1Click(Sender: TObject);

procedure Edit9KeyPress(Sender: TObject; var Key: Char);

procedure Panel4Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure RadioButton2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure PayCalc;

procedure CurrencyEdit2KeyPress(Sender: TObject; var Key: Char);

procedure ClearData;

procedure Delay(MSecs: Integer);

private

{ Private declarations }



public

{ Public declarations }

end;



var

frmBuy: TfrmBuy;

Rate, s: Currency;

pcode,ccode:string;



implementation

uses

MainU, paymoney, comU, companyU, companyp;

{$R *.DFM}



procedure TfrmBuy.SpeedButton2Click(Sender: TObject);

begin

with panel4 do begin

if visible=True then

visible:=false

else

visible:=True;

end;

end;







procedure TfrmBuy.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Action :=caFree;

end;



procedure TfrmBuy.FormShow(Sender: TObject);

begin

frmMain.fname := frmMain.workdir + 'buy.db';

if not fileexists(frmMain.fname) then

begin

Showmessage(frmMain.fname + '가 존재하지 않습니다');

Exit;

end;

dtBuy.date := now;

Rate:=0.1;

//edit2.setfocus;



end;



//******************* TfrmBuy.Delay *************************

procedure TfrmBuy.Delay(MSecs: Integer);

var

FirstTickCount: LongInt;

begin

FirstTickCount := GetTickCount;

repeat

Application.ProcessMessages;

until ((GetTickCount - FirstTickCount) >= LongInt(MSecs));

end;



//******************* TfrmBuy.SpeedButton7Click *************************

procedure TfrmBuy.SpeedButton7Click(Sender: TObject);

begin

Self.Close;

end;



procedure TfrmBuy.FormCreate(Sender: TObject);

var

fname : string;

begin

fName := frmMain.workDir + 'Buy.db';



with Table1 do begin

if fileExists(fName) then begin

Active :=false;

DatabaseName := frmMain.workDir;

TableName := fname;

Active:= true;

end

else begin

Showmessage(fName + '를 찾을 수 없습니다.');

Active := false;

Exit;

end;

end;

rate :=0.1;

end;



procedure TfrmBuy.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then begin

with frmMain.tbprovider do begin

indexName :='ixpName';

if edit2.text='' then begin

with Table1 do begin

Filtered := False;

Exit;

end;

end;

if Findkey([edit2.text]) then begin

pcode := FieldByName('pCode').Asstring;

edit2.Text := FieldByName('pName').AsString;

end

else begin

FindNearest([edit2.text]);

pcode := FieldByName('pCode').Asstring;

edit2.Text := FieldByName('pName').AsString;

end;

with Table1 do begin

Filtered := true;

Filter :='buy_pCode ='''+pcode +''''

end;

Table1.indexname:='ixbuydatepcode';

indexName :='ixpcode';

end;

end;

end;





procedure TfrmBuy.SpeedButton1Click(Sender: TObject);

begin

if Panel1.visible = True then

Panel1.Visible := False

else begin

Panel1.Visible := True;

end;

end;





procedure TfrmBuy.Edit4KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then begin

with frmMain.tbCom do begin

indexName := 'ixcName';

if FindKey([edit4.Text]) then begin

edit3.text := fieldbyName('cCode').asstring;

edit4.text := fieldbyName('cName').asstring;

CurrencyEdit1.value := FieldbyName('cPrice').ascurrency;

Edit;

FieldByName('cPrice').asCurrency := CurrencyEdit1.Value;

Post;

end;



end;

CurrencyEdit1.Setfocus;

end;

end;



procedure TfrmBuy.Panel1Click(Sender: TObject);

begin

PostMessage(Panel1.Handle, WM_SYSCOMMAND, $F012, 0);

end;



procedure TfrmBuy.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then begin

with frmMain.tbCom do begin

indexName :='ixcCode';

if FindKey([edit3.text]) then begin

edit3.text := fieldbyname('cCode').asstring;

edit6.text := fieldbyname('cName').asstring;

CurrencyEdit1.value := fieldbyname('cPrice').asCurrency;

CurrencyEdit1.Setfocus;

end;

end;

end;



end;



procedure TfrmBuy.Table1AfterPost(DataSet: TDataSet);

begin

dbiSaveChanges(Table1.Handle);

end;





procedure TfrmBuy.Edit6KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then begin

with frmMain.tbCom do begin

indexname :='ixcName';

if findKey([edit6.text]) then begin

edit3.text := fieldbyname('cCode').asstring;

edit6.text := fieldbyname('cName').asstring;

end;

indexName := 'ixcCode';

end;

end;

end;



procedure TfrmBuy.BitBtn1Click(Sender: TObject);

begin

with frmMain.tbCom do begin

indexName := 'ixcCode';

if FindKey([edit3.Text]) then begin

Edit;

FieldByName('cPrice').asCurrency := CurrencyEdit1.Value;

Post;

end;

end;

edit3.text :='';

edit6.text :='';

Currencyedit1.value :=0;

edit6.Setfocus;

end;



procedure TfrmBuy.RxDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer;

Field: TField);

begin

case ACol of

0: table1.indexName:='ixbuydatepcode';

1: table1.indexName:='ixbuy_pcode';

3: table1.indexName:='ixbuy_Ccode';

end;

end;



procedure TfrmBuy.BitBtn3Click(Sender: TObject);

begin

panel4.Visible:=False;

end;





procedure TfrmBuy.Edit5KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

begin

With frmmain.tbProvider do

begin

indexname:='ixpcode';

if findkey([edit5.text]) then

begin

pcode:=FieldbyName('pcode').Asstring;

end

else begin

FindNearest([edit5.text]);

pcode:=FieldbyName('pcode').Asstring;

end;

edit5.text:=pcode;

edit7.text:= FieldbyName('pname').Asstring;

edit9.setfocus;

end;

end;

end;



procedure TfrmBuy.Edit7KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

begin

With frmmain.tbProvider do

begin

indexname:='ixpname';

if findkey([edit7.text]) then

begin

pcode:=FieldbyName('pcode').Asstring;

end

else begin

FindNearest([edit7.text]);

pcode:=FieldbyName('pcode').Asstring;

end;

if checkbox1.Checked=true then

begin

Table1.Filtered:=True;

Table1.Filter:='buy_pcode='''+pcode+'''';

edit5.enabled:=false;

end

else begin

Table1.Filtered:=False;

edit5.enabled:=True;

end;

with Table1 do

edit5.text:=pcode;

edit7.text:= FieldbyName('pname').Asstring;

edit9.setfocus;

end;

end;

end;



procedure TfrmBuy.Edit8KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

begin

With frmmain.tbCom do

begin

indexname:='ixccode';

if findkey([edit8.text]) then

begin

ccode:=FieldbyName('ccode').Asstring;

end

else begin

FindNearest([edit8.text]);

ccode:=FieldbyName('ccode').Asstring;

end;

edit8.text:=ccode;

edit9.text:= FieldbyName('cname').Asstring;

edit10.setfocus;

end;

end;

end;



procedure TfrmBuy.Edit10KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

begin

if edit10.text='' then Exit;



With frmmain.tbCom do

begin

indexname:='ixccode';

if findkey([edit8.text]) then

begin

if currencyedit2.value >0 then begin

currencyedit2.value:= FieldbyName('cprice').AsCurrency;

currencyedit3.value:= (Round(strtoFloat(edit10.text) * currencyedit2.value)* Rate * 10 )/10 ;

currencyedit4.value := (strtoFloat(edit10.text) * currencyedit2.value)+ currencyedit3.value;

CurrencyEdit4.SetFocus;

end

else begin

currencyedit4.value := (strtoFloat(edit10.text) * currencyedit2.value);

currencyedit2.setfocus;

end;

end;

end;



end;

end;



procedure TfrmBuy.RadioButton1Click(Sender: TObject);

begin

Rate:=0.1;

if CurrencyEdit2.value=0 then Exit;



currencyedit3.value:= (Round(strtoFloat(edit10.text) * currencyedit2.value)* Rate * 10 )/10 ;

currencyedit4.value := (strtoFloat(edit10.text) * currencyedit2.value)+ currencyedit3.value;

end;



procedure TfrmBuy.RadioButton2Click(Sender: TObject);

begin

Rate:=0;

if CurrencyEdit2.value=0 then Exit;

currencyedit3.value:= 0 ;

currencyedit4.value := (strtoFloat(edit10.text) * currencyedit2.value);

end;





procedure TfrmBuy.PayCalc;

begin

with frmMain.tbYearPay do begin

if findkey([Edit5.text]) then begin

edit;

fieldbyname('pay_pCode').asString:= Edit5.text;

fieldbyname('totalmoney').asCurrency := fieldbyname('totalmoney').asCurrency +

Table1.Fieldbyname('Amount').AsCurrency;

fieldbyname('RemainMoney').asCurrency:=fieldbyname('totalMoney').asCurrency

- fieldbyname('PayMoney').asCurrency;

post;

end

else begin

append;

fieldbyname('pay_pCode').asString:= Edit5.text;

fieldbyname('totalmoney').asCurrency := fieldbyname('totalmoney').asCurrency +

Table1.Fieldbyname('Amount').AsCurrency;

fieldbyname('RemainMoney').asCurrency:=fieldbyname('PayMoney').asCurrency + Table1Amount.Value;

post;

end;



end;

end;





procedure TfrmBuy.ClearData;

begin

edit8.text:='';

edit9.text:='';

edit10.text:='';

currencyedit2.value:=0;

currencyedit3.value:=0;

currencyedit4.value:=0;

if checkBox1.Checked=False then begin

edit5.text:='';

edit7.text:='';

edit7.setfocus;

end

else

edit9.setfocus;



end;





//이 부분이 데이터를 저장하는 코드

procedure TfrmBuy.CurrencyEdit4KeyPress(Sender: TObject; var Key: Char);

var

tax:Currency;

begin

if key=#13 then begin

with Table1 do begin

if Active=False then Active:=True;



if (edit10.text<>'') and (currencyedit2.value>=0) then begin

insert;

Fieldbyname('buydate').asDateTime:=dtbuy.date;

Fieldbyname('buy_ccode').asString:=edit5.text;

FieldbyName('buy_pcode').asstring:=edit8.text;

Fieldbyname('count').asFloat:=strtoint(edit10.text);

Fieldbyname('price').asCurrency:=currencyedit2.value;

Fieldbyname('buga').asCurrency:=currencyedit3.value;

FieldbyName('amount').asCurrency:=currencyedit4.value;

post;

refresh;

end

else begin //역계산

if Currencyedit2.value<=0 then begin

ShowMessage('가격을 정확하게 입력하세요!');

Exit;

end;

Tax:= currencyedit4.value /11;

edit10.text:=FormatFloat('#,',Round((currencyedit4.value- Tax)/currencyedit2.Value));

currencyedit3.value:= Tax;

delay(1000);

insert;

Fieldbyname('buydate').asDateTime:=dtbuy.date;

Fieldbyname('buy_ccode').asString:=edit5.text;

FieldbyName('buy_pcode').asstring:=edit8.text;

Fieldbyname('price').asCurrency:=currencyedit2.value;

FieldByName('Count').AsFloat :=Round((currencyedit4.value- Tax)/currencyedit2.Value);

FieldByName('Buga').AsCurrency := Tax;

FieldByName('Amount').AsCurrency:= currencyedit4.value;

Post;

refresh;

end;

end;

paycalc;

ClearData;

end;

end;



procedure TfrmBuy.CheckBox1Click(Sender: TObject);

begin

with Table1 do begin

if CheckBox1.checked=true then

begin

Filtered:=True;

Filter:='buy_pcode='''+edit5.text+'''';

edit5.enabled:=false;

end

else begin

Filtered:=False;

edit5.enabled:=True;

end;

end;

end;



procedure TfrmBuy.Edit9KeyPress(Sender: TObject; var Key: Char);

begin

if key =#13 then

begin

With frmmain.tbCom do

begin

indexname:='ixcname';

if findkey([edit9.text]) then

begin

ccode:=FieldbyName('ccode').Asstring;

end

else begin

FindNearest([edit9.text]);

ccode:=FieldbyName('ccode').Asstring;

end;

edit8.text:=ccode;

currencyedit2.value:=FieldByName('cprice').ascurrency;

currencyedit3.value:= (currencyedit2.value* Rate * 10 )/10 ;

edit9.text:= FieldbyName('cname').Asstring;

edit10.setfocus;

end;

end;

end;



procedure TfrmBuy.Panel4Click(Sender: TObject);

begin

panel4.perform(WM_SYSCOMMAND,$f012,0);

end;



procedure TfrmBuy.BitBtn2Click(Sender: TObject);

var

Tax:Currency;

begin

// CurrencyEdit4KeyPress와 동일함

end;



procedure TfrmBuy.RadioButton2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

case Key of

VK_TAB,VK_RIGHT,VK_RETURN: currencyedit4.setfocus;

end;

end;



procedure TfrmBuy.CurrencyEdit2KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

begin

if Currencyedit2.value <>0 then

begin

currencyedit3.value:= (Round(strtoFloat(edit10.text) * currencyedit2.value)* Rate * 10 )/10 ;

currencyedit4.value := (strtoFloat(edit10.text) * currencyedit2.value)+ currencyedit3.value;

CurrencyEdit4.SetFocus;

end;

end;

end;



end.









1  COMMENTS
  • Profile
    이용민 1999.06.23 12:56
    질문에 대한 답은 아니지만 얼핏보이기에...



    선생이 쓰시는 이코드는 다음과 같이 간단히 할 수 있거든요.

    if Panel1.visible = True then

    Panel1.Visible := False

    else begin

    Panel1.Visible := True;

    end;

    토글 기능이 되도록 하시려고 한것 같은데..



    Panel1.visible := not Panel1.Visible;

    알고 계셨지요 ?