procedure Tfrmfirst.BitBtn1Click(Sender: TObject);
var
imsi,kk,ll,mm,nn,dd : string;
i: integer;
begin
query1.close;
imsi:=formatdatetime('yyyymmdd',now);
with query1 do begin
DataBaseName:= 'CARD';
close;
sql.Clear;
sql.add('insert into cardprint');
sql.add('(gejwano,name,relayno,msdata,printdate) values');
sql.add(' (:kk,:ll,:mm,:nn,:dd,) ');
for i:=0 to stgrd1.rowcount-1 do begin
query1.ParamByName('kk').AsString:=stgrd1.cells[1,i];
query1.ParamByName('ll').AsString:=stgrd1.cells[2,i];
query1.ParamByName('mm').AsString:=stgrd1.cells[3,i];
query1.ParamByName('nn').AsString:=stgrd1.cells[4,i];
query1.ParamByName('dd').AsString:=imsi;
query1.ExecSQL;
inc(i);
end;
query1.Close;
end;
스트링 그리드의 내용을 insert 하려고 합니다.
for 문을 돌려서 쿼리문을 실행하려 하는데,
구문에러라고 나옵니다.
또, 스트링 그리드에서 rowcount =100 으로 잡았는데,
실제 들어와 있는 데이타는 10개 정도 입니다.
for 문에서 rowcount-1 말고 , 실제 레코드의 갯수로 잡을려면
어떻게 하는 것인지 부탁드리겠습니다.
for 문은 자동으로 변수를 증가시키니 inc(i)가 빠져야 될것 같군요.
그리고 그리드에 실제 데이타가 존재하는지를 확인하여 insert하는 것이 좋을것 같습니다.
그냥 저의 의견 입니다.