Q&A

  • 조언을 부탁드립니다.
델파이6에서 ADOQuery를 이용하고 다음과 같이 쿼리를 던졌습니다.

SELECT
    A.AgentState       as          COL1,
    A.ReasonCode       as          COL2,
    B.PeripheralNumber  as         COL3,
    datediff(second, A.DateTimeLastStateChange, getDate()) as  COL4,
    A.Direction         as         COL5
FROM
    Agent_Real_Time A, Agent B
WHERE
    A.AgentState in (0, 2, 3, 4, 5, 6)
    AND A.SkillTargetID = B.SkillTargetID
    AND B.PeripheralID = '5000' AND B.AgentDeskSettingsID = 5001
ORDER BY B.PeripheralNumber asc

위의 쿼리를 던지고 dxDBGrid(혹은 DBGrid)로 데이터를 출력하는 프로그램을 만들려고 있는데요..

COL1    COL2    COL3    COL4    COL5
--------------------------------------------
4          0           101       75         1
2          0           104       79         0
3          0           106       175        0
3          0           109       133        0
3          0           112       115        0

이렇게 데이터가 출력되는데..
이중에서 COL1의 값을 값을 각각 나누어서 출력을 하고 싶습니다.

COL1의 값이 4의 경우의 COL3,COL4의 값을 dxDBGrid1에 출력을 하고,,
COL2의 값이 2인 경우의 COL3,COL4의 값을 dxDBGrid2에 출력하고,
COL3의 값이 3인 경우의 COL3,COL4의 값을 dxDBGrid3에 출력을 하고 싶습니다.

그럼 많은 조언 부탁드리겠습니다.
감사합니다.
4  COMMENTS
  • Profile
    장태원 2003.08.26 01:48
    쿼리 세개를 던져야 합니다.
    그래서 각각 그리드와 연결시키십시오.

  • Profile
    정광필 2003.08.26 02:18
    지금 위의 쿼리를 10초마다 리프레쉬해서 데이터를 가져오게 할려구 그러는데...3번의 쿼리를 따로따로 던진다는 것이 좀.....
    그리고 만들고 있는 폼에 또다른 쿼리가 하나 더 있어서요..
    그렇다면 총 4개의 쿼리를 던져야 한다는 얘기인데..
    그럼 서버에 부하가 좀 걸리지 않을까요? (mssql7.0)

    죄송하지만 다시한번 조언 부탁드립니다.






  • Profile
    성더기 2003.08.26 03:50
    꼭 디비 그리드를 쓰셔야 한다면
    세개의 그리드를 한개의 쿼리에 연결해 두고
    OnDrawCell이나 OnDrawDataCell 따위의 그리드 이벤트에서 코딩으로
    해결하는 방법밖에 없을것 같습니다

    디비 그리드를 사용안하시고
    스트링 그리드를 사용 하신다면..루프를 돌면서 각각의 그리드에 뿌려 주면 되겠지요..

  • Profile
    장태원 2003.08.26 04:33
    네트웍상이라고 가정하에..
    10초마다 리프레쉬 한다면...
    좀 무리가 아닐지 의문이구요.
    한 30초마다 리프레쉬 하고..또는... 쓰레드로 돌리시는게 나을듯 합니다.

    3번의 쿼리도 괜찬습니다
    다음과 같은 의미죠.
    복잡한 쿼리가 아니라면. 한번 쿼리로 100개의 데이타를 가져오나.
    세번 던져  약 33 개씩 데이타를 가져오나.
    양은 100개겠지요.