안녕하세요. DB 王초보 조준래입니다.
AccessDB 를 델파이와 연결하여 프로그래밍 하고 있습니다.
Table 과 각 필드마다의 TXXXField 를 만들어 놓고 작업하는데요, Access에서 "문자열" 64 바이트 이상은 델파이(BDE인가요?) 에서 자동적으로 MEMO 필드로 인식하더라구요.
TDBMemo 와 연결해서 수정할 때는 아무런 문제가 없는데, 소스에서 다음과 같이 했을 때는 "Non-blob column in table required to perform operation."이란 메시지가 뜨는군요. 그리고 제대로 삽입이 안되는 것 같습니다.
TablePage.Append;
TablePageTitle.Value := 'Untitled';
TablePageSourceURL.Value := 'http://';
TablePage.Post; <== 이 라인이 실행되면서..
TablePage.Close;
TablePage.Open;
아참, 여기서 TablePageSourceURL 이 TMemoField에 해당됩니다. 그리고, 질문 하나 더. 위에서 말씀드린 대로 64 바이트가 넘어가면 자동으로 메모필드로 인식하는 것을 막을 수는 없을까요? DBGrid 에 표시해야 하는데, TMemoField.GetText 이벤트를 사용하니까 실행속도가 무쟈게 느려지더라구요.
여러 고수님들의 도움 말씀 기다리겠습니다. 잘 모르는게 너무 많아서 너무 답답하네요.
조준래
http://members.xoom.com/jounlai
델파이 페이지에서 FAQ를 검색해 본 결과.. 기대하지도 않았는데 바로 그 에러 메시지에 대한 해답이 있더군요.. 이럴수가..
'FAQ4274B.txt - Non-Blob column in table required to perform operation'
http://community.borland.com/article/0,1410,19274,00.html
요약하면, "BDE 5.10 부터는 해결된 문제이며, 이전 버전을 갖고 계시다면 그냥 무시하고 넘어가면 됩니다." 라고 하더군요. 허허.. 이것 참..
여러모로 많은 공부가 된 것 같습니다. 여러분들도 같은 실수 하지 마시고 델파이 홈 페이지를 많이 이용해 주세요 :-)
조준래 wrote:
> 안녕하세요. DB 王초보 조준래입니다.
> AccessDB 를 델파이와 연결하여 프로그래밍 하고 있습니다.
> Table 과 각 필드마다의 TXXXField 를 만들어 놓고 작업하는데요, Access에서 "문자열" 64 바이트 이상은 델파이(BDE인가요?) 에서 자동적으로 MEMO 필드로 인식하더라구요.
> TDBMemo 와 연결해서 수정할 때는 아무런 문제가 없는데, 소스에서 다음과 같이 했을 때는 "Non-blob column in table required to perform operation."이란 메시지가 뜨는군요. 그리고 제대로 삽입이 안되는 것 같습니다.
>
> TablePage.Append;
> TablePageTitle.Value := 'Untitled';
> TablePageSourceURL.Value := 'http://';
> TablePage.Post; <== 이 라인이 실행되면서..
> TablePage.Close;
> TablePage.Open;
>
> 아참, 여기서 TablePageSourceURL 이 TMemoField에 해당됩니다. 그리고, 질문 하나 더. 위에서 말씀드린 대로 64 바이트가 넘어가면 자동으로 메모필드로 인식하는 것을 막을 수는 없을까요? DBGrid 에 표시해야 하는데, TMemoField.GetText 이벤트를 사용하니까 실행속도가 무쟈게 느려지더라구요.
> 여러 고수님들의 도움 말씀 기다리겠습니다. 잘 모르는게 너무 많아서 너무 답답하네요.
>
> 조준래
> http://members.xoom.com/jounlai