db는 엑세스고, 필드명은 num,name,kor,eng,mat,sum,avg,rank입니다.
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer;
tmpMessageStr: String;
tmpException: Exception;
begin
With dxTL1, ADOQuery1 Do
Begin
For i := 0 To Count-1 Do
Begin
Close;
Sql.Clear;
Sql.Add('select * ');
Sql.Add('from 성적 ');
Sql.Add('where Num = :paraNum ');
Parameters.ParamValues['paraNum'] := Items[i].Strings[dxTL1KeyNum.Index];
ShowMessage('0');
Open;
ShowMessage('1');
If RecordCount > 0 Then
Begin
ShowMessage('2');
Close;
Sql.Clear;
Sql.Add('update 성적 ');
Sql.Add(' set Num = :paraNum, ');
Sql.Add(' name = :paraname, ');
Sql.Add(' kor = :parakor, ');
Sql.Add(' eng = :paraeng, ');
Sql.Add(' mat = :paramat, ');
Sql.Add(' sum = :parasum, ');
Sql.Add(' avg = :paraavg, ');
Sql.Add(' rank = :pararank ');
Sql.Add('where Num = :parakeyNum ');
Parameters.ParamValues['parakeyNum'] := Items[i].Strings[dxTL1KeyNum.Index];
ShowMessage('3');
End {If RecordCount > 0 Then}
Else
Begin
ShowMessage('.');
Sql.Add('insert into 성적 ');
Sql.Add(' ( ');
Sql.Add(' num, ');
Sql.Add(' name, ');
Sql.Add(' kor, ');
Sql.Add(' eng, ');
Sql.Add(' mat, ');
Sql.Add(' sum, ');
Sql.Add(' avg, ');
Sql.Add(' rank ');
Sql.Add(' ) ');
Sql.Add('values ');
Sql.Add(' ( ');
Sql.Add(' :paranum, ');
Sql.Add(' :paraname, ');
Sql.Add(' :parakor, ');
Sql.Add(' :paraeng, ');
Sql.Add(' :paramat, ');
Sql.Add(' :parasum, ');
Sql.Add(' :paraavg, ');
Sql.Add(' :pararank ');
Sql.Add(' ) ');
End; {Else}
Try
ADOQuery1.ExecSQL; ====> 업데이트시 에러~
Except
Exit;
End; {Try}
End;
End;
end;
수고 많습니다.
소스 전체 입니까?
일부분만 올린것입니까?
아래에서 Parameters는 다 어디에 가서요...
에러 내용이 무엇인지는 모르겠지만 아래 내용을 보면 이런에러가
뜨지 않을까 측축 해봅니다.
':paraname' not found가 뜨지 않을까요
그럼 수고 하세요
Sql.Add(' set Num = :paraNum, ');
Sql.Add(' name = :paraname, ');
Sql.Add(' kor = :parakor, ');
Sql.Add(' eng = :paraeng, ');
Sql.Add(' mat = :paramat, ');
Sql.Add(' sum = :parasum, ');
Sql.Add(' avg = :paraavg, ');
Sql.Add(' rank = :pararank ');
Sql.Add('where Num = :parakeyNum ');
Parameters.ParamValues['parakeyNum'] := Items[i].Strings