아래 소스를 보시고 왜 테이블에 저장이 안되는지 알려 주시면 고맙겠습니다.
아주 급합니다.
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.
선생이 쓰시는 이코드는 다음과 같이 간단히 할 수 있거든요.
if Panel1.visible = True then
Panel1.Visible := False
else begin
Panel1.Visible := True;
end;
토글 기능이 되도록 하시려고 한것 같은데..
Panel1.visible := not Panel1.Visible;
알고 계셨지요 ?