Q&A

  • TAdoquery 관련 질문 입니다.
user_id  := edt_userid.Text;
user_pass := edt_userpass.Text;
Dbcon.login_query.close;
Dbcon.login_query.SQL.Clear;
Dbcon.login_query.SQL.add('select t1.* ');
Dbcon.login_query.SQL.Add('        , (select GrpName from comm_member_org where GrpIdno = t1.EmpDept) as EmpDeptName');
Dbcon.login_query.SQL.Add('     , (select CodNm2 from basic_code where CodGbn1 = '''+'09'+''' and CodGbn2 = t1.EmpJtit) as EmpJtitName');
Dbcon.login_query.SQL.Add('  from comm_member t1');
Dbcon.login_query.SQL.Add(' where t1.EmpIdno = :user_id ');
Dbcon.login_query.Parameters.ParamByName('user_id').Value  := edt_userid.Text;
Dbcon.login_query.open;

이렇게 했을때 브레이크 포인트 잡구..
   Dbcon.login_query.Parameters.ParamByName('user_id').Value  := edt_userid.Text;
이부분에서 자꾸 access violation as address .. msvcrt.dll 오류가 납니다. ㅠ.ㅠ

아놔 ado오류인가요?? 툴은 BDS2006 사용하고 있습니다.

패치라고 있길래 받아서 해봤는데 그대로 ㅠ.ㅠ

아 그리고 하나더 여쭤볼께.. TADOQUERY를 쓰는게 조은건가요 아니면 mssql 스토드프로시져를 사용한는게 부하가 적을까요..

재생각은 간단한 쿼리의 경우는 tquery로 조금 복잡한 쿼리의 경우는 프로시져로 처리 할려구 하는데 올 프로시져로 작업하는게 조은건가요???

-- 델마당 답변 입니다.

-안녕하세요?
-이광뭅니다.

-where CodGbn1 = '''+'09'+''' and CodGbn2 = t1.EmpJtit =>
-where CodGbn1 = ''09'' and CodGbn2 = t1.EmpJtit 바꾸세요.

-전 TADOQUERY로 해결합니다. 그리고
-프로시져는 통계 낼 때만사용합니다.

-그럼~

-바람의 검객님 답변

-특별한 문제는 안보이는데요..ㅡㅡ;
-'9'  <-- 이것도 파라미터로 받으시고요..
-파싱할때 '9' <-- 요것 때문에 SQL Reload 합니다.
-파라미터로 바꾸세요..

-그리고 몇건 안되는 간단한 쿼리라면 Query 컴포넌트나
-프로시저나 결과는 같습니다.

-많은 양의 Table Join 이나 추출할 DATA 결과가 많을시엔
-View나 프로시저를 통해 퍼포먼스 향상을 득을 볼수 있으나
-많은 프로시저는 유지보수의 어려움을 야기 시킵니다.


sSql  :=  ('select t1.* ')
         +   ('       , (select GrpName from comm_member_org where GrpIdno = t1.EmpDept) as EmpDeptName')
+ ('  , (select CodNm2 from basic_code where CodGbn1 = :srch_CodGbn1 and CodGbn2 = t1.EmpJtit) as EmpJtitName')
+ ('  from comm_member t1')
//  + (' where t1.EmpIdno <> '''' and t1.EmpIdno = :srch_user_id ');
//  + (' where t1.EmpIdno = :srch_user_id ');
       SQL.Text := sSql;

파라미터 바꾸어도 오류는 계속 납니다.... ㅠ.ㅠ

웨어 절 조건에서 아무 의미 없는 조건절 하나 추가 하고 다음 파라미터를 넘기면 오류가 나지 않습니다.
(' where t1.EmpIdno <> '''' and t1.EmpIdno = :srch_user_id ');

하지만 아래 문장으로 바꾸면 엑세스 바이얼래이션 오류가 나버립니다.
(' where t1.EmpIdno = :srch_user_id ');

sql.text방식과 sql.add방식 두가지 모두 해보았지만... ㅠ.ㅠ 그냥 의미 없는 조건절을 하나 더 줄려고 하니까 왠지 꺼림직하고... 거기다가 의미 없는 조건절이 없다면 오류가 나는 상황이다 보니....

혹 다른분들은 이런 경험 없으신지요..

개발 환경 : bds2006, MSSQL2005 입니다.

아무리 봐도 해결책이 안보이내 ㅠ.ㅠ 스크롤 압박 심하고... 내용도 두서가 좀 없는것 같습니다... 죄송합니다.

답변 좀 부탁 드릴께욤.. ^^;;;

0  COMMENTS