Q&A

  • Select 가 제대로 안 됩니다.
쿼리문을 만들 때 파라메터를 사용해서 값을 넣는 방식으로 프로그램을
짜고 있습니다.

예) select * from  test where id = :pId;
이런식으로 쿼리를 주고,
Query.ParamByName('pId').AsString := 'jina';
이런식으로 값을 대입...

근데 이렇게 사용할 경우 select 한 결과가 가끔 '0' 으로 나옵니다.
혹시나 해서 디비에서 직접 쿼리를 실행시켰더니
( select * from test where id = 'jina' )
정상적으로 몇 로우가 있다고 나옵니다.

델파이에서도 파라메터를 사용하지 않고 직접
select * from test where id = ''jina''
이렇게 쿼리를 만들어서 사용하면 결과가 제대로 나옵니다.

파라메터를 쓸 경우 왜 결과가 제대로 안 나오는 지 모르겠습니다.
같은 사무실에 있는 다른 직원도 같은 경험을 했다고 합니다.
그래서 혹시 드라이버 문제인가.. 라고 추측 하고 있는데..

이런 경험 있으신분.. 해결을 어떻게 했는지 .... 조언 부탁드립니다.
파라메터로 안 쓰고, 값을 직접 대입 해 주면 쿼리가 넘 지저분
해 지거든요...

그럼, 좋은 하루 보내세요..
2  COMMENTS
  • Profile
    정경철 2002.10.01 14:13
    쿼리문을 사용 하는 사용법입니다.
    참고가 되었으면 합니다.

    현재 쓰고 있는방법도 있고
    다음과 같은 방법도 있습니다.

    예1)
    With Query1 do
    begin
      Clear;
      SQL.Close;
      SQL.Add('select * from  test');
      SQL.Add('where id = :pId');
      Params[0].AsString := 'jina';
      Open;
    end;
      0은 인덱스 값입니다.. 파라미터값의 사용한 순서대로
      표시 합니다.


    예2)
    With Query1 do
    begin
      Clear;
      SQL.Close;
      SQL.Add('select * from  test');
      SQL.Add('where id = ''' + 'jina' + '''');
      Open;
    end;

    위의 ''' 과 '''' 은 델파이에서 ' 를 사용 사용 하기 위해서는
    먼저 ' 를 하고 ' 을 하나 더 사용 하면 됩니다.
    C에서 와 같은 거죠.....

    그럼 좋은 하루 되십시오..


  • Profile
    아폴론 2002.09.26 04:37

    with Query1 do begin
       Close;
       sql,Clear;
       sql.add('Select * from test');
       sql.add(' where id  = :pid');
       ParamByname('pid').asstring := 'jina';
       Open;
    end;
    이러면 Query는 정확한 레코드를 가져 옵니다. 거짖말 하지 않던데...

    • 신세원
    • 2002.09.26 19:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.26 19:30
      안녕하세요. 최용일입니다. 님께서 말씀하시는게 볼랜드에서 권장하는 네이밍규칙입니다. 객체, 레코...
    • KDDG_ZZOM
      2002.09.26 19:28
      써보세요...^^ 같은이름만 없다면 쓰는데 지장 없을겁니다... 잘은 모르지만 그냥 구분하기 쉽게 앞에다 T...
    • 델리
      2002.09.26 21:22
      감사합니다..vb쪽하다가 델파이한지가 얼마되지 않아서리.. 근데 여긴 참 친절하구 빠르네요..^^ 자주 이...
    • 김창덕
    • 2002.09.26 19:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 세균맨
      2002.09.26 20:57
      저도 비슷한 경험이 있읍니다... 고수들이 얘기를 하기를 BDE 환경을 바꿔보라 하더군요.. 님께서도 BD...
    • 김진환
      2002.10.07 20:40
      좋은 정보 감사합니다. 계속 같은 에러로 포맷까지할 생각이었는데... 포맷할 필요가 없을것 같군요. ...
    • KDDG_ZZOM
      2002.09.26 19:30
      자료실인가 아니면 팁에서 본것같은데.... 아니면 함수만드셔서 사용하면 될것같네요... 근데 생각...
    • 박재헌
      2002.09.26 19:44
      감사합니다. 팁 란에서 검색하니까 나오네요.. 혹시나 다른 분들도 참고하시라고 링크 걸어 놓겠습니다....
    • 박준영
    • 2002.09.26 18:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.26 18:28
      TADOStoredProc 를 사용하세요 TADOQuery에서 stored procedure를 사용하실수 없습니다.
    • 박준영
      2002.09.26 18:41
      먼저 답변 감사드립니다. 근데 TQUERY 에서는 이런식으로 SP 를 사용했습니다. 물론 그때는 MS-SQL 이었...
    • 이추형
      2002.09.27 02:13
      먼저 ADOStoredProc1의 설정을 해주시기 바랍니다. 사용방법은 TStoredProc와 유사합니다. //설정부분-...
    • 김종균
    • 2002.09.26 10:43
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 임진묵
      2002.09.26 20:14
      아스키 코드표를 참조 하시면 알 수 있습니다. 27은 27 1B 033 ESC (escape)   &nbs...
    • 아폴론
      2002.09.26 18:45
      13은 Enter key 27은 Esc key 키값을 알려면 폼의 KeyPreview 속성을 True로 하고 폼의 KeyDown이벤...
    • ㄴ ㅏ ㅁ ㅑ
      2002.09.26 18:37
      #13 Enter #27 Esc 그리구 제가 올린 파일을 사용하면 키값을 알아낼 수 있답니다. 이곳 델파이 ...
    • 김헌대
      2002.09.26 11:13
      #13은 엔터키맞아여..#27은 모르겠어여
    • 송득보
    • 2002.09.26 08:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.26 19:33
      안녕하세요. 최용일입니다. 묻고답하기란에서 HotKey로 검색해보세요. 예제가 있습니다. 여기 없으면...
    • 김종균
    • 2002.09.26 07:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 문태용
      2002.09.26 08:22
      이렇게 해보세여.. if Key = #13 then begin    if edit1.Text = '' then begin   ...
    • 김상수
    • 2002.09.26 05:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.26 06:35
      어떤날짜에 +1일을 하는것같네요... :adt_start_date형이 뭔가요? 오라클이면 to_date,to_char함수를 이...
    • 김상수
      2002.09.26 19:03
      답변 감사드립니다... 제가 워낙 허접이라.... :adt_start_date 는 datetime형 입니다. 위...
    • 김상수
    • 2002.09.26 05:39
    • 4 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.26 06:37
      const로 하시면될것같은데... const   gs_user = '1234'; =, := 인지는 잘모르겠다...^^ ...
    • 김상수
      2002.09.26 18:15
      님이 갈쳐주신데로 했는데   private     { Private declarations }...
    • 최용일
      2002.09.26 19:38
      안녕하세요. 최용일입니다. public아래에 있는 것들은 객체의 필드입니다. 전역상수로 사용하실려면 객...
    • 김상수
      2002.09.26 19:44
      감사합니다.
    • 랜드빈
    • 2002.09.26 04:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.26 18:39
      델파이의 TiniFile을 이용하세요... ReadSections으로 섹션이름을 읽고 ReadSection으로 위 섹션안에 ...
    • sunny
    • 2002.09.26 04:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최병철
      2002.09.26 18:13
      트리뷰에 관한 예제가 자료실에 있읍니다. 검색어를  생산을 입력하시고, 검색 하세요. ...
    • YoungMan
    • 2002.09.26 03:54
    • 0 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.26 03:57
      오라클의 export하고 import기능을 이용하면될것같네요... 하위버젼에서 상위로 올라가는거는 거의 다 올...
    • ▲┫┃■┃콜론
      2002.09.26 04:51
      감사드리구요 그방법으로 하니 서버에 프로그램이 잘못 설치 되었는지 에러가 뜨네요....... 그리고 오...
    • KDDG_ZZOM
      2002.09.26 06:40
      될것같기도 하네요... 그대신 환경설정이 같아야 될것같고요.... 글구 옴기실 오라클에 올길 오라클의 관...
    • 김진아
    • 2002.09.26 03:06
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정경철
      2002.10.01 14:13
      쿼리문을 사용 하는 사용법입니다. 참고가 되었으면 합니다. 현재 쓰고 있는방법도 있고 다음과 같은 ...
    • 아폴론
      2002.09.26 04:37
      with Query1 do begin    Close;    sql,Clear;    sql.add('Select *...
    • 델초^.^;
    • 2002.09.26 00:58
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.09.26 02:27
      for ii := 0 to memo1.lines.count -1 do begin      sqltxt := 'insert into table...
    • 이추형
      2002.09.26 01:50
      => vValue := '101' + #13 + '102' + #13 + '103' + #13 + '104' + #13 + '105' ;
    • 델초^.^;
      2002.09.26 02:21