감사합니다.. 이런 기초적인 실수를 하다니.. 역시 초짜의 비애군요..
acces와 오라클의 차이점이군요
오라클에서는 필드네임에 문제가 없었는데,
access로 마이그레이션 시키면서 return, memo 를 필드네임으로 쓰면 에러가 나네요.
덕분에 해결되었습니다.
박지훈.임프 님이 쓰신 글 :
: 액세스에서 쓰는 SQL문은 기본적으로 SQL서버와 같을텐데...
: 보여주신 업데이트문 정도는 너무나 단순해서 오라클과의 문법의 차이로 인해서 구문 에러가 나는 건 아닐 겁니다.
: 보통 이렇게 단순한 쿼리에서 에러가 나면 먼저 의심해봐야 할 것이 키워드를 사용한 것이 아닌가 하는 건데...
: 저도 여러 디비에서 쓰는 SQL 키워드를 다 아는 게 아니라서 자신은 없습니다만.. 눈에 띄는 것이, floor네요.
: floor는 SQL서버의 수학 함수 리스트에 있는 걸로 알고 있습니다.
:
: 해당 floor 필드가 not null이 아니라면 테이블을 고치고 어쩌구 하실 필요 없이 그냥 floor=:p3 부분과 아래의 파라미터값
: 할당 라인을 주석처리하고 다시 해보세요. 그래도 에러가 난다면 마찬가지로 의심스러운 필드명을 하나씩 제외하면서
: 해보시기 바랍니다.
:
: 그럼...
:
:
: jinkebi 님이 쓰신 글 :
: : 아래 프로시져는 오라클에서는 정상적으로 동작합니다.
: : 근대 ado를 써서 access db로 실행하면 update 구문오류라고 나오네요..
: : 고수님들 원인좀 찾아주세요.
: :
: :
: : procedure TfmMainAdm.btnUpdateOkClick(Sender: TObject);
: : var ss: string;
: : begin
: : with dm.qrlUpdate do begin
: : close;
: : sql.clear;
: : sql.add('update main set kukname = :p1, deptname = :p2 ');
: : sql.Add(' ,floor = :p3, eqid = :p4, eqmodel = :p5 ');
: : sql.add(' ,eqGubun = :p6, adminNo = :p7, adminsn = :p8 ');
: : sql.add(' ,muser = :p9, return = :p10, inDate = :p11 ');
: : sql.add(' ,memo = :p12, etc1 = :p13, etc2 = :p14, etc3 = :p15 ');
: : sql.add('where id= :p16 ');
: : parameters.parambyname('p1').value:= cbKukname.Text;
: : parameters.parambyname('p2').value:= cbDeptname.text;
: : parameters.parambyname('p3').value:= cbFloor.text;
: : parameters.parambyname('p4').value:= Uppercase(eEqid.text);
: : parameters.parambyname('p5').value:= Uppercase(eEqmodel.text);
: : parameters.parambyname('p6').value:= cbEqgubun.text;
: : parameters.parambyname('p7').value:= Uppercase(eAdminNo.text);
: : parameters.parambyname('p8').value:= Uppercase(eEqSn.text);
: : parameters.parambyname('p9').value:= Uppercase(eUser.text);
: :
: : ...
: : parameters.parambyname('p16').value:= strtoint(eid.Text);
: :
: : try
: : ExecSQL;
: : except on E:EDatabaseError do begin
: : showmessage('수정 작업중 에러발생' +#13#10+ E.Message);
: : end;
: : end;
: : (이하생략)
|