Q&A

  • loop문으로 수정된 데이타를 ApplyUpdates 하는데
안녕하세요. 또 지영이 입니다.

Tdatabase의 ApplyUpdates메소드를 사용하다가 문제에 봉착해서

또 질문 드립니다....

중간에 한개의 새로운 레코드가 삽입되었을때 삽입된 레코드 다음의

레코드들의 SN의 값을 +1하여 전체적으로 볼때 레코드의 SN이

가지런하게 일련번호를 유지하도록 만드려고 합니다.

DB는 오라클을 쓰고 있구요..

폼에는 DataBase1과 Query1,DataSource1,UpdateSQL1이 있습니다.

Query1을 한개씩 수정,삽입,삭제 할때는 저장할때 아무런 문제가 발생하지

않는데..

문제는..



loop로 처리하였을때 Update Failed라는 에러가 발생합니다.

언젠가 봉착했던 문제인데 결국 해결을 못하고 넘어갔었지만

오늘에서는 결국 집에도 못가고..

아시는 분 계시면 지영이 집에 보내준다는 넓은 마음으로 도와주셔요..흑..



with Query1 do

begin

while not EOF do

begin

sn := FieldByName('SN').AsInteger;

if sn > seq_number then

begin

Edit;

FieldByName('SN').AsInteger := sn + 1;

Post;

end;

Next;

end;

Database1.ApplyUpdates([Query1]);

end;

4  COMMENTS
  • Profile
    하윤철 1999.05.19 17:33
    강지영 wrote:

    > loop로 처리하였을때 Update Failed라는 에러가 발생합니다.

    >

    > with Query1 do

    > begin

    > while not EOF do

    > begin

    > sn := FieldByName('SN').AsInteger;

    > if sn > seq_number then

    > begin

    > Edit;

    > FieldByName('SN').AsInteger := sn + 1;

    > Post;

    > end;

    > Next;

    > end;

    > Database1.ApplyUpdates([Query1]);

    > end;



    새벽부터 고생하십니다...

    제가 쓰는 로직하고는 많이 다르네요.



    database1.starttransaction;

    try

    with Query1 do

    begin

    while not EOF do

    begin

    sn := FieldByName('SN').AsInteger;

    if sn > seq_number then

    begin

    Edit;

    FieldByName('SN').AsInteger := sn + 1;

    ApplyUpdates; // 바로바로 써주니까 에러가

    end; // 안나는건지도 ^^;

    Next;

    end;

    end;

    database1.commit;

    except

    Query1.Cancelupdates;

    database1.rollback;

    end;



    이렇게 쓸때는 다중루프에서도 별 문제없이 수행되고 있습니다만.



  • Profile
    1999.05.19 10:06
    강지영 wrote:

    > 안녕하세요. 또 지영이 입니다.

    > Tdatabase의 ApplyUpdates메소드를 사용하다가 문제에 봉착해서

    > 또 질문 드립니다....

    > 중간에 한개의 새로운 레코드가 삽입되었을때 삽입된 레코드 다음의

    > 레코드들의 SN의 값을 +1하여 전체적으로 볼때 레코드의 SN이

    > 가지런하게 일련번호를 유지하도록 만드려고 합니다.

    > DB는 오라클을 쓰고 있구요..

    > 폼에는 DataBase1과 Query1,DataSource1,UpdateSQL1이 있습니다.

    > Query1을 한개씩 수정,삽입,삭제 할때는 저장할때 아무런 문제가 발생하지

    > 않는데..

    > 문제는..

    >

    > loop로 처리하였을때 Update Failed라는 에러가 발생합니다.

    > 언젠가 봉착했던 문제인데 결국 해결을 못하고 넘어갔었지만

    > 오늘에서는 결국 집에도 못가고..

    > 아시는 분 계시면 지영이 집에 보내준다는 넓은 마음으로 도와주셔요..흑..

    >

    > with Query1 do

    > begin

    > while not EOF do

    > begin

    > sn := FieldByName('SN').AsInteger;

    > if sn > seq_number then

    > begin

    > Edit;

    > FieldByName('SN').AsInteger := sn + 1;

    > Post;

    > end;

    > Next;

    > end;

    > Database1.ApplyUpdates([Query1]);

    > end;



    음냐...



    제가 말할거는 해결 방법은 아니네요...

    그냥 다시 물어보는거 밖에 안되지만...

    정말로 일련번호를 꼭 가지런히 나두어야 되나요?

    일련번호는 일련번호 필드를 만들어 놓으면 알아서

    추가되고 사용자가 일련번호를 보는것도 아니잖아요.

    오라클을 쓴다면 랜이나 전화접속을 이용해서 디비를 사용하는건데

    만일 위의 저 루틴을 돌리게 되면 많은 서버에 많은 부화를 걸지는

    않겠지만, 전화접속을 사용하는 엔드유저는 정말로 답답하겠네요.

    저도 금강에서 개발할때 UpdateSql을 썼는데,

    저 역시 Update Failed라는 메세지를 수도없이 두딪쳤죠...헤헤

    저는 해결한게 InfoPower를 써서 해결했습니다.

    그리고 참고로 InfoPower Navigator의 Insert Button에 에러가 있더군요...

    저는 InfoPower의 Table Component를 쓰면

    Query로 디비를 열어도 그냥 추가, 삭제, 수정이 다 가능합니다.

    속도도 역시 빠르고요.



    그럼....괜한 답변을 드렸는지 모르겠네요.



  • Profile
    강지영 1999.05.19 15:23
    한 wrote:

    > 강지영 wrote:

    > > 안녕하세요. 또 지영이 입니다.

    > > Tdatabase의 ApplyUpdates메소드를 사용하다가 문제에 봉착해서

    > > 또 질문 드립니다....

    > > 중간에 한개의 새로운 레코드가 삽입되었을때 삽입된 레코드 다음의

    > > 레코드들의 SN의 값을 +1하여 전체적으로 볼때 레코드의 SN이

    > > 가지런하게 일련번호를 유지하도록 만드려고 합니다.

    > > DB는 오라클을 쓰고 있구요..

    > > 폼에는 DataBase1과 Query1,DataSource1,UpdateSQL1이 있습니다.

    > > Query1을 한개씩 수정,삽입,삭제 할때는 저장할때 아무런 문제가 발생하지

    > > 않는데..

    > > 문제는..

    > >

    > > loop로 처리하였을때 Update Failed라는 에러가 발생합니다.

    > > 언젠가 봉착했던 문제인데 결국 해결을 못하고 넘어갔었지만

    > > 오늘에서는 결국 집에도 못가고..

    > > 아시는 분 계시면 지영이 집에 보내준다는 넓은 마음으로 도와주셔요..흑..

    > >

    > > with Query1 do

    > > begin

    > > while not EOF do

    > > begin

    > > sn := FieldByName('SN').AsInteger;

    > > if sn > seq_number then

    > > begin

    > > Edit;

    > > FieldByName('SN').AsInteger := sn + 1;

    > > Post;

    > > end;

    > > Next;

    > > end;

    > > Database1.ApplyUpdates([Query1]);

    > > end;

    >

    > 음냐...

    >

    > 제가 말할거는 해결 방법은 아니네요...

    > 그냥 다시 물어보는거 밖에 안되지만...

    > 정말로 일련번호를 꼭 가지런히 나두어야 되나요?

    > 일련번호는 일련번호 필드를 만들어 놓으면 알아서

    > 추가되고 사용자가 일련번호를 보는것도 아니잖아요.

    > 오라클을 쓴다면 랜이나 전화접속을 이용해서 디비를 사용하는건데

    > 만일 위의 저 루틴을 돌리게 되면 많은 서버에 많은 부화를 걸지는

    > 않겠지만, 전화접속을 사용하는 엔드유저는 정말로 답답하겠네요.

    > 저도 금강에서 개발할때 UpdateSql을 썼는데,

    > 저 역시 Update Failed라는 메세지를 수도없이 두딪쳤죠...헤헤

    > 저는 해결한게 InfoPower를 써서 해결했습니다.

    > 그리고 참고로 InfoPower Navigator의 Insert Button에 에러가 있더군요...

    > 저는 InfoPower의 Table Component를 쓰면

    > Query로 디비를 열어도 그냥 추가, 삭제, 수정이 다 가능합니다.

    > 속도도 역시 빠르고요.

    >

    > 그럼....괜한 답변을 드렸는지 모르겠네요.

    >



    한님 안녕하세요.

    이 문제때문에 새벽같이 나왔지요..

    음.. 꼭 그렇게 해라고 하니 어쩔 수 없지요.. 저두..

    예를 들어서 전표같은 경우에 중간에 하나의 전표가 없어지면 이가 빠진것 처럼 흉하게 된다고 업체에서 그렇게 해달라고 하네요.. 물론 삽입도 마찬가지이구요.

    그리고.. 처음듣는.. InfoPower Navigator가 뭐지요?

    그게 콤포넌트라면 어떻게 구할 수 있을까요?

    답변 꼭 부탁드리겠습니다.

  • Profile
    1999.05.20 01:49
    강지영 wrote:

    > 한 wrote:

    > > 강지영 wrote:

    > > > 안녕하세요. 또 지영이 입니다.

    > > > Tdatabase의 ApplyUpdates메소드를 사용하다가 문제에 봉착해서

    > > > 또 질문 드립니다....

    > > > 중간에 한개의 새로운 레코드가 삽입되었을때 삽입된 레코드 다음의

    > > > 레코드들의 SN의 값을 +1하여 전체적으로 볼때 레코드의 SN이

    > > > 가지런하게 일련번호를 유지하도록 만드려고 합니다.

    > > > DB는 오라클을 쓰고 있구요..

    > > > 폼에는 DataBase1과 Query1,DataSource1,UpdateSQL1이 있습니다.

    > > > Query1을 한개씩 수정,삽입,삭제 할때는 저장할때 아무런 문제가 발생하지

    > > > 않는데..

    > > > 문제는..

    > > >

    > > > loop로 처리하였을때 Update Failed라는 에러가 발생합니다.

    > > > 언젠가 봉착했던 문제인데 결국 해결을 못하고 넘어갔었지만

    > > > 오늘에서는 결국 집에도 못가고..

    > > > 아시는 분 계시면 지영이 집에 보내준다는 넓은 마음으로 도와주셔요..흑..

    > > >

    > > > with Query1 do

    > > > begin

    > > > while not EOF do

    > > > begin

    > > > sn := FieldByName('SN').AsInteger;

    > > > if sn > seq_number then

    > > > begin

    > > > Edit;

    > > > FieldByName('SN').AsInteger := sn + 1;

    > > > Post;

    > > > end;

    > > > Next;

    > > > end;

    > > > Database1.ApplyUpdates([Query1]);

    > > > end;

    > >

    > > 음냐...

    > >

    > > 제가 말할거는 해결 방법은 아니네요...

    > > 그냥 다시 물어보는거 밖에 안되지만...

    > > 정말로 일련번호를 꼭 가지런히 나두어야 되나요?

    > > 일련번호는 일련번호 필드를 만들어 놓으면 알아서

    > > 추가되고 사용자가 일련번호를 보는것도 아니잖아요.

    > > 오라클을 쓴다면 랜이나 전화접속을 이용해서 디비를 사용하는건데

    > > 만일 위의 저 루틴을 돌리게 되면 많은 서버에 많은 부화를 걸지는

    > > 않겠지만, 전화접속을 사용하는 엔드유저는 정말로 답답하겠네요.

    > > 저도 금강에서 개발할때 UpdateSql을 썼는데,

    > > 저 역시 Update Failed라는 메세지를 수도없이 두딪쳤죠...헤헤

    > > 저는 해결한게 InfoPower를 써서 해결했습니다.

    > > 그리고 참고로 InfoPower Navigator의 Insert Button에 에러가 있더군요...

    > > 저는 InfoPower의 Table Component를 쓰면

    > > Query로 디비를 열어도 그냥 추가, 삭제, 수정이 다 가능합니다.

    > > 속도도 역시 빠르고요.

    > >

    > > 그럼....괜한 답변을 드렸는지 모르겠네요.

    > >

    >

    > 한님 안녕하세요.

    > 이 문제때문에 새벽같이 나왔지요..

    > 음.. 꼭 그렇게 해라고 하니 어쩔 수 없지요.. 저두..

    > 예를 들어서 전표같은 경우에 중간에 하나의 전표가 없어지면 이가 빠진것 처럼 흉하게 된다고 업체에서 그렇게 해달라고 하네요.. 물론 삽입도 마찬가지이구요.

    > 그리고.. 처음듣는.. InfoPower Navigator가 뭐지요?

    > 그게 콤포넌트라면 어떻게 구할 수 있을까요?

    > 답변 꼭 부탁드리겠습니다.





    음냐...

    답변이 늦었네요...

    아파서 쉬느라고...흑흑...건강 조심합시다!

    http://www.woll2woll.com 으로 가보세요.

    여기 나이렉스에서도 판매하는걸로 알지만 정확히 모르겠어요.



    그럼...멋진 코딩!



    • 김지연
    • 1999.05.19 19:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.19 22:29
      아래의 문제가 아닌것 같네요. 분명 끝나면서 하는일에 생성되지 않은 콘트롤을 사용하려고 하는것 같습니...
    • 안치봉
      1999.05.19 20:36
      김지연 wrote: > 데이타를 구조화해서 자료를 집어넣을려고 아래와 같이 코딩을 했습니다.. > > > ty...
    • sun
    • 1999.05.19 18:55
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.20 00:19
      김하정 wrote: > 안녕하세요... > 제가 어제 안치봉씨께 다시 소스를 보냈는데 > Q&A에 올리라는 걸 깜...
    • 안치봉
      1999.05.19 21:06
      김하정 wrote: > 안녕하세요... > 제가 어제 안치봉씨께 다시 소스를 보냈는데 > Q&A에 올리라는 걸 깜...
    • 북해
    • 1999.05.19 18:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 지종진
    • 1999.05.19 16:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.19 22:26
      아무래도 BDE의 버전 문제 같군요. BDE만 최신으로 설치해 보세요. BDE는 개발환경과 사용환경이 같은 버...
    • 강지영
    • 1999.05.19 05:54
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.19 17:33
      강지영 wrote: > loop로 처리하였을때 Update Failed라는 에러가 발생합니다. > > with Query1 do > b...
    • 1999.05.19 10:06
      강지영 wrote: > 안녕하세요. 또 지영이 입니다. > Tdatabase의 ApplyUpdates메소드를 사용하다가 문제에...
    • 강지영
      1999.05.19 15:23
      한 wrote: > 강지영 wrote: > > 안녕하세요. 또 지영이 입니다. > > Tdatabase의 ApplyUpdates메소드를 ...
    • 1999.05.20 01:49
      강지영 wrote: > 한 wrote: > > 강지영 wrote: > > > 안녕하세요. 또 지영이 입니다. > > > Tdatabase...
    • 김영주
    • 1999.05.19 04:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.19 21:15
      김영주 wrote: > 계속 Screen Saver에 대한 질문이군요. > > explorer에서 보면 '화면보호기 연결프...
    • 김영주
      1999.05.21 18:53
      Hi. > 이 게시판에서 ShellExecute 나 WinExe 로 검색을 해보시기 바랍니다. > 아니면 Win32 API 도...
    • 강경중
    • 1999.05.19 04:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.19 04:39
      Label은 죽어도 포커스를 가지지 못합니다. 강경중 wrote: > 도와 주세요 > 폼의 여러 콤포넌트 중 실...
    • 강경중
    • 1999.05.19 03:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.19 04:01
      저장을 하셔야 합니다. ComboBox1.Items.SaveToFile 로 저장하시고 시작될때는 ComboBox1.Items.Loa...
    • 신규찬
    • 1999.05.19 02:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.05.19 19:53
      신규찬 wrote: > maskedit에서 한글을 입력하면 에러가 발생합니다. > 어떻게 처리하면 되는지 아시는분 ...
    • 오기주
    • 1999.05.19 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.19 03:22
      오기주 wrote: > 계산 항목을 가로로 나오게 할수 없는지요?? > 조건을 개별적으로 줄수 있는 방법이 없...
    • 초보자
    • 1999.05.19 02:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • redhead
      1999.05.20 01:38
      초보자 wrote: > > 메인화면이 회색으로 되어 있어 밋밋하네요 > 그림을 입히는 방법을 알고십습니다. ...
    • 초보자
      1999.05.20 02:47
      답장을 주셔서 감사드립니다. 헌데 아래의 코딩을 복사하여 실행을 시켰는데 에라는 나지않고 컴파일이 ...
    • 마성수
    • 1999.05.19 00:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • redhead
      1999.05.19 01:01
      마성수 wrote: > 정말 이상한 일입니다. > MDI Child 폼에서 일반 폼을 CREAT할려고 했는데.. > 버튼을 ...
    • 왕초보
    • 1999.05.19 00:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • redhead
      1999.05.19 01:04
      왕초보 wrote: > 주 프로그램에서 DLL안에 있는 윈도우를 MDI Child로 설정하여 > 윈도우를 뛰운다음......
    • 안종필
    • 1999.05.18 23:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.19 03:58
      폰트를 굴림체로 맞추고 해보세요. 넓이가 일정한 폰트를 사용해야 합니다. Fixed Pitch 폰트라고 합니다...