초보자가 잘 안되서 또 글을 올립니다.
dbgrid내의 prn_flg 필드 값을 변경하여 goji 테이블에 저장하려합니다.
저장버튼을 이용해서 말이죠.(dbgrid내의 필드 변경은 되는데.. 저장이?..)
query1, datasourec1, dbgrid 서로 연결하고
저장 button의 onclick event에 아래와 같이 기술하였습니다.
begin
inherited;
with query1 do
begin
Close;
Sql.Clear;
Sql.Add(' update goji ');
Sql.Add(' set prn_flg = :prn_flg ');
Sql.Add(' where substring(gojinum from 1 for 4) = ''' + edit1.Text + ''' ');
Sql.Add(' and substring(gojinum from 5 for 4) = ''' + edit2.Text + ''' ');
Sql.Add(' and substring(gojinum from 9 for 3) = ''' + edit3.Text + ''' ');
ParamByName('prn_flg').AsString := DbGrid1.Columns[1].Field.asString;
ExecSQL;
Post;
Refresh;
end;
end;
참고) edit1.text := 2000
edit2.text := 1000
edit3.text := 001
gojinum 가 20001000001인 것만 select 함.
select된 dbgrid의 gojinum필드는
gojinum prn_flg
2000100000101
" 02 *
" 03
" 04 *
prn_flg 값을 변경하여 저장하니
저장이 안되데요..
'query1 : dataset not in edit or insert mode' error 가 발생하네요.
where절에 substring을 사용하면 UpdateSQL 컴퍼넌트를 사용할 수 없는지요.
있으면 그 방법좀, 아니면 다른 방법좀 알려주십시요..
// DbGrid1.Columns[1].Field.asString; 이부분이 Table or DataSet 이 이미 Closed 임
니다.
그래도 안되면 편지하세요.