참 몇년만에 델파이를 사용하다보니 사소한것도 해결하기 힘드네요~~
ADOQuery에서 Update명령을 사용해서 MS-Acess를 제어하는데
발생하는 에러이네요
procedure TF_Main.btn_Update_02Click(Sender: TObject);
begin
{
With DM.ADO_Q do
begin
Close;
SQL.Clear;
SQL.Add('update car_mst set');
SQL.Add(' c_no = "' + edt_CNo_02.Text + '" ');
SQL.Add(', c_jong = "' + edt_CJong_02.Text + '" ');
SQL.Add(', c_year = "' + edt_CYear_02.Text + '" ');
SQL.Add(' where c_key = ' + lbl_CKey_02.Caption);
ExecSQL;
end; // end of with...
}
With DM.ADO_Q do
begin
Close;
SQL.Clear;
SQL.Add('update car_mst set');
SQL.Add(' c_no = :c_no ');
SQL.Add(', c_jong = :c_jong ');
SQL.Add(', c_year = :c_year ');
SQL.Add(' where c_key = :c_key ');
Parameters.ParamByName('c_no').Value := edt_CNo_02.Text;
Parameters.ParamByName('c_jong').Value := edt_CJong_02.Text;
Parameters.ParamByName('c_year').DataType := ftString;
Parameters.ParamByName('c_year').Value := edt_CYear_02.Text;
Parameters.ParamByName('c_key').Value := lbl_CKey_02.Caption;
ExecSQL;
end; // end of with...
end;
여기서 ParamByName('c_jong').DataType = ftString을 모두 설정해줘도 에러가 발생합니다.
물론 Acess에는 c_no이외에는 모두 데이타형식은 [텍스트] 이고 Null값허용이구요 Index도 안잡혀있구...
그리고 주석 안쪽 코드를 실행시켜보면 Too few Parameters...뭐라뭐하면서 에러가 발생하네요... 이건 또 뭔지..ㅠㅠ
뭔 이유인지요?
Params를 전부 삭제하셔야하구요. 또 c_no가 숫자 타입이면 ['] 이넘이 들어 가면 안됩니다
그리고 확실히는 모르겟습니다만
c_no의 타입이 숫자타입이니
Parameters.ParamByName('c_no').Value := edt_CNo_02.Text
이부분을
Parameters.ParamByName('c_no').AsInteger := StrToInt(edt_CNo_02.Text);
로 변경해 보시는 건 어떨까요..
전 주로 주석문 부분 형식으로 쿼리를 처리하다보니 Params구문은 생소하네요..^^;