Q&A

  • RequestLive 등
델파이 4 사용자입니다.
join을 이용한 쿼리로 데이터를 DB그리드에서 열었습니다.

RequestLive 속성을 True로 하면 쿼리컴포넌트로 불러온 자료를 창에서 직접 수정할 수 있다고 해서 해 보았는데 조인을 해서 가져오면 "Table is Read Only" 라는 에러가 나옵니다.

질문1) 조인데이터도 창에서 직접 수정할 수 있는 방법이 있는지요.

차선책으로 쿼리컴포넌트로 불러온 필드값들을  DBEdit 에다 쓰지를 못하고 일반 Edit에다 일일이 써놓고 수정시 업데이트 쿼리를 만들어서 수정을 했습니다.
그런데 그리드안에서 아래위로  왔다갔다하면  "Invalid BLOB handle in record buffer"라는 에러가 뜹니다.
컴파일을 해서 해당 에러라인으로 가서 찍어보니 Query1.FieldByName("summary").asstring = Delphi exception EDBEngineerror at $624f985 라고 뜨는군요.

질문2) 질문1에서 해결이 되는 방법이 있다면 편리하겠지만 차선책 에서라도 잡을수있는 방법이 있을까요?
1  COMMENTS
  • Profile
    김춘경 2008.03.16 11:16
    조인된 테이블은 RequestLive가 적용되지 않습니다.

    만일 Paradox DB를 사용하신다면 DBEdit나 DBGrid 등은 절대 사용하지 마시기 바랍니다.
    테이블이 오픈된 상태로 Update되는 도중에 시스템이나 OS 등의 문제 등으로 커밋이 완전하게 수행되지 않은 상태에서 세션이 불안전하게 종료되어 테이블이 깨지거나, 입력한 데이터가 테이블에 저장되지 않는 등의 치명적인 원인을 제공하게 됩니다.

    사용하는 DB가 어떤 것이든, DB 테이블의 장시간 오픈 상태는 그리 권장할 만한 사항이 못됩니다.
    건강하고 튼튼한 DB 어플리케이션을 원하신다면 Insert, Update 쿼리문 작성과 Select 후 TEdit나 TStringGrid 등으로 옮기는 등의 노가다는 필수입니다.

    그리고 트랜잭션이 필요한 부분에서만 쿼리문으로 처리하고 즉시 테이블을 닫아주는 것이 좋습니다.

    DB 컴포넌트들은 편리하고 빠른만큼 심각한 문제점을 안고 있으며, 하드코딩으로 고생한 만큼 프로그램은 건강해 질 것입니다.

    저 역시 초보 시절에 님과 같은 과정을 겪었답니다.

    움.. 역시 세상엔 공짜가 없는 것 같네요.

    혹시 공부하는 용도로 프로그램을 작성하시더라도 제 말씀을 명심하시고, 어딘가에 납품할 업무용 프로그램이라면 더더욱 님의 방법대로 하면 안될 것입니다.

    편한 방법은 개발자의 적입니다. 컴포넌트에 의존하지 않고 항상 하드코딩을 기본으로 생각하는 것이 프로로 가는 지름길입니다.

    그리고 웬만하면 델파이는 7 정도로 업글하세요. 4 버전은 버그가 많을겁니다.

    그럼 도움되셨기를...

    • 소울해커
      2008.03.19 19:22
      스샷에 표시된 부분 아래쪽 작업 영역 부분에 마우스 클릭해보세요. [텝1][텝2] I ̄ ̄ ̄ ̄ ̄ ̄ ̄ I I...
    • 강주현
      2008.03.19 19:58
      감사합니다. 해결되었습니다.
    • 최용일
      2008.03.19 05:25
      그냥 Look속성을 glClassic으로 변경하시면 똑같이 됩니다.
    • 소울해커
      2008.03.19 05:33
      헛... 그렇군요. 그동안 죽어라 ControlLook 만 봤었는데... 점점 바보가 되어가나 봅니다. 허허......
    • 강주현
    • 2008.03.19 01:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 델코초
      2008.03.19 01:35
      DbGrid => DataSource => DataSet(Query) DataSource 연결되었는지 확인해 보시길....
    • 강주현
      2008.03.19 18:35
      답변감사합니다.... 도움많이 돼었습니다.
    • 양선호
    • 2008.03.19 00:54
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.03.18 21:36
      procedure TForm1.FormCreate(Sender: TObject); begin   Align := alTop;   Con...
    • 강정구
      2008.03.18 22:58
         소울해커님....감사합니다....이렇게 빨리 올려주시다니...정말 감사 합니다.   ...
    • 인치온
    • 2008.03.18 11:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.03.18 20:21
      원래 루틴 마다 값이 다르다고 그러네요. 네이버에서 '16bit CRC 값 구하기'로 검색해보세요.
    • 장경석
    • 2008.03.18 03:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.03.18 20:13
      동적생성하시면서 컬럼의 인덱스값이 변동된 걸 반영을 하셨는지요? Col[0], Col[1], Col[2] 이렇게 ...
    • 왕초보
    • 2008.03.18 02:06
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.03.18 20:09
      조금 다르게 생각을 해보심은 어떠실런지... Form1에 결과 값을 Form2에 넘겨주는게 아니라 Form1에...
    • 왕초보
      2008.03.18 22:34
      안녕하세요. 우선 답변 감사합니다. 알려주신 방법으로 했는데요. form1에서는 form2 생성하고, form2에서...
    • 소울해커
      2008.03.18 23:21
      옵션에서 Form2가 Available Form으로 되어있는지 확인하시구요. FormCreate에 말고 FormShow 에서 해보...
    • 김소연
    • 2008.03.18 01:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.03.18 19:57
      '행을 업데이트 할수 없습니다. 일부값이 마지막으로 읽은후에 바뀐것같습니다' 음... 컴퓨터 주제에 건...
    • 최용일
      2008.03.18 03:59
      <!--CodeS--> procedure TForm1.Button2Click(Sender: TObject); begin   IBQuery1.Clo...
    • 채기웅
    • 2008.03.17 22:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2008.03.18 00:01
      퀀텀그리드 버전이 어떻게되나요? 저두 퀀텀 쓰는데... 방식이 전혀 다르네요 ㅡㅡ;;;
    • 장경석
    • 2008.03.17 20:28
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.03.18 02:28
      rg_set_grp := (('상품권번호', false, 2, false, 296, 2),        &...
    • 장경석
      2008.03.18 03:04
      말씀하신데로 변수형이 잘못지정이 되었는데요... 레코드형에서 멤버를 지정하지 않고 동적배열로 선언...
    • 소울해커
      2008.03.18 04:08
      값을 한번에 넣고 싶으시다는 뜻인듯 하군요. 동적 배열로 선언된 레코드 구조체에선 그렇게 안되는 걸...
    • 장경석
      2008.03.18 18:37
    • 이정훈
    • 2008.03.15 20:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김춘경
      2008.03.16 11:16
      조인된 테이블은 RequestLive가 적용되지 않습니다. 만일 Paradox DB를 사용하신다면 DBEdit나 DBGrid ...
    • 이경애
    • 2008.03.14 21:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2008.03.15 01:35
      a 와 b의 관계는 있지만 c 와는 어떠한 테이블과도 관계가 없네요 현재 쿼리로는 c 테이블의 건수(check1 ...
    • 소울해커
      2008.03.14 21:23
      SELECT DISTINCT a.id,a.name,a.phone  FROM table1 AS a INNER JOIN table2 AS b  in...
    • 이정훈
    • 2008.03.13 22:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 일그니
      2008.03.14 01:33
      델파이 하위버전에서는 indyCompo로 배포되고... 요즘 버전에서는 아예 붙박이로 기본 컴포로 델파이...
    • 모영철
      2008.03.15 02:11
      ASP 쪽으로 가시면 많을거 같은데요.. 포스트 데이타로 보내는거네요.. http://cafe.naver.com/red1511...
    • 유승혁
    • 2008.03.13 20:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.03.13 02:19
      Zeos에서는 지원하지 않는것으로 알고 있습니다. Core Lab의 ODAC컴포넌트를 사용해보세요. http://crl...
    • 머문자리
      2008.03.13 18:59
      최용일님 답변 감사합니다. ODAC컴포넌트를 확인해봤습니다. 제가 찾고 있는것은 오픈소스로 알아보고 ...