안녕하세요..
DBGrid 와 Query를 사용하여 데이터를 삽입하고, 정렬하는 문제인데요.
모.. 정보처리기사 문제에 흔한 거죠..
근데 제가 책대로 따라해봤는데. 안 돼는거 있죠..
내용인 즉은.
if not Query1.Active then
Query1.Open;
try
Query1.RequestLive := True;
Query1.insert;
Query1.FieldByName('EmpNo').value := strtoint(edtEmpNo.text);
Query1.FieldByName('DeptCode').value := edtDeptCode.text;
...
이렇게 하면, query1.insert 하는 부분에서 '... Query1: Cannot modify a read-only dataset' 이라는 메세지의 에러가 납니다.
문제는 query component 에서 sql 구문에 'select * from salary.db order by EmpNo' 라고 넣었기 때문인데, order by 가 dataset을 read-only 속성으로 만드는 것 같더군요.
그래서 order by 부분을 삭제하면 insert 가 아주 잘 됩니다..
버뜨.... 정렬을 해야 하는데.. 잘 안되네여...
이런 경우에는 query 를 두개를 사용하면 될까요?
답변을 부탁드립니다..
수고하세요.
>
> 안녕하세요..
> DBGrid 와 Query를 사용하여 데이터를 삽입하고, 정렬하는 문제인데요.
> 모.. 정보처리기사 문제에 흔한 거죠..
> 근데 제가 책대로 따라해봤는데. 안 돼는거 있죠..
> 내용인 즉은.
> if not Query1.Active then
> Query1.Open;
> try
> Query1.RequestLive := True;
> Query1.insert;
> Query1.FieldByName('EmpNo').value := strtoint(edtEmpNo.text);
> Query1.FieldByName('DeptCode').value := edtDeptCode.text;
> ...
>
> 이렇게 하면, query1.insert 하는 부분에서 '... Query1: Cannot modify a read-only dataset' 이라는 메세지의 에러가 납니다.
> 문제는 query component 에서 sql 구문에 'select * from salary.db order by EmpNo' 라고 넣었기 때문인데, order by 가 dataset을 read-only 속성으로 만드는 것 같더군요.
> 그래서 order by 부분을 삭제하면 insert 가 아주 잘 됩니다..
> 버뜨.... 정렬을 해야 하는데.. 잘 안되네여...
> 이런 경우에는 query 를 두개를 사용하면 될까요?
>
> 답변을 부탁드립니다..
> 수고하세요.
>
안녕하세요..
무려 두분이나 답변해주신 것 감사드리고요.
제가 잘 몰라서. 책 쓰신 분(한국인프라이즈 델파이 SE 백운기씨)에게도 메일을 보냈습니다.
그래서 답변해주신 내용 모두를 다 적용해 봤는데 잘 안되더라구요..
제가 왕초보이거든요.. RequestLive 속성도 잘 모르고, 그리고 Sql 구문을 쓰면 다 좋은데 파라독스에서는 Number가 실수라 integer로 하면, type mismatch error
가 난다고 게시판에 나와 있더군요..
결국은 백운기씨가 두번째로 보내주신 메일대로 차라리 query를 두개 만들어서 했더니 (하나는 데이터 입력용, 다른 하나는 데이터 정렬용) 되더군요.
물론 제 방법은 썩 좋은 방법은 아닌데, sql 을 다루지 못하니까 나름대로 해결은 되더라구요.. 언발에 오줌누기라고나 할까 ^^;;;
암튼 열씨미 해서 저도 다른 사람에게 도움 줄 수 있는 사람이 되고 싶습니다.
감사합니다.