비디오 샵 프로그램을 만드는데...
문제가 있습니다.
도와주십시요...
제일 중요한 '대여' 버튼의 코딩을 제 능력으로는 할 수가 없습니다.
form1에서 고객의 이름, 전화번호, 고객번호, 비디오번호, 대여일자, 비디오제목의
edit가 있습니다.
그리고 그 밑에 대여, 대여취소, 반납, 초기화 라는 버튼이 있고,,,
그 밑에 dbgrid가 있어 대여한 비디오의 목록이 나오게
테이블을 연결시켜 놓았습니다.
제가 의도한 것은 전화번호(edit)를 입력하면 이름과 고객번호가 나오고
커서는 자동으로 비디오번호(다음 edit)로 넘어가게 됩니다.
거기서 비디오번호를 입력하면 비디오제목이 나오고
비디오제목이 나오면 엔터를 친 후 대여버튼이 자동으로 눌려져서
dbgrid에 대여한 비디오목록이 나오게 하는 것입니다.
dbgrid(table1)에 나오는 대여한 비디오목록의 각 항목은 이렇습니다.
------------------------------------------------------------------------------
비디오번호 고객번호 고객이름 비디오제목 장르 등급 대여일 반납일 대여료
------------------------------------------------------------------------------
고객들을 관리하는 화면에서의 dbgrid(table2)에서의 각 항목은 이렇습니다.
-------------------------------------------
전화번호 고객이름 고객주소 주민등록번호
-------------------------------------------
비디오를 관리하는 화면에서의(form2) dbgrid에서의 비디오 목록 항목은 이렇습니다.
-------------------------------------------------
비디오번호 비디오제목 장르 등급 구입금액
------------------------------------------------
*참고로 form1에 '대여/반납', '고객관리', '비디오관리'가 탭으로 구성되어 있습니다.
제가 제일 궁금한 것은 대여 버튼을 눌렀을 경우
비디오번호, 고객번호, 고객이름, 비디오제목은 dbgrid에 나오게 할 수는 있는데
장르와 등급, 대여일, 반납일, 대여료는 어떻게 자동으로 나오게 할 수 있는지
무척궁금합니다.
이것만 해결되면 됩니다.
꼭 좀 도와주십시요...
제발 부탁입니다.
그리고 죄송하지만 최대한 빨리 보내주시면 대단히 감사하겠습니다.
그렇다면 조인 쿼리를 써서 해결할 수 있습니다.
with Query1 do begin
Close;
sql.Clear;
sql.Add('select 대여.*,video.*,고객.* from "대여.db" 대여 ,"video.db" video,"고객.db" 고객');
sql.Add('where (대여.비디오번호=video.비디오번호) and (대여.고객번호=고객.고객번호)');
Open;
end;
아니면 TTable을 썼을 경우는 LookUp 필드를 만드시면 됩니다.
이런식으로 하면 대여그리드에 원하시는 정보가 모두 보여질 것입니다.
그리고 반납일 자동산출은 환경설정을 할 수 있는 ini파일이나 레지스트리, 또는 db를 사용하셔서 반납일이 대여일 기준 몇일 후 라는 것을 지정해서 날짜를 계산해 주면 됩니다. 날짜 처리에 대한 함수는 팁란이나 sysutil.pas에 있으니 참고 하시구요.
예를 들어
ini파일의 Borrow라는 섹션에 limit(반납일자)라는 항목에 반납일자를 지정한다고 했을 때
function Returnday:TDateTime;
var
ini: TIniFile; //(uses IniFiles 추가)
idx: Integer;
yy,mm,dd:Word;
begin
DecodeDate(Date,yy,mm,dd);
ini:= TIniFile.Create('c:Vdshopsysshop.ini');
try
idx:= ini.ReadInteger('Borrow','limit',2); //ini에 기본값이 없으면 2로 설정.
finally
ini.Free;
end;
Result:= EncodeDate(yy,mm,dd+idx);
end;
이런 식으로 하면 idx만큼 후가 반납일자가 됩니다.
끝으로 dbgrid에 뿌려주는 방법은 AfterInsert 이벤트에서 해주면 될 겁니다.
Table1.Edit;
Table1.FieldbyName('반납일').AsString:= DateToStr(ReturnDay);
(그리고 제 개인적인 생각에는 그리드를 직접 이용하신다면 스트링그리드가 더 편할 지도 모르겠습니다.-단순한 사견입니다.)
델파이초보자 wrote:
> 비디오 샵 프로그램을 만드는데...
> 문제가 있습니다.
> 도와주십시요...
>
> 제일 중요한 '대여' 버튼의 코딩을 제 능력으로는 할 수가 없습니다.
> form1에서 고객의 이름, 전화번호, 고객번호, 비디오번호, 대여일자, 비디오제목의
> edit가 있습니다.
> 그리고 그 밑에 대여, 대여취소, 반납, 초기화 라는 버튼이 있고,,,
> 그 밑에 dbgrid가 있어 대여한 비디오의 목록이 나오게
> 테이블을 연결시켜 놓았습니다.
>
> 제가 의도한 것은 전화번호(edit)를 입력하면 이름과 고객번호가 나오고
> 커서는 자동으로 비디오번호(다음 edit)로 넘어가게 됩니다.
> 거기서 비디오번호를 입력하면 비디오제목이 나오고
> 비디오제목이 나오면 엔터를 친 후 대여버튼이 자동으로 눌려져서
> dbgrid에 대여한 비디오목록이 나오게 하는 것입니다.
>
> dbgrid(table1)에 나오는 대여한 비디오목록의 각 항목은 이렇습니다.
> ------------------------------------------------------------------------------
> 비디오번호 고객번호 고객이름 비디오제목 장르 등급 대여일 반납일 대여료
> ------------------------------------------------------------------------------
>
>
> 고객들을 관리하는 화면에서의 dbgrid(table2)에서의 각 항목은 이렇습니다.
> -------------------------------------------
> 전화번호 고객이름 고객주소 주민등록번호
> -------------------------------------------
>
>
> 비디오를 관리하는 화면에서의(form2) dbgrid에서의 비디오 목록 항목은 이렇습니다.
> -------------------------------------------------
> 비디오번호 비디오제목 장르 등급 구입금액
> ------------------------------------------------
>
>
>
> *참고로 form1에 '대여/반납', '고객관리', '비디오관리'가 탭으로 구성되어 있습니다.
>
> 제가 제일 궁금한 것은 대여 버튼을 눌렀을 경우
> 비디오번호, 고객번호, 고객이름, 비디오제목은 dbgrid에 나오게 할 수는 있는데
> 장르와 등급, 대여일, 반납일, 대여료는 어떻게 자동으로 나오게 할 수 있는지
> 무척궁금합니다.
> 이것만 해결되면 됩니다.
> 꼭 좀 도와주십시요...
> 제발 부탁입니다.
> 그리고 죄송하지만 최대한 빨리 보내주시면 대단히 감사하겠습니다.