Q&A

  • Invalid precision value 에러메시지
참 몇년만에 델파이를 사용하다보니 사소한것도 해결하기 힘드네요~~

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...뭐라뭐하면서 에러가 발생하네요... 이건 또 뭔지..ㅠㅠ

뭔 이유인지요?
1  COMMENTS
  • Profile
    성더기 2004.02.17 19:58
    우선 주석문 안쪽의 문장을 실행하실려면 ADO_Q의 프로퍼티에 있는
    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구문은 생소하네요..^^;