C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[9622] Re:Re:Re:[질문] adoquery사용에 관한 질문입니다. sql->add
최보현.U&I [uriduri] 911 읽음    2001-08-07 14:31
음....
무슨 말인줄은 이해 하겠습니다만. 의아 하네요
일단 쿼리 문장이 이상이 없다면 데이타가 있고 없고를 떠나서 에러가 나지 않습니다.
그러니 select할 항목이 없을 경우에는 invalid variant type이라는 에러메세지가 가차없이
나온다는 말은 항목이 있고 없고를 떠난 문제 입니다.

invalid variant type 에러는 어찌 되었던간에 데이타(필드) 의 자료형에 대한 오류를 보고하는
겁니다. 따라서 ... 분명히 어떤 자료형을 잘못 사용 하셨다는 이야기 밖에는 않됩니다.

전체적인 이해를 할수 없으므로 답변 하기가 좀 그렀네요 ...
하지만 자료 형을 기준으로 틀린 부분을 찾아 보세요. 분명히 있을 겁니다.
버그는 항상 가장 안전하다고 믿었던 그곳에 있습니다.
하하
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("SELECT "                                     );
ADOQuery3->SQL->Add("    일련번호, 순서 "                         );
ADOQuery3->SQL->Add("FROM "                                       );
ADOQuery3->SQL->Add("    table "                                  );
ADOQuery3->SQL->Add("WHERE "                                      );
ADOQuery3->SQL->Add("    memo=" + QuotedStr(mem_name)             );
ADOQuery3->SQL->Add("    AND 일련번호 > 0 "                       );
ADOQuery3->SQL->Add("    AND 일련번호 NOT IN "                    );
ADOQuery3->SQL->Add("    ( "                                      );
ADOQuery3->SQL->Add("        SELECT "                             );
ADOQuery3->SQL->Add("            일련번호 "                       );
ADOQuery3->SQL->Add("        FROM "                               );
ADOQuery3->SQL->Add("            del_table "                      );
ADOQuery3->SQL->Add("        WHERE "                              );
ADOQuery3->SQL->Add("            memo=" + QuotedStr(mem_name)     );
ADOQuery3->SQL->Add("    )"                                       );

자 보십시요...
제 소스 파일이라면 ... SQL 문장을 다음처럼 입력 합니다.
훨씬 보기 좋지 않습니까 ...
이렇게 입력 하시는 버릇을 드린다면은 ... 아마도 훨씬 나은 프로그래머가
되실수 있을 겁니다.

참고로 QuotedStr() 함수는 문자열을 '' (홋 따옴표) 로 묶어주는 함수입니다.

그럼 도움 되셨기를..............

Jun 님이 쓰신 글 :
: 답변 감사드립니다...
: 그 부분은 말씀하신대로 적용하여 해결이 된 것 같습니다...꾸벅~!
: 그런데 현재 adoquery-datasource-dbgrid를 쓰는데요...
: select한 항목이 있을 때는 제대로 가져옵니다...헌데 dbgrid에 뿌려진 항목들을 모두 del_table로 넣어서 결국 select할 항목이 없을 경우에는 invalid variant type이라는 에러메세지가 가차없이 나옵니다.
: try-catch로 감싸주어도 에러메시지는 여전히 뜹니다.
: 제가 던져준 sql문의 뜻은 table에서 일련번호와 순서를 가져오는데 memo필드는 mem_name이고 일련번호는 0보다 크고 del_table의 memo필드는 mem_name인 일련번호와 일치하지 않는 항목만을 select하는 것입니다.
: 말이 좀 꼬인 것 같은데요...결론은 del_table에 있는 항목은 빼고 table에서 가져오고자 하거든요.
: try로 감싸주어도 에러메시지가 뜨는 이유와 invalid variant type이라는 에러메시지를 해결하는 방법을 알고 싶습니다.
: 골치아프게 해드려 죄송합니다.
:
:
: 최보현.U&I 님이 쓰신 글 :
: : Jun 님이 쓰신 글 :
: : : 안녕하세요...
: : : 아래와 같이 sql문을 adoquery에 주었습니다.
: : :
: : : ADOQuery3->SQL->Clear();
: : : ADOQuery3->SQL->Add("select 일련번호, 순서 from table where memo = ");
: : : ADOQuery3->SQL->Add(mem_name);
: : : ADOQuery3->SQL->Add(" and 일련번호 > 0 and 일련번호 NOT IN (select 일련번호 from del_table where memo= ");
: : : ADOQuery3->SQL->Add(mem_name);
: : : ADOQuery3->SQL->Add(")");
: : :
: : : select한 필드가 없을 때...예를 들어 일련번호 > 0 인 row가 없을 때 parameter aaa has no default value 라는 메세지가 뜹니다..
: : :
: : : 만일 adoquery3에 미리 sql을 써 넣고 parameter를 넘겨주는 식으로 하면 invalid variant type conversion이라는 메세지가 계속하여 뜹니다.
: : :
: : : sql문을 잘못 써준 건 아닌 것 같은데 어떤 부분을 손 봐야 할지 감이 잡히지 않아 이렇게 질문드립니다..
: : :
: : : 답변 부탁드릴께요...
: :
: : 음 일단 Memo 의 자료형이 메모형또는 문자열 이라면은 ...
: : SQL 문장이 잘못 되었습니다.
: :
: : 다음과 같이 되어야 하지요 ...
: :
: :  ADOQuery3->SQL->Clear();
: :  ADOQuery3->SQL->Add("select 일련번호, 순서 from table where memo = '");<-- (') 에 주의
: :  ADOQuery3->SQL->Add(mem_name);
: :  ADOQuery3->SQL->Add("'");   <-- (') 에 주의
: :
: : 그럼 답변이 되었겠지요
: :
: : 개박살 보다 조금 나은 허접 현이 였습니다.
: :

+ -

관련 글 리스트
9616 [질문] adoquery사용에 관한 질문입니다. sql->add Jun 934 2001/08/07
9620     Re:[질문] adoquery사용에 관한 질문입니다. sql->add 최보현.U&I 1012 2001/08/07
9621         Re:Re:[질문] adoquery사용에 관한 질문입니다. sql->add Jun 1333 2001/08/07
9622             Re:Re:Re:[질문] adoquery사용에 관한 질문입니다. sql->add 최보현.U&I 911 2001/08/07
9625                 감사합니다. Jun 771 2001/08/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.