Q&A

  • *** Join 후 필드 값 수정하기 [급함] ***
안녕하세요.

매번 질문만 하게 되네요.



with datamodule do

begin

sqlstr :='';

query1.Close;

query1.sql.clear;

sqlstr := 'select * from C'+xdat+' D,A'+xdat+' D1 ';

sqlstr := sqlstr + 'WHERE (D.PAN = D1.AN) and a_s is null ';

sqlstr := sqlstr + 'ORDER BY D.PAN, D1.AN';

query1.add(sqlstr);

query1.ExecSQL;

query1.RequestLive := true;



with datasource.DataSet do

begin

//{DataSet이 열람가능일때만 작업}

//if State = dsBrowse then

// exit;

First; //첫 레코드로 이동

while not Eof do

begin

Edit;

FieldByName('f1').Asstring := 'aa';

Post;

Next; //다음 레코드로

end; //end of while

end; //end of with

end; // end if with



위와같이 두 테이블을 조인 한 다음에 d1에 있는 필드를 d에 있는 필드값으로 수정을 하려고 하는데요. 에러가 발생합니다.( Cannot modify a read-only dataset )

또 다음과같은 작업을 할때에 위와같이 해야되는 것인지 조차 잘 모르겠습니다.

(위에서는 조건에 맞게 조인한다음 만들어진 테이블을 가지고 처음 레코드부터

끝 레코드까지 Looping하여 수정할 필드의 값을 주는형식입니다, select 문에서

바로 Update 문을 쓸수 없나요...)

선배님들의 많은 도움 부탁합니다.



db는 dbaseIII+를 사용합니다.



1  COMMENTS
  • Profile
    오정운 1999.11.16 08:47
    김선학 wrote:

    > 안녕하세요.

    > 매번 질문만 하게 되네요.

    >

    > with datamodule do

    > begin

    > sqlstr :='';

    > query1.Close;

    > query1.sql.clear;

    > sqlstr := 'select * from C'+xdat+' D,A'+xdat+' D1 ';

    > sqlstr := sqlstr + 'WHERE (D.PAN = D1.AN) and a_s is null ';

    > sqlstr := sqlstr + 'ORDER BY D.PAN, D1.AN';

    > query1.add(sqlstr);

    > query1.ExecSQL;

    > query1.RequestLive := true;

    >

    > with datasource.DataSet do

    > begin

    > //{DataSet이 열람가능일때만 작업}

    > //if State = dsBrowse then

    > // exit;

    > First; //첫 레코드로 이동

    > while not Eof do

    > begin

    > Edit;

    > FieldByName('f1').Asstring := 'aa';

    > Post;

    > Next; //다음 레코드로

    > end; //end of while

    > end; //end of with

    > end; // end if with

    >

    > 위와같이 두 테이블을 조인 한 다음에 d1에 있는 필드를 d에 있는 필드값으로 수정을 하려고 하는데요. 에러가 발생합니다.( Cannot modify a read-only dataset )

    > 또 다음과같은 작업을 할때에 위와같이 해야되는 것인지 조차 잘 모르겠습니다.

    > (위에서는 조건에 맞게 조인한다음 만들어진 테이블을 가지고 처음 레코드부터

    > 끝 레코드까지 Looping하여 수정할 필드의 값을 주는형식입니다, select 문에서

    > 바로 Update 문을 쓸수 없나요...)

    > 선배님들의 많은 도움 부탁합니다.

    >

    > db는 dbaseIII+를 사용합니다.

    >



    Tquery 에서 조인한 결과물을 수정할 수는 없다고 도움말에서 봤습니다.

    (제가 해봐도 안됐구요)

    저같은 경우는 Query문을 수정해서 썼습니다.

    --

    select * from d1 where aa in select dd from d where bb = :bb;



    update 할 컬럼의 테이블을 앞에서 select 하고 조인조건 대신에 Sub Query로 썼는데



    저랑 같은 경우인지 잘 모르겠네요....



    • 김고진
      1999.11.16 18:25
      클라라 wrote: > 파라독스 DB를 쓰구요. > with DataModule1.com_query do > begin >...
    • 김영대
      1999.11.16 20:33
      아래 소스를 참고해 보세요 그리고 MessageBox() 로 자료의 끝임을 알릴때 여러번 박스가 나타나므로 아...
    • 김정하
    • 1999.11.16 06:25
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이주흥
      1999.11.16 20:52
      김정하 wrote: > SaveDialog에서 파일 선택후 파일을 생성하려고 합니다. > 새로 생성하려는 파일명을 입...
    • 김정하
      1999.11.16 21:56
      답변감사합니다. 그런데, 문제점은......... SaveDialog1.Options := [ofOverwritePormpt]를 사용해 ...
    • 이주흥
      1999.11.16 22:27
      김정하 wrote: > 답변감사합니다. > 그런데, 문제점은......... > SaveDialog1.Options := [ofOverwr...
    • 김선학
    • 1999.11.16 05:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오정운
      1999.11.16 08:47
      김선학 wrote: > 안녕하세요. > 매번 질문만 하게 되네요. > > with datamodule do > begin ...
    • eclipse
    • 1999.11.16 04:31
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 류한규
    • 1999.11.16 03:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.16 03:18
      류한규 wrote: > 안녕하십니까? > 프린터의 Spooler를 제어하는 방법을 아시는 분의 > 조언을 부탁드립...
    • 1999.11.16 02:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.16 03:20
      한 wrote: > 제목되로 하드나 풀로피나 씨디롬의 볼륨명을 알고 싶습니다. > 그럼 많은 조언 부탁드립니...
    • 김고진
      1999.11.16 02:31
      버겁이 wrote: > EDIT에 입력한 값을 SQL SERVER 7.0의 Money Type의 필드에 저장할때 소숫점 이하의 > ...
    • 안재현
      1999.11.16 21:48
      김고진 wrote: > 버겁이 wrote: > > EDIT에 입력한 값을 SQL SERVER 7.0의 Money Type의 필드에 저장할때...
    • 김영대
      1999.11.16 03:25
      서언미 wrote: > 안녕하세요. 여러분. > 간만이입니다. > > QuickReport에 데이타 set을 연결하지 않...
    • 안경혜
    • 1999.11.16 01:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김지희
      1999.11.16 18:51
      Running Total을 말씀을 하시는군요.... 새로운 Running Total을 추가하시구요.... [Summary]에서 원하...
    • 최수영
      2000.02.02 18:20
      저한테 레포트를 보내주시면 수정해서 보내드리겠습니다! 그것은 whileprintingrecord라는 것을 포물러...
    • 강미나
    • 1999.11.16 00:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 류성호
      1999.11.16 02:48
      저는 델파이 4.0과 델파이 5.0을 같이 설치해서 사용하고 있습니다. 같이 사용해도 문제가 되지 않더라 구...
    • TeamX
      1999.11.16 01:54
      글쎄요.... 실행파일의 크기가 그렇게 변하는걸 보니........ 아무래도 프로젝트옵션의 문제인것 같은데...
    • 안장식
      1999.11.16 02:04
      답변 감사합니다. 런타임패키지에는 확실히 체크가 되어있지 않거든요? 델파이를 새로 설치해야하는지 고...
    • 김선학
    • 1999.11.15 23:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최수영
      1999.11.16 18:57
      김선학 wrote: > 안녕하세요. > 매번 질문만 하게 되네요. > > with datamodule do > begi...
    • 노유승
    • 1999.11.15 22:57
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 노유승
      1999.11.16 19:40
      노유승 wrote: > Quick report Version 을 3.0에서 3.05로 업을 했더니 > 다른 버젼의 comctrl로 compile...
    • 유도삼
      1999.11.16 05:59
      노유승 wrote: > Quick report Version 을 3.0에서 3.05로 업을 했더니 > 다른 버젼의 comctrl로 compile...
    • TeamX
      1999.11.16 02:00
      답변이 될지 모르겠습니다. 대개 비주얼씨로 만든 종류의 프로그램들을 보면 그 프로그램을 배포할때 비...
    • 긴급
    • 1999.11.15 22:33
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 유도삼
      1999.11.16 06:02
      고민합니다. wrote: > 안녕하세요? > > 답변좀 부탁합니다. > > 델파이 4를 이용하고요, DB는 서버...
    • 왕초보
    • 1999.11.15 21:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 갱수
      1999.11.17 02:27
      왕초보 wrote: > win98에서 BDE Setting을 하고 나면 DB를 잘 보는데.. > NT에서는 왜 안되는지 모르겠네...
    • 김금남
    • 1999.11.15 23:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 염재민
      1999.11.18 18:16
      김금남 wrote: > Edit박스에 입력할 때 insert모드가 되잖아요, > 그때 overwrite모드가 되게 하는 방법...
    • 홍순용
      1999.11.16 00:27
      김금남 wrote: > Edit박스에 입력할 때 insert모드가 되잖아요, > 그때 overwrite모드가 되게 하는 방법...
    • 김영대
      1999.11.16 03:28
      초보의 궁금증 wrote: > 안녀하세요. > 다름이 아니라 제가 패스 워드을 잊어 버려서요.. > ftp 계정을 ...