Q&A

  • select - union 에 관해서..
  얼마전에야 select 구문에 union절에 대해 알게 되었습니다...
  그래서 응용해 보고자 아래와 같이 구현을 하였는데 자꾸 에러가 나오더군요...
  어느 부분이 잘못됬는지 별 쑈(?)를 다해봤는데 도저히 못찾겠어여...
  고수님들이 봐주시고 어디가 잘못됬는지 가르쳐주십시요...

  참고로 아래사항은 차량별 품목재고현황을 나타내는 사항으로 차량과 품목을
  사용자가 선택한 것에 대해서만 표시하는 프로그램입니다...
  각각 선택된 것은 gub1이라는 필드에 "@"표시가 되어있습니다...
  이것을 사용한 이유는 각 차량내 품목별 재고사항과 더불어 차량에 대한 소계를
  한 화면에 보여주고 싶어서 사용했습니다...
  즉 아래와 같이 되게끔 말이죠...

  차량  코드 품명    규격   단위   매입가    수량    재고금액
  2433  1001 간장    50g    ea      1,600      10      16,000
  2433  1002 간장   100g    ea      2,000      10      20,000
  2433  1003 간장   150g    ea      3,000      10      30,000
             소계                                      66,000
  1426  1001 간장    50g    ea      1,600      20      32,000
                      :
                      :
  그래서 union다음절에 사용한 "9999", "소계"등은 각각의 필드에 소계를 표시하고
  정렬을 용이하게 하기 위해서 사용하게 되었습니다...
  처음에는 master/detail구조를 이용해 했는데 재고현황이라 한눈에 보이는 것이
  훨씬 보기가 좋더라구요...

  with Query1 do
       begin
         Close;
         SQL.Clear;
         SQL.Add('Select 차량, 코드, 품명, 규격, 거래단위, 매입가, 재고량, 재고금액 ');
         SQL.Add('  from (Select a.코드, b.코드, b.품명, b.규격, b.거래단위, b.매입가, sum(c.차량수량), sum(c.차량수량*b.매입가) from 차량 a, 품목 b, 전표 c');
         SQL.Add('         Where a.코드 = c.차량코드');
         SQL.Add('          and  b.코드 = c.품목코드');
         SQL.Add('          and  a.gub1 = ''@''');
         SQL.Add('          and  b.gub1 = ''@''');
         SQL.Add('          and  c.일자 <= '''+DateToStr(DateTimePicker1.Date)+'''');
         SQL.Add('         Group By a.코드, b.코드, b.품명, b.규격, b.거래단위, b.매입가');
         SQL.Add('  union all ');
         SQL.Add('        Select a.코드, "9999", " 소  계 ", "", "", "", "", sum(c.차량수량*b.매입가) from 차량 a, 품목 b, 전표 c');
         SQL.Add('         Where a.코드 = c.차량코드');
         SQL.Add('          and  b.코드 = c.품목코드');
         SQL.Add('          and  a.gub1 = ''@''');
         SQL.Add('          and  b.gub1 = ''@''');
         SQL.Add('          and  c.일자 <= '''+DateToStr(DateTimePicker1.Date)+'''');
         SQL.Add('         Group By a.코드)');
         SQL.Add('Order By a.코드, b.코드' );
         Open;
       end;

  고수님들...
  이 초보를 불쌍히 여기사 꼭 좀 가르쳐주세요....^^
  사용화일을 동봉하고 싶은데 여기 기능이 없어서 제가 몇번이나 확인했음을
  알려드립니다... 즉 화일명이나 필드명은 틀리지 않습니다...
  그리고 paradox 화일이구요 delphi 6.0을 사용합니다...
1  COMMENTS
  • Profile
    KDDG_ZZOM 2002.06.09 02:04
    정확한지는 모르지만...
    파라독스에서 인라이뷰가 되는지 잘모르겠네요...

    • 박송휘
    • 2002.06.10 18:46
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.06.10 18:56
      OnClick Event와 연결된 Button1Click를 직접 불러 주시면 됩니다. 즐거운 하루 되세요!
    • 박송휘
      2002.06.11 05:23
      .......................
    • 최용일
      2002.06.12 12:36
      안녕하세요. 최용일입니다. 다른 프로그램도 가능합니다. 님이하신 코딩에서 Button13.Handle대신에 ...
    • 구현민
    • 2002.06.10 18:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2002.06.10 19:35
      퀵레포트 버그입니다.. 예전에 Usesnet 뒤지다가 그 버그 수정한 콤포넌트를 찾았었는데 이름이 기억이 ...
    • 김태훈
    • 2002.06.10 12:00
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.06.10 19:02
      여러가지 방법이 있지만 제가 추천하는 방법은 Samples Tab에 있는 CSpinEdit1 Component를 사용하는 겁니...
    • 김태훈
      2002.06.11 11:12
      저는 이걸 함수로 만들려고 하거든요. 100이하만 입력할수 있고 아예 100이상은 사용자가 입력못하게요....
    • 성더기
      2002.06.11 19:49
      function MaxHund(Value : integer):boolean; begin   if (Value >= 1) and (Value <= 1...
    • 머슴
      2002.06.10 19:00
      먼저 에디트박스속성중에 MaxLength를 3으로 해주시고요.. KeyPress이벤트에서 숫자만 입력되도록 ...
    • 김태훈
      2002.06.11 11:08
      숫자만 입력되게는 했어요. 전 100이하의 숫자만 입력가능하게 하고 싶거든요. 100이상이면 메시지를 보...
    • 김도형
      2002.06.10 18:56
      숫자만 입력하게 했으믄 쉬운거 같은데염...   case strtoint(Edit2.text) of   ...
    • 김태훈
      2002.06.11 11:10
      100이상이면 메시지나 기타처리를 하는게 아니라 아예 100이상의 숫자를 사용자가 입력 못하게 하고 싶거...
    • 정경주
    • 2002.06.10 09:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ☆영민★
      2002.06.10 10:19
      저도 아는게 별루 없지만.. 혹시.. chr(13) 으로 하면 되지 않을까요?? 엔터(Enter / Return)키 값이 1...
    • 머슴
      2002.06.10 23:20
      델파이 실행프로그램이 그리 크지가 않습니다..(제가 느끼기에는) 혹시 다른 원인이 있지 않을까 생...
    • 티모니
      2002.06.10 21:25
      Use CASE.. statments rather than IF..ELSE.. clauses.        &nb...
    • 티모니
      2002.06.10 21:12
      우선은 프로그램을 만드실때여.. 필요 없는건 uses 에서 빼주시구여... 프로그램을 기능들을 dll로 따로...
    • 장명선
      2002.06.10 01:53
      Write 를 쓰세요... 이것은 길이만큼 보내는 명령입니다. 프로퍼티를 참조하세요 예) ComPort.Wri...
    • 나그네
      2002.06.10 03:54
      고맙습니다. 답변해주셔서.. 근데요. ComPort.Write('ABCD', 4); 이거랑여 ComPort.WriteStr('ABCD'); ...
    • 장명선
      2002.06.10 05:35
      문자형 전송에서 Null값이 나오면 Null값에서 중단이 됩니다. 그래서 특정 길이만큼을 전송하라고 명령을 ...
    • 이동준
    • 2002.06.09 11:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.06.10 01:51
      BDE->Configuration->Drivers->Native DLL32 -> SQLORA8.DLL VENDOR INIT -> OCI.DLL ...
    • 장명선
    • 2002.06.09 09:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신석기
      2002.07.23 10:04
      버젼과 관계가 있습니다. 설치된 ocx보다 버젼이 높다면 해당 경로에서 다운 받아 설치합니다. 옵션에서 ...
    • 김장훈
    • 2002.06.09 07:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 깨구락지
      2002.06.09 08:29
      myStr:=StringReplace(trim(tStr),' ','',[rfReplaceAll]) 공백은 무조건 제거합니다.
    • 김정용
      2008.07.31 00:51
      깨구락지 님 감사합니다.
    • 오현주
    • 2002.06.09 06:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_zzang
      2002.06.09 08:12
      여기 가면 자세한 정보를 얻으실 수 있습니다. www.oracleclub.com 상단 메뉴에 보면 oracle > orac...
    • 오현주
      2002.06.09 23:54
      답변은 고맙습니다.. 그런데 저는 dataset의 query로 이용해서 데이터베이스에 접근을 해서 커서를 이동...
    • 이소진
    • 2002.06.09 04:17
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.06.09 05:01
      직접 컴포넌트로 만드셔야 합니다. 아래처럼 새로운 Unit에 코딩하시구.. TNewEdit = class(TEdit) .... ...
    • 박종민
      2002.06.10 16:27
      델파이 잘 못하는 애들한테 왜 이런걸 내주는지 답변은 잘 봤는데 포기입니다... ㅡ.ㅡ
    • 깨구락지
      2002.06.11 20:30
      컴포넌트 만들기가 어려우시면 만드러진 컴포넌트를 사용하십시오. 자료실에 CurrencyEdit 컴포넌트를 이...
    • 이재식
      2002.06.09 04:20
      var    HexiDecimal : String ; -----------------------------------    &...
    • 이승근
    • 2002.06.09 01:24
    • 1 COMMENTS
    • /
    • 1 LIKES
    • KDDG_ZZOM
      2002.06.09 02:04
      정확한지는 모르지만... 파라독스에서 인라이뷰가 되는지 잘모르겠네요...
    • 권광일
      2002.06.15 02:01
      DirectX 의 기능중에 DES 기능이 있습니다. 그중에 TimeLine 이라는 것이 있는데, 그 조작을 XML 로도 ...
    • 이동현
    • 2002.06.09 00:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_zzang
      2002.06.09 00:49
      1. DataSet.RecordCount 로 체크하시던가 2. SELECT COUNT(1) FROM 출석부 WHERE 이름 = '테스트' 여...
    • 송재진
    • 2002.06.09 00:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2002.06.09 04:26
      님께서 질문하신 내용은 그리 어렵지 않게 델파에서 주는 트리뷰 컴포넌트로 할수 있습니다. 특정 노드에...