Q&A

  • 살려주시소!!! 살려주시소!!!
아무도 안갈켜 주시는군요.

제가 원하는 것은 버튼을 누르면

(필드명)(Atime)(Btime)

12:00:32

이렇게 되었다가 또 버튼을 누르면

(필드명)(Atime)(Btime)

12:00:32 12:01:23

그리고 또 누르면 레코드가 추가되면서

(필드명)(Atime)(Btime)

12:00:32 12:01:23

12:02:11

이렇게 작동해야 하는데

조건문을 사용했는데 필드명 'Btime'이 비어있으면

'Btime'에 시간을 입력하고

아니면 레코드를 추가해서 'Atime'에 입력할려고 했습니다.



그런데 문제는 Atime에만 계속 추가되는 것입니다.

아마도 조건에서 시간필드가 비어있다면...이라는 구문이 잘못되었거나

아니면 혹시... 불가능한것을...

제발 도와 주십시오.

아래에 조건문소스 좀 보고 도와주세요.





procedure TForm4.Button1Click(Sender: TObject);

var

stoptime : tdatetime;

//bun : string;

begin

stoptime := time ;

table1.last;

if table1['Btime'] = '' then // 여기가 문제인 것 같은데...

table1['Atime'] := stoptime

else

table1.append;

table1['Atime'] := stoptime

end;

3  COMMENTS
  • Profile
    장은석 2000.04.05 12:44
    procedure TForm4.Button1Click(Sender: TObject);

    var

    stoptime : tdatetime;

    //bun : string;

    begin

    stoptime := time ;

    table1.last;

    if table1['Btime'] = '' then

    begin

    table1['Btime'] := stoptime // <-- 이부분 살펴 보셨나요? ( Atime -> Btime)

    end //else 문 추가시 ; 없는 end 써 넣으세요

    else

    begin //가독성을 위해서 begin, end 로 묶는 습관을 들입시다..

    table1.append;

    table1['Atime'] := stoptime

    end;

    end;

    ------------------------------------------------------------------



    mad wrote:

    > 아무도 안갈켜 주시는군요.

    > 제가 원하는 것은 버튼을 누르면

    > (필드명)(Atime)(Btime)

    > 12:00:32

    > 이렇게 되었다가 또 버튼을 누르면

    > (필드명)(Atime)(Btime)

    > 12:00:32 12:01:23

    > 그리고 또 누르면 레코드가 추가되면서

    > (필드명)(Atime)(Btime)

    > 12:00:32 12:01:23

    > 12:02:11

    > 이렇게 작동해야 하는데

    > 조건문을 사용했는데 필드명 'Btime'이 비어있으면

    > 'Btime'에 시간을 입력하고

    > 아니면 레코드를 추가해서 'Atime'에 입력할려고 했습니다.

    >

    > 그런데 문제는 Atime에만 계속 추가되는 것입니다.

    > 아마도 조건에서 시간필드가 비어있다면...이라는 구문이 잘못되었거나

    > 아니면 혹시... 불가능한것을...

    > 제발 도와 주십시오.

    > 아래에 조건문소스 좀 보고 도와주세요.

    >

    >

    > procedure TForm4.Button1Click(Sender: TObject);

    > var

    > stoptime : tdatetime;

    > //bun : string;

    > begin

    > stoptime := time ;

    > table1.last;

    > if table1['Btime'] = '' then // 여기가 문제인 것 같은데...

    > table1['Atime'] := stoptime

    > else

    > table1.append;

    > table1['Atime'] := stoptime

    > end;

  • Profile
    mad 2000.04.07 11:50
    아 글씨 안된다니깐요.

    else 다음에 end넣고

    Atime으로 바꾸어도 계속 Atime에만 쌓여가요.

    혹시 DBGrid에서는 필드명이 비어있을때 조건이 다른게 아닌가요?

    그리구요

    트랜잭션을 이용한다면 어떻게 하면 좋을까요.

    다른방법이 없을까요? 뭐 클립보드를 이용한다던지.

    제발좀...

    죽겠습니다.











    장은석 wrote:

    > procedure TForm4.Button1Click(Sender: TObject);

    > var

    > stoptime : tdatetime;

    > //bun : string;

    > begin

    > stoptime := time ;

    > table1.last;

    > if table1['Btime'] = '' then

    > begin

    > table1['Btime'] := stoptime // <-- 이부분 살펴 보셨나요? ( Atime -> Btime)

    > end //else 문 추가시 ; 없는 end 써 넣으세요

    > else

    > begin //가독성을 위해서 begin, end 로 묶는 습관을 들입시다..

    > table1.append;

    > table1['Atime'] := stoptime

    > end;

    > end;

    > ------------------------------------------------------------------

    >

    > mad wrote:

    > > 아무도 안갈켜 주시는군요.

    > > 제가 원하는 것은 버튼을 누르면

    > > (필드명)(Atime)(Btime)

    > > 12:00:32

    > > 이렇게 되었다가 또 버튼을 누르면

    > > (필드명)(Atime)(Btime)

    > > 12:00:32 12:01:23

    > > 그리고 또 누르면 레코드가 추가되면서

    > > (필드명)(Atime)(Btime)

    > > 12:00:32 12:01:23

    > > 12:02:11

    > > 이렇게 작동해야 하는데

    > > 조건문을 사용했는데 필드명 'Btime'이 비어있으면

    > > 'Btime'에 시간을 입력하고

    > > 아니면 레코드를 추가해서 'Atime'에 입력할려고 했습니다.

    > >

    > > 그런데 문제는 Atime에만 계속 추가되는 것입니다.

    > > 아마도 조건에서 시간필드가 비어있다면...이라는 구문이 잘못되었거나

    > > 아니면 혹시... 불가능한것을...

    > > 제발 도와 주십시오.

    > > 아래에 조건문소스 좀 보고 도와주세요.

    > >

    > >

    > > procedure TForm4.Button1Click(Sender: TObject);

    > > var

    > > stoptime : tdatetime;

    > > //bun : string;

    > > begin

    > > stoptime := time ;

    > > table1.last;

    > > if table1['Btime'] = '' then // 여기가 문제인 것 같은데...

    > > table1['Atime'] := stoptime

    > > else

    > > table1.append;

    > > table1['Atime'] := stoptime

    > > end;

  • Profile
    장은석 2000.04.08 03:49
    방금 이메일 확인 했습니다..

    컴파일도 안해보고 제가 눈으로 답변을 드렸군요... 죄송..

    님의 소스를 아래와 같이 바꾸면 될껍니다..

    아래 주석 처리한 부분과 같이 table1['Btime']은 베리언트 타입이라 사용하기 편리한 반면

    offset이나 이에 관한 기타 정보를 메모리에 저장했다가 꺼내 쓰곤 하기때문에

    그다지 좋은 방법 같진 않습니다.

    아마도 님의 DB의 Atime과 Btime이 time형 인것 같은데

    table1['Btime']을 table1.FieldByName('Btime').asDateTime 과 같이 코딩하는게 좋을듯 싶네요..

    mad 님이 "아 글씨 또 안된다"고 하실까봐 아예 소스를 이메일로 통째로 보내 드렸습니다..

    행운을...



    procedure TForm1.Button1Click(Sender: TObject);

    var stoptime : TTime;

    begin

    table1.open; table1.last;

    stoptime := time;

    if table1.fieldbyname('Btime').IsNull then // <-- 필드의 널값여부 판단.

    begin

    table1.edit;

    table1['Btime'] := stoptime; table1.post; // <-- 이부분 참고!

    end

    else

    begin

    table1.append;

    table1['Atime'] := stoptime; table1.post;

    end;

    end;



    end.



    -----------------------------------------------------------------------------------



    mad wrote:

    > 아 글씨 안된다니깐요.

    > else 다음에 end넣고

    > Atime으로 바꾸어도 계속 Atime에만 쌓여가요.

    > 혹시 DBGrid에서는 필드명이 비어있을때 조건이 다른게 아닌가요?

    > 그리구요

    > 트랜잭션을 이용한다면 어떻게 하면 좋을까요.

    > 다른방법이 없을까요? 뭐 클립보드를 이용한다던지.

    > 제발좀...

    > 죽겠습니다.

    >

    >