안녕하세요! 오늘 가입한 델초보랍니다.
아무쪼록 고수님들의 많은 조언 부탁드리며....
에디트에서 입력받아 테이블에 저장하는 프로그램입니다.
쿼리는 쓰지않았구요.
미리보기를 눌러서 폼2에 출력하려고 하는데 데이타가 한건밖에
나타나질 않습니다. 조회를 해보면 3건이 있는데...
왜 그런지 고수님들의 답변 부탁드립니다.
(폼1에서는 데이타소스와 테이블만 이용)
(폼2에서는 쿼리만 이용)
--- 소스 ---
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, Grids, DBGrids, DBTables, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
DataSource1: TDataSource;
Label2: TLabel;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Label3: TLabel;
Table1: TTable;
Table1NAME: TStringField;
Table1ZIPCODE: TStringField;
Table1PHONE: TStringField;
Button6: TButton;
Query1: TQuery;
Query1NAME: TStringField;
Query1ZIPCODE: TStringField;
Query1PHONE: TStringField;
procedure Button2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
PROCEDURE FORMCREATE(SENDER: TOBJECT);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
//Uses
// Unit1, Unit2;
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
begin
WITH table1 do
BEGIN
table1.indexname := 'SYS_C001313';
if findkey([edit1.text]) then
BEGIN
SHOWMESSAGE('입력된 자료입니다.');
EDIT1.SetFocus;
END ELSE
BEGIN
TABLE1.APPEND;
TABLE1NAME.VALUE := EDIT1.TEXT;
TABLE1ZIPCODE.VALUE := EDIT2.TEXT;
TABLE1PHONE.VALUE := EDIT3.Text;
TABLE1.POST;
SHOWMESSAGE('입력되었습니다.');
EDIT1.TEXT := '';
EDIT2.TEXT := '';
EDIT3.TEXT := '';
EDIT1.SETFOCUS;
END;
END;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
TABLE1.ACTIVE := FALSE;
CLOSE;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
WITH TABLE1 DO
BEGIN
TABLE1.INDEXNAME := 'SYS_C001313';
IF FINDKEY([EDIT1.TEXT]) THEN
BEGIN
TABLE1.EDIT;
TABLE1NAME.VALUE := EDIT1.TEXT;
TABLE1ZIPCODE.VALUE := EDIT2.TEXT;
TABLE1PHONE.VALUE := EDIT3.Text;
TABLE1.POST;
SHOWMESSAGE('수정이 되었습니다.');
EDIT1.TEXT := '';
EDIT2.TEXT := '';
EDIT3.TEXT := '';
EDIT1.SETFOCUS;
END
ELSE
BEGIN
SHOWMESSAGE('미등록 자료입니다.');
EDIT1.SetFocus;
END;
END;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WITH TABLE1 DO
BEGIN
TABLE1.INDEXNAME := 'SYS_C001313';
IF FINDKEY([EDIT1.TEXT]) THEN
BEGIN
EDIT1.TEXT := TABLE1NAME.VALUE;
EDIT2.TEXT := TABLE1ZIPCODE.VALUE;
EDIT3.TEXT := TABLE1PHONE.VALUE;
EDIT1.SetFocus;
END ELSE
BEGIN
SHOWMESSAGE('미등록된 자료입니다.');
EDIT1.SETFOCUS;
END;
END;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
WITH TABLE1 DO
BEGIN
TABLE1.INDEXNAME := 'SYS_C001313';
IF FINDKEY([EDIT1.TEXT]) THEN
BEGIN
DELETE;
SHOWMESSAGE('삭제되었습니다.');
EDIT1.TEXT := '';
EDIT2.TEXT := '';
EDIT3.TEXT := '';
EDIT1.SetFocus;
END ELSE
BEGIN
SHOWMESSAGE('미등록된 자료입니다.');
EDIT1.SETFOCUS;
END;
END;
end;
PROCEDURE TFORM1.FORMCREATE(SENDER: TOBJECT);
BEGIN
TABLE1.ACTIVE := TRUE;
TABLE1.INDEXNAME := 'SYS_C001313';
END;
procedure TForm1.Button6Click(Sender: TObject);
begin
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('select name, zipcode, phone');
Query1.Sql.Add('from post');
//Query1.ParamByName('name').Asstring := Edit1.Text;
//Query1.ParamByName('zipcode').Asstring := Edit2.Text;
//Query1.ParamByName('phone').Asstring := Edit3.Text;
Query1.ExecSQL;
Query1.open;
//TABLE1.ACTIVE := TRUE;
FORM2.QUICKREP1.PREVIEW;
end;
end.
거기에 dataset이라는 properties가 있는데..
거기에 뿌려줄 쿼리를 선택 안하신거 같네여..
query1을 오픈해서 출력하시거 싶으신거면..
dataset을 query1을 선택하거 해보세염..
그럼 원하는 자료수만큼 자료가 나올겁니다.