Q&A

  • 쿼리 컴포넌트 사원조회 프로그램에서...
쿼리 컴포넌트 사원조회 프로그램에서 잘이해가 않되는 부분이 있어서

부탁드립니다 테이블 컴포넌트는 이해가 되는데 이건 잘 모르겠습니다...

unit uMain;



interface



uses

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

Db, DBTables, ComCtrls, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls;



type

TForm1 = class(TForm)

Panel1: TPanel;

btnAll: TButton;

DBNavigator1: TDBNavigator;

Label1: TLabel;

edtName: TEdit;

btnSearch: TButton;

DBGrid1: TDBGrid;

qryEmp: TQuery;

dtsrcEmp: TDataSource;

Panel2: TPanel;

edtYear: TEdit;

Label2: TLabel;

btnYear: TButton;

Panel3: TPanel;

edtSalary: TEdit;

Label3: TLabel;

btnSalary: TButton;

qryParam: TQuery;

dtsrcParam: TDataSource;

procedure btnAllClick(Sender: TObject);

procedure btnYearClick(Sender: TObject);

procedure btnSalaryClick(Sender: TObject);

procedure btnSearchClick(Sender: TObject);

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

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

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.btnAllClick(Sender: TObject);

begin

qryParam.close;

if not qryEmp.Prepared then

qryEmp.Prepare;

qryEmp.Open;

DBGrid1.DataSource:=dtsrcEmp;

DBNavigator1.DataSource:=dtsrcEmp;

end;



----------------여기서 부터 잘모르겠거든요 부탁드립니다---------------------------



procedure TForm1.btnYearClick(Sender: TObject);

var

Date:TDateTime;

begin {파라미터 이름이 디자인 타임에 지정한 것과 다르면, 즉 다른 sql문을 동적으로

할당해서 실행한 적이 있는 경우에만 원래의 sql문 다시 할당}--주석문이 이해가 안가구요

원래의 sql 문은 뭔지요

if qryParam.Params[0].Name <> 'Year' then

begin

qryparam.Close;

qryParam.SQL.Clear;

qryParam.SQL.Add('select * from employee where hire_date > :year'); {qryparam.sql에 employee테이블

에서 hire_date... 조건을 만족하는것을 추가하라는것같은데 year앞의:는 뭔가요

qryParam.Params[0].DataType:=ftDate;

--- 위의 문장은 배열 같은데 배열이 가르키는 것이 뭔지 필드인지 필드에 들어가는 내용인지 죄

송합니다 너무 몰라서 ---

end;

{파라미터 값을 지정한 후 쿼리 열기}

qryEmp.close;

Date:=StrToDate(edtYear.Text+'-01-01');

qryParam.Close;

qryParam.ParamByName('Year').Value:= Date;

qryParam.Open;

DBGrid1.DataSource:=dtsrcParam;

DBNavigator1.DataSource:=dtsrcParam;

end;



procedure TForm1.btnSalaryClick(Sender: TObject);

begin

qryEmp.close;

qryparam.Close;

qryParam.SQL.Clear;

qryParam.SQL.Add('select * from employee where salary > :salary');

qryParam.Params[0].DataType:=ftFloat;

qryParam.Params[0].Value:=StrToFloat(edtSalary.text);

qryparam.Open;

DBGrid1.DataSource:=dtsrcParam;

DBNavigator1.DataSource:=dtsrcParam;

end;



procedure TForm1.btnSearchClick(Sender: TObject);

begin

if not(edtName.text='') then begin

qryEmp.Open;

qryEmp.Locate('first_name',edtName.text,[loPartialKey,loCaseInsensitive]);

end

else

ShowMessage('사원 이름을 입력하세요');



DBGrid1.DataSource:=dtsrcEmp;

DBNavigator1.DataSource:=dtsrcEmp;

end;



procedure TForm1.Form1Close(Sender: TObject; var Action: TCloseAction);

begin

qryEmp.close;

qryParam.close;

end;

---------------------------------여기까지요-----------------------------------



procedure TForm1.edtNameKeyPress(Sender: TObject; var Key: Char);

begin

if key = #13 then

btnSearch.Click;

end;



end.

1  COMMENTS
  • Profile
    잠안오는사람 2001.09.20 10:18
    ----------------여기서 부터 잘모르겠거든요 부탁드립니다---------------------------

    >

    > procedure TForm1.btnYearClick(Sender: TObject);

    > var

    > Date:TDateTime;

    > begin {파라미터 이름이 디자인 타임에 지정한 것과 다르면, 즉 다른 sql문을 동적으로

    > 할당해서 실행한 적이 있는 경우에만 원래의 sql문 다시 할당}--주석문이 이해가 안가구요

    > 원래의 sql 문은 뭔지요

    > if qryParam.Params[0].Name <> 'Year' then

    > begin

    > qryparam.Close;

    > qryParam.SQL.Clear;

    > qryParam.SQL.Add('select * from employee where hire_date > :year'); {qryparam.sql에 employee테이블

    에서 hire_date... 조건을 만족하는것을 추가하라는것같은데 year앞의:는 뭔가요}

    qryParam.Params[0].DataType:=ftDate;





    위의 문장은 배열 같은데 배열이 가르키는 것이 뭔지 필드인지 필드에 들어가는 내용인지 죄 송합니다 너무 몰라서 ---





    배열이 아니고요.. 이걸 보통 파라미터라하지요....



    앞에 동적할당이라는 말이 있습니다.. 만약에 조회하고자 하는 입사일자가 항상

    일정하지는 않습니다....



    그때 마다 원하는 조건을 입력할 필요가 있습니다... :Year는

    이때 원하는 입사일자에 대한 입력부분입니다.. 보통 Tedit계열 컴퍼너트에서

    받아오겠지요....





    위의 코딩과 다른 한예로



    ParamByName('Year').AsString := edit1.Text;















    • 나그네
      2001.09.20 23:07
      송영일 wrote: > ora-00942 테이블또는뷰가 존재하지않습니다!!!!!!!!!!!!! 왜 그럴까요?? > > 오라클...
    • 방랑자
      2001.11.01 19:14
      저도 델파이를 직접 해 본 건 이번이 처음이고요... 하지만 이 문제는 이 객체가 진짜로 DB에서 그 유저에...
    • 델사남
    • 2001.09.20 08:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 졸리운넘
      2001.09.20 09:31
      1. 프로젝트소스에서 폼의 순서를 바꾼다. 2. Project->Options->forms탭에서 순서를 바꾼다. 어떠케하던...
    • 잠안오는사람
      2001.09.20 10:09
      1. 프로젝트소스에서 폼의 순서를 바꾼다. 2. Project->Options->forms탭에서 순서를 바꾼다. 어떠케...
    • goodman
    • 2001.09.20 07:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2001.09.20 19:15
      방법은 같답니다. SList.Add('PATH='+EXECDIR+'DataBase'); 이렇게 해서 하나의 알리아스를 만드셨듯이 ...
    • 잠안오는사람
      2001.09.20 10:18
      ----------------여기서 부터 잘모르겠거든요 부탁드립니다--------------------------- > > procedure ...
    • 심병화
    • 2001.09.20 05:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2001.09.20 11:52
      책보세요 심병화 wrote: > 질문이 있어 도움을 요청합니다. > 간단한 db연동 프로그램을 만드는데 입력 ...
    • 심병화
      2001.09.21 04:08
      이경문 wrote: > 책보세요 > 심병화 wrote: > > 질문이 있어 도움을 요청합니다. > > 간단한 db연동 프...
    • 초보의비애
      2001.09.20 19:18
      어뜩해 wrote: > CashedUpdate를 사용합니다 한번 저장하고 또 저장하면 > " A user transaction is a...
    • 델초보
    • 2001.09.20 02:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 나도 델초보
      2001.09.20 10:29
      델초보 wrote: > 데이타베이스는 오라클을 사용합니다. > 버젼 7에서 817로 Upgrade한후 Query속도가 너...
    • 이상수
    • 2001.09.20 02:33
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.09.20 02:45
      안녕하세요. 최용일입니다. 페인트박스에다가 직접그리시지 마시고 비트맵객체(TBitmap)를 하나 생성해...
    • 이상수
      2001.09.20 03:28
      최용일님 감사합니다. 말씀하신대로 실행을 해보았는데 TBitmap을 생성한후에 var tbm: TBitma...
    • 최용일
      2001.09.21 00:59
      자료실에 TBigBitmapViewer 란 컴포넌트가 있는데 그걸한번 사용해보시죠... 이상수 wrote: > 최용일님...
    • 한철
    • 2001.09.20 01:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 초짜
    • 2001.09.20 01:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2001.09.20 12:21
      thread 생성에는 크게 2가지 관점에서 볼 수 있습니다. 1. CPU performane thrad가 많아진다고 실행이 느...
    • 문상연
    • 2001.09.20 01:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.09.20 02:39
      안녕하세요. 최용일입니다. uses절에 ActiveX유닛을 추가해주세요... ^^ 항상 즐코하세요... 문상...
    • 문상연
      2001.09.20 07:16
      최용일 wrote: > 안녕하세요. 최용일입니다. > > uses절에 ActiveX유닛을 추가해주세요... > > ^^ ...
    • 최용일
      2001.09.21 04:31
      아마도 IE로 프린트하면 그렇게 하기 힘들거 같군요... 델마당에 하는 방법이 답변으로 달렸네요... ...
    • 이지컴
    • 2001.09.19 23:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 쥐 <:( )~
      2001.09.19 23:53
      이지컴 wrote: > > 자꾸 쉬운것만 물어봅니다.(아구 챙피혀..) > > 현금출납장부 테이블이 하나 있...
    • 홍세비
      2001.09.19 23:51
      이지컴 wrote: > > 자꾸 쉬운것만 물어봅니다.(아구 챙피혀..) > > 현금출납장부 테이블이 하나 있...
    • 매일웃자
      2001.09.20 19:49
      ActionList에 이벤트들을 등록하고 Action명을 비교했더니 되더군요. 감사합니다. ^_____^
    • 이채성
      2001.09.20 01:37
      제가 알기로는 이건 불가능 한것으로 알고 있습니다. 만약 필요하시다면 전역변수를 잡아서 클릭이 ...
    • 매일웃자
      2001.09.20 01:47
      잘 읽어보았습니다. 감사합니다. 제가 하려는 작업에 꼭 필요해서 말인데요... 약 100개정도의 메뉴아...
    • 하병준
    • 2001.09.19 23:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 사이비쥐 <;(●)~~
      2001.09.20 00:09
      하병준 wrote: > 안녕하세요 제가 질문을 하고자 하는 것은 > > Pos을 사용을 하면 텍스트 파일의 찾...
    • 홍세비
      2001.09.19 23:57
      하병준 wrote: > 안녕하세요 제가 질문을 하고자 하는 것은 > > Pos을 사용을 하면 텍스트 파일의 찾...