안녕하세요 오래만에 질문을 올려봅니다.
스트링그리드에 대해 공부를 하고 있는데요..
기본적인 건 알겠는데 DB에서 파일을 받아서 받은 데이타를 수정할려고 하는데 수정이 안되네여.
예를 들면.
for i := 1 to 200 do
begin
if Trim(SGjbsales.cells[0,i]) <> '' then
begin
DM.Query.first;
if DM.Query.Locate('BPBARCODE',Trim(StringGrid1.cells[0,i]),[loPartialKey]) then
begin
SGjbsales.cells[1,i] := DM.Query.FieldByName('CODE').AsString;
SGjbsales.cells[2,i] := '0';
SGjbsales.Cells[3,i] := '1';
SGjbsales.Cells[4,i] := '0';
end;
end;
end;
이렇게 되어 있는데 여기서 셀에 기본적으로 들어가게 되어 있는 값을 그리드에서 직접 수정할려고 하는데
수정이안되요 아무래도 for 문을 돌려서 하기때문에 수정이 안되는 것인것 같은데 어떻게 수정해야 되는지
아시는분 좀 알려주십시요.
for문을 돌리는것은 col을 기본으로 200 까지 생성되게 하기 위해서 돌렸습니다.
오늘도 좋은 하루 되세요
for문안에서 DM.Query.Next를 해주셔야지 될것 같은데요. 안그러면 항상 첫번째 데이터만 표시가 될것같네요... DM.Query.First도 for문 밖으로 빼주셔야할듯...
쿼리한 결과가 항상 200개로 고정되어 있지 않다면 for문을 쓰는것은 상당히 위험한 코딩일듯합니다.
보통 while문을 씁니다. 아래는 전형적인 쿼리 결과가지고 작업하는 루프문입니다.
Query1.First; // 첫번째 레코드로 이동
while not Query1.Eof do // 억세스 가능한 레코드가 있는냐?
begin
.... ;// 원하는 작업
Query1.Next; // 다음레코드로 이동
end;
^^ 항상 즐코하세요...