Q&A

  • 델파이 고수님들 알려주세요..
델파이에 쿼리를 코딩하려구 하는데 문법이 틀린지 자꾸 오류가 나네요..
쿼리는 이런겁니다.

select a.gb1,a.custid,c.custname,a.partno,b.pkind,a.avg_price from
(
select decode(substr(partno,1,1),'0','표준부품','1','대우', '2','기아','3','쌍용','4', '현대','5', '기아','6','KB'
,'7','기타','8',decode(substr(partno,1,3),'804','MAZDA','807','VW','809','AUDI','기타')) gb1,
            custid,partno,round(nvl(avg(outprice),0),0) avg_price from slat0400
where (concat(year,concat(to_char(month,'FM09'),to_char(day,'FM09')))) >=20050101 and
      (concat(year,concat(to_char(month,'FM09'),to_char(day,'FM09')))) <=20050105
group by custid,partno
)a,
(select code,pkind from k_ofpart)b,
(select custid,custname from slam0300)c
where substr(a.partno,4,1)=b.code(+) and a.custid=c.custid(+)


그리 어려운 쿼리는 아닌데 코딩으로 하려구 하니까 계속 애러가 납니다.SQL 스트링에 입력하면 되긴하는데
제가 변수를 입력 받으려구 하거든요..
고수님들 시간내서 좀 봐주시고 더 좋은 방법이 있으면 알려주세요
3  COMMENTS
  • Profile
    유응철 2005.09.28 18:40
    파라메타를 받으시려고 하는것 같은데.. 파라메타 받는 부분의 코드를 올려주셔야 답변이 될듯 합니다..
    sql문을 실제로 돌릴때는 개발자가 문법이 틀리지않게 파라메타까지 넣어서 하기때문에 문법상 오류가 생기지 않는데 프로그램만 돌리면 에러가 나는 경우가 종종 있습니다..
    이런경우 open하기전에 memo1.text := query.sql.text;라고 하여 나온 결과를 돌려보시면 어디서 잘 못 됐는지 바로 잡히는 경우가 있습니다...
    전 요즘은 3Tier로 하기에... 로그를 남겨서 그것를 돌려보고 있습니다..
    흔한 실수이니까..... 되집어 보면 바로 잡는데 시간이 오래 걸리지 않을 겁니다...


  • Profile
    남상훈 2005.09.28 19:57
    답변 정말 진심으로 감사드립니다. 허나 저의 질문의도는 그게 아니고요
    밑의 쿼리는 sql navigation에서 작성했고 잘 돌아가는데 그것을 델파이에 코딩으로 하려구하는데
    문법을 잘몰라서요..예를 들어 sql.add(' select partno from slat');
                                             sql.add('where partno= '+''''+' form1.text'+''''....---> 이런 문법을 몰라서
                                             요..님께서 아신다면 따옴표등 사용법을 좀 알려주세요..거거서 애러가 나네요
                                             밑의 쿼리도 그렇게 델파이에 임포트 시키려구요 델파이는 한지 얼마안되서
                                             잘모르겠구 책에도 이부분에 대해서는 상세히 안나오네요.부탁드립니다 님.


    델파이에 쿼리를 코딩하려구 하는데 문법이 틀린지 자꾸 오류가 나네요..
    쿼리는 이런겁니다.

    select a.gb1,a.custid,c.custname,a.partno,b.pkind,a.avg_price from
    (
    select decode(substr(partno,1,1),'0','표준부품','1','대우', '2','기아','3','쌍용','4', '현대','5', '기아','6','KB'
    ,'7','기타','8',decode(substr(partno,1,3),'804','MAZDA','807','VW','809','AUDI','기타')) gb1,
                custid,partno,round(nvl(avg(outprice),0),0) avg_price from slat0400
    where (concat(year,concat(to_char(month,'FM09'),to_char(day,'FM09')))) >=20050101 and
          (concat(year,concat(to_char(month,'FM09'),to_char(day,'FM09')))) <=20050105
    group by custid,partno
    )a,
    (select code,pkind from k_ofpart)b,
    (select custid,custname from slam0300)c
    where substr(a.partno,4,1)=b.code(+) and a.custid=c.custid(+)









  • Profile
    TeamB 2005.09.28 21:17
    파람을 사용해보시죠....편리합니다.

    <!--CodeS-->
    ...
    Sql.Add('Select partno from slat');
    Sql.Add(' where partno = :pPartno');
    ParamByName('pPartNo').AsString:= from1.text;
    ...
    <!--CodeE-->

    : 이표시를 하면 파람으로 인식합니다. 그렇게 코딩하시고 Query.Params 를 통해서 실데이터를 넣어주시면 됩니다.

    근데 파람은 Select절..흠..정확한건 잘 모르겟구 여튼 처음줄엔 적용이 안되는것 같습니다. 예를 들어 테이블명을 파람으로 처리한다든가 아님 컬럼리스트 같은...이럴땐 문자치환이나 그냥 + 연산으로 문자열을 붙히는 방법이 있겟죠...

    <!--CodeS-->
    //exam a;
    ...
    Sql.Add('Select partno from @tbl_name');
    Sql.Add(' where partno = @part_value');
    Sql.Text:= StringReplace(Sql.Text,'@tbl_name','slat',[rfReplaceAll]);
    Sql.Text:= StringReplace(Sql.Text,'@part_value','"'+form1.text+'"',[rfReplaceAll]);
    ...
    //exam b;
    ...
    Sql.Add('Select partno from slat');
    Sql.Add(' where partno = "'+form1.text+'"');
    ...
    <!--CodeE-->

    흠....싱글쿼터 와 더블쿼터를 주의하세요... 델파이에서 문자열을 감쌀때는 싱글쿼터 입니다. 싱글쿼터 안에 있는건 더블쿼터 입니다.  마지막줄의  "' <- " ' , '"' <- ' " ' 요런식이죠...

    그럼

    • 이중철
      2005.09.29 20:19
      질문의도가 프로그램 실행하고 윈도우의 작업관리자에서 메모리 점유율을 보시고 말씀 하신것 같네요 실행...
    • 염재현
      2005.09.29 17:38
      버튼 하나가 5메가를 차지하는 것이라서 그런 것이 아니라 리소스를 비롯하여 많은 것들이 기본적으로 추가...
    • 박준철
      2005.09.28 23:43
      버튼에 이미지 사이즈를 확인해 보심이 좋을듯 합니다. ^^
    • 마루씨
      2005.09.29 00:13
      답변 감사드립니다. 그냥 디폴트 프로젝트에 버튼만 올렸습니다. 아무것도 추가 한것 없구요.
    • 황재훈
    • 2005.09.28 20:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 송수정
      2005.09.29 00:30
      저도 컴포넌트를 잘 모르지만 http://www.acrosoft.pe.kr/ 위 사이트에가면 강좌및팁에 컨포넌트 ...
    • 박준철
      2005.09.28 23:45
      저 같은 경우는 for 년도 to 년도 do begin    for 월 to 월 do    begin  ...
    • 모영철
      2005.09.28 19:42
      A컴포넌트의 날짜부터 B 컴포넌트의 날짜까지를 조건으로 둔 for문을 작성하시고.. 현재의 일자로 요일...
    • 염재현
      2005.09.29 17:35
      실제로 Date는 쉽게 실수형으로 변환될 수 있습니다. 그래서 Date끼리 빼서 그 사이의 날짜 차이를 쉽게 계...
    • 조은미
    • 2005.09.28 18:22
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 김유신
      2005.10.01 19:29
      델파이에서 다운되는 현상이 아니라면 디비서버쪽에서 모니터링을 해보심이 좋을 듯 싶습니다.
    • 이종민
      2005.09.30 02:11
      쿼리를 올리시는게^^; 쿼리 느려지는게... 하나 두개 해서 되면 다행인데 안그런 경우도 많은거같...
    • 박준철
      2005.09.29 00:06
      sql 문을 한번 올려 보시죠 그래야 sql 튜닝을 여려사람이 할수 있지 않을까요 ? ㅋㅋㅋ
    • 모영철
      2005.09.28 19:45
      아마도 제생각엔 프로그램이 다운된것이 아니라.. 원래 쿼리를 그냥 날려주면 그동안은 프로그램이 얼자...
    • 유응철
      2005.09.28 18:29
      디비에 타임아웃 넘은게 아닐까요? 가져오다가 시간이 지나서...컨넥트가 끊어진다는....
    • 남상훈
    • 2005.09.28 17:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 유응철
      2005.09.28 18:40
      파라메타를 받으시려고 하는것 같은데.. 파라메타 받는 부분의 코드를 올려주셔야 답변이 될듯 합니다.. s...
    • 남상훈
      2005.09.28 19:57
      답변 정말 진심으로 감사드립니다. 허나 저의 질문의도는 그게 아니고요 밑의 쿼리는 sql navigation에서 ...
    • TeamB
      2005.09.28 21:17
      파람을 사용해보시죠....편리합니다. <!--CodeS--> ... Sql.Add('Select partno from slat');...
    • 이종덕
    • 2005.09.28 17:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.09.28 19:39
      이상하게 문제가 발생한다는것이 뭔지 모르겠네요.. 자료실에 보면 "디렉토리 통채로 복사" 란 제목으로...
    • 이종덕
      2005.11.25 03:01
      프로그램에 조금의 문제가 있습니다. 1. 시디롬을 검색 할 경우에는 제대로 하위 폴더를 검색하지 못한다...
    • 신철우
    • 2005.09.27 18:37
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 신철우
      2005.10.20 22:53
      safearray로 해결했습니다. Psa: PSafeArray; SafeArrayCopy(PSafeArray(TVarData(pCH).VArray), Psa...
    • 천희택
      2005.09.27 18:42
      흐음.... 글쿤염... 테스트 해보지는 않아서 안될 수도 있지만. sizeof(pCH) / 4 하면 될 것 ...
    • 신철우
      2005.09.27 18:50
      sizeof(pCH)는 1개나,2개일때도 16으로 나오는 걸로 봐서 double형의 길이인 것 같습니다. integer는 4, s...
    • 정찬희
      2005.10.01 02:29
      Variant 배열은 Variants 유닛에 있는 VarArrayLowBound,  VarArrayHighBound를 이용해서 Bound...
    • 신철우
      2005.10.10 19:25
      아래처럼 하려니까 dim자리에 integer값을 넣어주어야 하는 것 같은데...... 예문을 부탁드립니다. sho...
    • 최용일
      2005.09.27 01:20
      안녕하세요. 최용일입니다. 스트링그리드자체에는 소팅할 수 있도록 하는 메소드나 프로퍼티가 없습니다...
    • 김현철
      2005.09.27 08:32
      답변 정말 감사합니다. 근데 문자는 작업이 안돼네여!
    • 최용일
      2005.09.27 09:01
      험.. 그냥 예제로 참고하시라고 만들어드린건데요... 먹여주길 기다리지 마시고 먹으려고 해보세요... ...
    • 김현철
      2005.09.28 07:38
      개발자로서 참으로 부끄럽네여! ㅡㅡ; 지적감사합니다. 예제만들어 주신 덕에 숫자와 문자다 소트되도...
    • 문인철
    • 2005.09.26 20:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • TeamB
      2005.09.26 21:23
      MySQL 의 문자셋을 확인해보세요.. MySQL 이 4.x 버전일경우 문자셋/컬렉션 이 복잡해졌는데요 잘 맞...
    • 신철우
    • 2005.09.26 19:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • TeamB
      2005.09.26 21:19
      Length(pCh1);
    • 신철우
      2005.09.29 22:17
      문자배열은 Length(), 일반적인 double배열은 high()로 알 수 있지만 oleVariant로 넘어온 값은 incompati...
    • 임형준
      2005.09.25 03:12
      실행시킬때 따옴표를 쓰니까 알아서 되더군요. 이렇게요   program.exe option "my file name"...
    • 반영재
    • 2005.09.24 20:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2005.09.30 01:59
      안녕하세요? 한델 서버는 목동 KT IDC센터 내에 위치하고 있습니다. ^^ 서버 코로케이션 서비스를 받...
    • 양경란
    • 2005.09.24 19:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 반영재
      2005.09.24 20:14
      델파이5기준입니다. 일단 mscomm32.ocx요거가 레지스트리에 등록되 있어야하고요. 델파이메뉴중에 Co...
    • 피터팬
    • 2005.09.24 13:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2005.10.01 00:36
      이부분은 검색해보시면 답이 상당히 많을 듯 하군요.. 제가 본 것만해도 얼핏 몇개는 되었으니까 말이죠.....
    • 양훈철
    • 2005.09.24 00:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2005.09.24 01:32
      인터넷에서 방법을 찾다가 다른 방법으로 해결했습니다 익스플로러 전용이지만 VML(Vector Markup Langu...