Q&A

  • ADOQuery쓰는법?
안녕하세요..
허접한 초봅니다..

다름이 아니오라 ADOQuery를 쓰려니깐
도대체 어떻게 쓰는건지 감이 안잡혀서 이렇게 문의 드립니다..


질문....

컨포넌트 속성중 Active가 처음에는 True로 잡히지 않던데
나중에 SQL속성에 SQL문장을 써준후 Active를 True로 해 줘야 하나요?


ADOTable 이나 ADOQuery에도 속성중에 .SORT 항목이 있어서
도움말을 따라 해보았으나 에러만 뜹니다..
소트속성은 어떻게 사용해야 하는지요..


ADOQuery에 DataSource 부분과 Conection(디비파일연결?)
부분이 있던데
두 군데 다 설정을 해야 하는건가요?
왜 두군데 일까? 이해가 잘 안갑니다...


ADOQuery를 이용하여 레코드를 입력하려고 합니다.
SQL문에 Insert 문을 쓰는건 알겠는데
Insert ...........
어떻게 써야죠? 검색해보니깐 파람을 이용하라고 나와있던데
무슨 예긴지 감이 안잡힙니다.....


그럼 이만..
2  COMMENTS
  • Profile
    김주 2003.05.07 07:23
    저도 초보지만 님의 글을 보니 30일전 생각이 나는군요...
    그래서 몇자 적어봅니다.

    우선 님의 경우 공부을 목적으로 하는 것같으니....

    이와 공부을 할거라면 DB쪽은 트랜잭션까지 생각하면서 공부을 겸하는
    것이 낳을거라 생각이 듭니다.
    ADOQuery도 트랜잭션 처리가 있긴 하지만 저도 아직까진 알아보지 못했슴
    ADOConnection을 이용하면 트랜잭션이 가능한 걸로 다른님의 글에서
    보았습니다.
    그리 어려운것 같진않더군요.
    우선 님이 쿼리에 대해서 물었으니 답변을 드리자면..
    2가지 방법이 있습니다.
    첫번째 방법은 대부분의 서적에 지필대여 있는 부분이며 님이 물어본 글귀에도 있는 내용이지만..
    Adoquery 컴포넌트 속성에서 사용자가 직접 지정을 하는 방법
    두번째는 코딩상에서 ADOQuery컴포넌트 속성을 지정해주는 방법이 있습니다.
    서문이 많지요..저도 초보이며 님처럼 궁금점이 많아서서 그런지 알고있는것만 말씀드리자니 글이 길어지는 군요.


    첫번째 방법:
                    Active부분이 있습니다. 처음에는 False로 되어있지요..
                    이부분을 True로 하면 100% Error가 납니다.
                    속성 하단부분에 보면 SQL이란 속성이 있는데
                    이부분에서 최소한 Select * From ??등은 해줘야 합니다.
                    당연히 모든필드(*)을 표시하면 좋지 않은 습관이 됩니다.
                    참고하시구요..
                    최소 속성설정 항목은 Connection이나ConnectionString으로
                    해당 DB을 연결합니다. 그리구 SQL속성에 Select명령으로 최소
                    한의 명령을 몇자 적어주시구요.윗처럼..
                    Active을 True로 설정하시면 ADOQuery설정은 끝납니다.
                    참고적으로 CurrsorType와CurrsorLocation설정은 책을 보시면
                    자세히 나와있는데, 간단히 말씀드리자면 두가지의 설정도
                    AdoQuery사용 용도에 따라 설정을 변환하여 사용하시면 속도도
                    마찬가지며, 여러측면에서 유리하지요.. 이것은 어떤님의 말씀과
                    책에 적혀져 있더라구요.
                  
                    그다음 DataSource부분 입니다. 그다지 설정은 없구요.
                     DataSet에 위에서 사용된 ADOQuery컴포넌트을 설정 하시면
                    됩니다.
                    그리고 정보을 표현하고자 하시는 컴포넌트에 DataSource부분에
                    DataSource컴포넌트을 지정하시면 됩니다.
                    되게는 DBgrid을 사용하지만요..DBgrid도 속성을 설정에 따라
                    표현하고자 하는 필드만 보여지게 할수도 있고 디테일..등등 설정
                    도 가능하지요..
    두번째 방법:
                     그다음 방법으로 코딩상에서 속성을 설정하여 님께서 원하시는
                     일을 수행할수 있습니다.
                     위하고 같구요.. 다만 코딩 상에서 이뤄진다는 것이죠..
                     별로 좋은 방법 같진 않나요..
                     하지만 두번째 방법이 더 좋은것 같은데요.. 수행을 원할때만
                     사용할수 있고 ADOQuery컴포넌트을 여러게 사용할 필요도
                     없어질테니 말이죠..예외는 있고 저도 초보다 보니 미처 생각
                     못한 부분 빼고는 좋다고 생각합니다.
                    

    그리고 Parmeters 말씀 하셨죠.. 그부분은 처음에 진짜 이해가 가지 않은
    부분중에 하나였는데 제가 머리가 조금 나쁘거든요..하지만 알고보니 너무도
    쉬운것 있죠..이해가 가지 않았다는 생각이 부끄러울 정도로 말이죠...
    우선 아래 Query문을 본다음 말씀드리죠..

    Ex>A반의 홍길동을 찾을때
        1) Select  Name, Ban From Member Where Ban=:NA and Name=:NB
            Parmeters.ParamByName(NA).Value:='A';
            Parmeters.ParamByName(NB).Value:='홍길동';

          
        2) Select Name,Ban From Member where Ban='"+'A'+'" and
            Name='"+'홍길동'+"''

        1과2의 차이점이 뭘까요.. 당연이 조건문을 Parmeter로 주느냐 아님 뭐라
        구해야 하나 명칭이 잘모르겠지만 Query문에 문자을 이용해 주는 것이죠
        
        참고로 위을 쓰는법은 AdoQuery1.sql(가로안에 쿼리문);
        마지막에 AdoQuery1.Open 이겠죠...

    그럼 마지막으로 AdoQuery로 Insert는 ....

    Ex>과일 상회에서 사과 2Box와 금일 단과 및 금액을 입력 하는 부분
          필드명
                  Office ->회사명
                  Pum ->품목
                  Dan -> 단가
                  Mn -> 금액

          입력할 데이터(A상회,사과,100,1000)
          
          Insert문
          With AdoQuery1 do begin
              Parmeter.clear;  
              Sql.clear;
              
              Sql.Add('Insert  Into  Etable(Office,Pum,Dan,Mn');              
              Sql.Add('Value('A상회','사과','100','1000')');
              Sql.ExecSql;
          End;  
        

    Insert : 새로운 레코드를 추가 등록시사용
      형식) Insert into 테이블명
            (필드명, ....)
            Values
            (필드값, ....);  

    그리구 위처럼 Query로 Insert할때 트랜잭션 사용하기..
    우선 컴포넌트는 AdoConnection,AdoQuery 사용함.
    AdoConnection속성을 이렇게 하세요.ConnectionString을 선택하여 DB을 선택 하십시요.CursorLocation=clUseClient,KeepConnection=True,LoginPrompt=False,
    Mode=cmShareDenyNone 마지막으로 Connected을 True로 하시면 됩니다.
    Connected을 True로 하실때 Error나면 설정이 잘못된 겁니다.
    AdoQuery 속성은 맨위처럼 하시는데 ADOQuery 속성에서 Connection을
    AdoConnection을 선택 하세요.

    위처럼 Insert Into명령으로 Query을 날리면 되는데 몇가지 추가해야할
    부분이 있습니다.

    트랜잭션 시작명령
    트랜잭션 종료명령
    트랜잭션 취소명령
    롤백처리


    지금까지 적느라 무려 2시간에 걸쳐 썼네요....뛰엄뛰엄쓰다보니... 시간이 없어 우선 이부분은 다음에 알려드리겠습니다..
    아님 고수님께서..몇자 적어주십시요...

    님께 도움이 되길 바랍니다...
    위 내용은 절대 초보용이니 중/고수님은 보지 않았으면 하는데 챙피하니깐요
    위내용이 틀렸으면 몇자 적어주십시요...
    추가적으로 좋은 내용도 부탁드립니다.



  • Profile
    김정은 2003.05.07 18:30
    이렇게 까지 신경써주는 분이 계실줄은  T^T

    감동 입니다...

    정말 감사합니다.
    • 이강석
      2003.05.07 02:53
      안녕하세요.. 저 델파이는 잘 하는 사람아닙니다.. 아니구요... 책이름... http://www.wowbook.com/com...
    • 박민영
      2003.05.07 03:03
      답변 감사드립니다. ^-^* 근데.... Delphi 5 CONTACT <-- 이 책 절판되어버렸네요 ^^a 그래서&nbs...
    • 이강석
      2003.05.07 03:36
      그 책이 절판이라고요... 쩌업...글쿠나... 제것을 드릴수도 엄는 형편이라서.. 델파이 책은 대림출판사...
    • 김정은
    • 2003.05.07 02:18
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 김주
      2003.05.07 07:23
      저도 초보지만 님의 글을 보니 30일전 생각이 나는군요... 그래서 몇자 적어봅니다. 우선 님의 경우 공...
    • 김정은
      2003.05.07 18:30
      이렇게 까지 신경써주는 분이 계실줄은  T^T 감동 입니다... 정말 감사합니다.
    • 이강석
      2003.05.07 02:41
      먼저 안녕하세요!!! 이론적으로 이야기하자면... 제 생각이지만...특정플금에서 화일(이것두 시스템에서 ...
    • 김경록
      2003.05.07 01:45
      Table 한개 만드시구여.. 간단히 접속자 명단을 만드세염.. 물론, 세션ID도 가져올 수 있으니.. 고것도 ...
    • 조경모
      2003.05.07 02:07
    • 김경록
      2003.05.07 01:37
      간단한 책을 하나 사 보심이 어떠실듯... 아참.. 그리고 답변은 드려야져.. 메뉴는 메뉴 컴포넌트를 ...
    • 이강석
      2003.05.07 01:25
      일단 폼위에... 스탠다드 컴포넌트에 보면... 메인메뉴라고 있습니다.. 그걸 올려놓으신 후.... 더블 ...
    • 스말(^___^)
      2003.05.07 03:28
      스말
    • 김경록
      2003.05.07 00:46
      원래는 해당 Key를 검색하셔야 합니다. (ADOQuery를 사용해서..) 이것이 정확한 방법입니다.. 만약 해...
    • 김훈배
    • 2003.05.07 00:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2003.05.07 01:02
      안녕하세요... 아..그 질문입니까? 허걱.,... select       &nbs...
    • 초보
      2003.05.07 01:59
      oracle 8부터 case 문이 된다고 하셨는데.. 제가 orcle 8i를 쓰는데 case문이 안듣네요.. 그래서 마지막...
    • 김경록
      2003.05.07 02:04
      제가 Query를 잘못 썼나? 흠.. 테스트를 못해봐서리.. 확신은 못해드리겠지만.. 우쨌든.. Case문은 되는...
    • 김경록
      2003.05.07 00:51
      select sum(decode(substr(code,1,1),'A', mount))    A,     &...
    • 푸우미
      2003.05.07 18:25
      MDB에서의 단점은 알고 계신거져.. MDB 같은 경우 여러 사람이 사용할 경우 DB lock이 잘 걸립니다. 델파...
    • 이강석
      2003.05.07 03:01
    • 김경록
      2003.05.07 00:55
      무료를 원하신다면, 약간 불편해도 MySQL을 추천하며, 무료가 아니면서, 가격대 성능비를 원하시면, MS-...
    • 배영철
      2003.05.07 01:46
      네 고맙습니다.^^ 운영체제는 windows98/ 2000/ xp용으로 하려고 생각합니다. mdb를 생각했는데.. 검...
    • 김경록
      2003.05.07 02:32
      C/S(Client/Server) 환경이 아니라는 말씀처럼 들리네염.. 전.. 여러명이 사용한다길래.. c/s용으로 판...
    • 김경록
      2003.05.07 01:11
          TR_5005_REPEAT_STRUCT = Packed Record        ...
    • 김경록
      2003.05.07 02:03
      Array of TR_5005_REPEAT_STRUCT 요부분이 선언이 안되신다구여? 이겅.. 어떻하나.. 그럼.. 이렇게도...
    • 최용일
      2003.05.07 00:15
      안녕하세요. 최용일입니다. 코딩에 문제가 있어 보이진 않는데요... Array of TR_5005_REPEAT_STRUCT...
    • 김경록
      2003.05.07 00:38
      아마 있을겁니다.. 제가 삭제하지 않았으니까여..  *^^*
    • 이강석
      2003.05.06 23:39
      안녕하세요..? 우선 결론부터 이야기하면.. 여러가지 방법이 있겠지만.. 그중에서 레지스트리에 저장하...
    • 박민영
    • 2003.05.06 22:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2003.05.06 22:43
      먼저 안냐세요..? 저도 접한지 오래됬지만...잘 모르는 넘입니다.. 하지만 입문서라면.. 'Delphi6...
    • 날나리
      2003.08.12 23:15
      다음과 같이 하시면 3번째 줄 전체를 선택하신 예쁜 색으로 바꿔줍니다... if ARow = 3 then begin &nb...
    • 최용일
      2003.05.06 22:29
      안녕하세요. 최용일입니다 특정셀이 선택되어 졌을때 StringGrid1.Invalidate를 호출해보세요. 그럼 다...
    • 뭉치
    • 2003.05.06 21:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.05.19 20:35
      $FF아닌가요? 16진수값이여.. 이런거라면, Chr함수를 사용하면 되는데여.. #$FF이런값이 있나요?
    • Formas
    • 2003.05.06 21:11
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 초보
    • 2003.05.06 21:02
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김경록
      2003.05.07 00:59
      질문내용이 이해할 수 있는 정도의 자세한 내막이 없는듯 하네여.. 일단.. 이렇게 하셔야 합니다.. (의...
    • 이강석
      2003.05.06 22:06
      안냐세요..? 조건을 말씀하시는 거라면..... select * from account where (코드1 <> 'A') and (...
    • 정수지
    • 2003.05.06 20:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 몽상
      2003.05.07 00:29
      일부분만 변환한다면.. 브리프케이스 모델이 가장 좋은 방법이네요.. 핵심이 되면 코드는 저장할...
    • 몽상
      2003.05.06 23:57
      mdb를 꼭 파라독스 디비로 만들어야 한다면..필요한것만 변환하는가요?. 아니면 전부를 변환하는 가요? ...
    • 최학현
    • 2003.05.06 20:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 2003.05.06 22:20
      검색해서 LocalIP를 찾아오는 소스를 보셨다고 했죠? 거기를 좀 더 보시면, LocalIP를 가져올때 어떤 배열...
    • 노랑이
    • 2003.05.06 20:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.05.06 22:25
      안녕하세요. 최용일입니다. 연결 프로그램 등록하시려는 것 같은데... %n은 파라매터입니다. 탐색기...
    • 노랑이
      2003.05.06 22:42
      %1 이 없을때 프로그램이 제대로 실행이 안되서 한참 고민했었는데... ^^ 고맙습니다.