에너지/열교해석관련 질문

Window software 관련 답변드립니다.

M 관리자 7 3,535 2012.01.17 15:20

하루 종일을 해보았는데.. 쿼리로 자동테이블은 만들어지나,, 결과값이 윈도에서 읽혀지는데 문제가 있네요.. 

일단 몇가지 짚히는 곳이 있으나, 제가 외근을 나가야 해서 일단 만들어진 쿼리를 올려드립니다.

Access에서 오픈하셔서 쿼리를 번호순서대로 더블클릭하시면 엑셀파일에서 불러온 표가 윈도의 테이블로 자동으로 나뉘어져 들어가는 것을 보실 수 있을실 것입니다.

잘 모르신다면 제가 외근다녀와서 엑세스에서의 작동법을 그림으로 올려드리겠습니다.

윈도에서 읽어 들이는 것만 남았으니.. 곧 해결되리라 생각합니다.

그럼..

-----------------------------------------------------------------------------------------------
쿼리 처리방법입니다.
쿼리의 문제점은 좀 더 봐야 겠습니다만, 입력 순서는 앞으로도 동일합니다.
글의 아래쪽 사진이 글의 설명문과 일치하는 그림입니다.

사용된 프로그램 버전은 다음과 같습니다.
Window 6.2
MS Access 2007

1. 임의의 폴더를 만든다.
   Window 방에 있는 W6.mdb 파일과  작성된 make_query.accdb 를 만들어진 폴더에 복사를 한다.
  (복사를 하는 것은 원본을 보호하기 위한 백업용도로써 하는 것으로 특별한 의미는 없습니다. )



2. Access 에서 복사된 w6.mdb 를 오픈한다.
화면 상단에 "보안 경고"가 나오면 같은 글 오른쪽의 "옵션"을 클릭한다.


3. "이 콘텐츠 사용"을 체크하고 "확인"을 누룬다. (쿼리 허용)


4. 상단 메뉴의 "외부 데이타" 를 클릭하여 메뉴를 펼치고, "Excel"을 클릭한다. 


5. 화면이 나오면 "찾아보기"를 클릭한다.


6. 매트릭스로 만들어진 엑셀파일을 선택한 후, "열기"를 클릭한다.


7. 보여지는 워크시트에서 "Example Matrix"를 선택한 후 "다음"을 클릭한다.
(** 주의 앞으로 매트릭스로 만들어지는 엑셀파일의 워크시트 이름이 항상 동일하게 만들어 져야 함)


8. 이 화면은 그냥 "다음" 클릭



9. 이 화면도 그냥 "다음" 클릭


10. 화면의 "기본 키 선택"을 선택하고, "Option" 컬럼이 선택되어진 것을 확인



11. "마침"을 클릭하면 종료



12. "가져오기 단계"를 묻는 질문은 그냥 "닫기" (별 의미 없음)



13. 그러면 Access 왼쪽 화면에 "Example Matrix" 테이블이 들어온 것을 확인할 수 있음.
( 그 아래에 있는  "Example Matrix ~~ 가져오기 오류" 라는 테이블은 무시해도 됨)



14. 다시 상단 메뉴의 "외부 데이타" 항목에서 이번엔 "Access" 를 선택



15. 다시 파일은 묻는 화면



16. 최초의 만들어진 폴더에서 "make_query.accdb" 를 선택



17. "확인"을 클릭



18. 지원되지 않는 필드 메세지는 "확인" 을 선택하고, 진행



19. 화면에서 "쿼리" 판을 선택하고, "모두 선택"을 클릭하여, 전체 쿼리 선택하고, "확인"



20. 화면 왼쪽 상단의 "테이블" 이름 평의 화살표를 클릭하여 나타나는 화면에서 "쿼리"를 선택



21. 그러면, 파일내의 모든 쿼리가 나타나는데,, 불러온 1~9번까지의 쿼리가 보이게 됨



22. 쿼리1번 부터 더블클릭을 시작하면, 다음과 같은 메세지가 나오는데, "확인"을 클릭하여 진행



23. 기존의 동일한 이름의 테이블이 존재하므로 삭제하겠다는 메세지가 나오게 됨.. "예"를 클릭하여 진행



24. 계속되는 화면에서도 "예"를 클릭하여 진행
     하나의 쿼리 동작이 끝나면, 다음 번호의 쿼리를 더블클릭  (번호 순서 준수)



25. 중간에 쿼리4번을 클릭하면 아래와 같은 화면이 나오는데.. 여기 빈칸에 "Default"를 적고 "확인"
     나머지 쿼리는 이런 화면이 없음.



26. 모든 쿼리 실행이 끝나면, 다시 상단의 "쿼리" 오른쪽의 화살표를 클릭하여 나오는 화면에서 "테이블" 선택



27. "gaslist" 라는 테이블을 더블클릭하여서 내용을 보면 엑셀파일의 매트릭스가 나뉘어서 들어가 있는 것을 볼 수 있음.. 작업 완료
이렇게 만들어진 db 파일을 window 에서 읽고, 계산을 실행하면 됨.




----------------------------------------------------------------------------------------------------
남은 문제점은 아래와 같이 오픈된 리스트의 상세를 들어가 보면 유리의 종류가 쉐이드로 선택되어져 있고, 이것을 유리로 변경해야 합니다.
"유리"만 선택하면 엑셀에서 만들어진 유리종류가 자동으로 선택이 되므로 종류만 변경을 하면 되는데.. 이 역시 해결이 되어야 완전한 변환이라고 보여집니다.

우선 이해를 돕고자 그림을 올려드립니다.





Comments

G 최종범 2012.01.17 16:14
이런 저런 시도를 해보아도 아무런 변화가 없는데, 제가 작동법을 잘 이해하지 못한것 같습니다.
엑세스에서의 작동법이 궁금합니다.
감사합니다.
M 관리자 2012.01.17 22:03
작동법의 내용에 추가하였습니다..
window에서의 오픈 문제는 좀 더 해보겠습니다. 마음이 급하실 터인데,, 손이 느려 죄송합니다.
M 관리자 2012.01.18 20:53
다 완성되었습니다.. 윈도에서 오픈하는 것도 모두 해결되었습니다만, 한가지 해결되지 않는 것이 있습니다.

윈도에서 db 파일을 오픈해서 여는 것은 아무런 문제가 없습니다만, 윈도의 글라스시스템가 가서 보면 유리가 아닌 쉐도우가 기본 설정으로 되어져 있습니다.. 이 것을 유리로 바꾸어 주어야 계산이 됩니다.
이 것까지 해결하고 올리려 하였으나, 시간이 너무 많이 흘러 일단 완성된 억세스파일을 올려드립니다.

쿼리를 첨부파일로 올려놓았습니다. 사용법은 본문에 있는 것과 같습니다.
다만, 쿼리의 숫자가 9개에서 12개로 늘었고, 1번부터 12번까지 더블클릭하여 실행하는 것은 동일합니다.
G 최종범 2012.01.19 00:41
많이 도와주셔서 감사합니다.

지금 윈도우를 돌려본 결과 현재는 shade를 glass로 일일이 바꿔줘서 결과가 나오는것 같습니다. 혹시 모든 조합에 shade를 glass로 setting해주는 방법은 없는것인지 알고 싶습니다.

추가질문으로는, 저번에 말씀드린것 처럼 혹시 각각 쿼리에 대한 간단한 설명이나 하는역할 같은 정보를 알고 싶습니다. access에 관한 책을 보면서 쿼리를 리뷰하고 있는과정에서 조금더 이해를 하고자 합니다.

그리고, 이전에 있었던 윈도우에서 구동중에 오류가 일어나는 것에서 어떤것을 수정하여 문제가 해결이 됬는지도 궁금합니다.

감사합니다.
M 관리자 2012.01.19 14:07
- 윈도에서 쉐이드로 기본 세팅이 잡히는 것은 일단 DB쪽 상황이기 보다는 윈도 내부의 문제 같습니다. 좀 더 해보겠습니다
- 기존 문제가 있었던 것에서 수정 사항은 해당 소재의 생성시간이 Timestamp 라는 이름으로 기록이 되는데.. 저는 필요없는 내용이라 생각하고 DB를 만들지 않았는데.. 윈도에서 인식을 해야 하는 항목이었습니다. 그래서 엑셀에는 없지만, 기존 w6.mdb 내의 소재 Timestamp를 읽어 들여서 기록을 해주었습니다.

- 각 쿼리에 대한 설명은 다음과 같습니다.
쿼리는 1~4번이 gaslist 테이블, 5~7번이 GlzSys 테이블, 8~12번이 GlassList 테이블을 위한 쿼리입니다.

Query01 :
DELETE * FROM gaslist WHERE ParentID>0;

-> 기존 gaslist 내용을 모두 삭제


Query02 :
INSERT INTO gaslist ( ParentID, [Index], ID, Thickness, Ventilated, Vvent, Tvent ) SELECT [Example Matrix].Option AS ParentID, 1 AS [Index], IIf([Gas1]='Air',1,2) AS ID, [Example Matrix].IGUthick AS Thickness, 0 AS Ventilated, 0 AS Vvent, 0 AS Tvent
FROM [Example Matrix];

-> gaslist 테이블에 ParentID, Index, ID, Thickness, Ventilated, Vvent, Tvent 의 내용을 기록하는데 그 내용은  Example Matrix 테이블에서 해당 내용을 가져오고, 일부는 임의의 숫자(0)를 넣음.
다만, 3중유리의 두번째 가스의 처리는 다음 쿼리로 넘김


Query03 :
INSERT INTO gaslist ( ParentID, [Index], ID, Thickness, Ventilated, Vvent, Tvent ) SELECT [Example Matrix].Option AS ParentID, IIf([Example Matrix].Gas2='0',1,2) AS [Index], IIf([Example Matrix].Gas2='Air',1,2) AS ID, [Example Matrix].IGUthick AS Thickness, 0 AS Ventilated, 0 AS Vvent, 0 AS Tvent FROM [Example Matrix] WHERE ((([Example Matrix].Gas2)>"0"));

-> 3중유리에서의 두번째 가스층을 처리. 기록방법은 2번 쿼리와 동일


Query04 :
UPDATE gaslist INNER JOIN gas ON gaslist.ID=gas.ID SET gaslist.GasTimestamp = [gas].Timestamp WHERE (gaslist.ID)=gas.ID And (gaslist.ParentID)>0;

-> 최종적으로 추가한 내용으로써 기존 gas 테이블에서 Timestamp 의 정보를 가져와서 gaslist 테이블에 넣음.


Query05 :
DELETE * FROM GlzSys WHERE ID>0;

-> 기존 GlzSys 테이블의 모든 내용 삭제


Query06 :
INSERT INTO GlzSys ( ID, Name, NLayers, EnvConditions, Tilt, Height, Width )
SELECT [Example Matrix].Option AS ID, [Example Matrix].Option AS Name, IIf([GlassID3]=0,(IIf([GlassID2]=0,1,2)),3) AS NLayers, 1 AS EnvConditions, 90 AS Tilt, 1000 AS Height, 1000 AS Width FROM [Example Matrix];

-> 내용이 지워진 GlzSys 테이블에  ID, Name, NLayers, EnvConditions, Tilt, Height, Width 의 내용을 입력하는데,, Example Matrix 테이블에서 정보를 가져옴


Query07 :
UPDATE GlzSys INNER JOIN EnvCond ON GlzSys.EnvConditions=EnvCond.ID SET GlzSys.EnvTimestamp = [EnvCond].Timestamp WHERE (((GlzSys.EnvConditions)=EnvCond.ID) And ((GlzSys.ID)>0));

-> 이 역시 최종 추가한 내용이며 GlzSys 테이블의 EnvTimestamp 의 내용을 기존 EnvCond 테이블의 Timestamp 내용을 가져옴


Query08 :
DELETE * FROM GlassList WHERE ParentID>0;

-> 기존 GlassList 테이블의 내용을 모두 삭제


Query09 : 
INSERT INTO GlassList ( ParentID, [Index], ID, Flip, ShadeFlag )
SELECT [Example Matrix].Option AS ParentID, 1 AS [Index], [Example Matrix].GlassID1 AS ID, 0 AS Flip, 0 AS ShadeFlag FROM [Example Matrix] WHERE [Example Matrix].GlassID1>0;

-> 지워진 GlassList 에 내용을 채우는데 정보는 Example Matrix 에서 가져옴. 여기서는 첫번째 유리만 옮김


Query10 :
INSERT INTO GlassList ( ParentID, [Index], ID, ShadeFlag )
SELECT [Example Matrix].Option AS ParentID, 2 AS [Index], [Example Matrix].GlassID2 AS ID, 0 AS ShadeFlag FROM [Example Matrix] WHERE [Example Matrix].GlassID1>0 and [Example Matrix].GlassID2>0;

-> 위와 기능은 같으나, 여기서는 두번째 유리 정보를 가져옴


Query11 :
INSERT INTO GlassList ( ParentID, [Index], ID, ShadeFlag )
SELECT [Example Matrix].Option AS ParentID, 3 AS [Index], [Example Matrix].GlassID3 AS ID, 0 AS ShadeFlag FROM [Example Matrix] WHERE [Example Matrix].GlassID1>0 and [Example Matrix].GlassID2>0 and [Example Matrix].GlassID3>0;

-> 역시 위와 기능은 같으나, 세번째 유리 정보를 옮김


Query12 :
UPDATE GlassList INNER JOIN Glass ON GlassList.ID=Glass.ID SET GlassList.GlassTimestamp = [Glass].Timestamp WHERE (((GlassList.ID)=Glass.ID) And ((GlassList.ParentID)>0));

-> 이 역시 최종 추가된 내용이며, GlassList 테이블내의 GlassTimestamp 정보를 Glass 테이블의 Timestamp 내용에서 가져옴


이상입니다.

ps. 통상적인 경우 재학생의 리포트는 실마리의 제공만 해드리고, 내용을 건드리진 않았습니다만, 이번은 해외에 계신 분이라 도를 넘어 간섭을 하였습니다. 아무쪼록 좋은 지식 쌓고 오셔서 조국의 미래를 위한 디딤돌이 되시길 기원하겠습니다.
M 관리자 2012.01.20 00:44
모두 해결되었습니다.
윈도에서도 모든 리스트가 유리로 선택되어져 실행됩니다.
이유는 DB에 있었습니다. 예상치 않게 GlzSys 테이블에 있지 않고, GlassList 테이블의 ShadeFlag 의 값을 인식하였습니다.

상부의 쿼리 첨부파일도 수정된 파일로 변경해 놓았고, 아래의 쿼리 설명 글도 변경된 쿼리 설명글로 변경했습니다..

그럼.. 좋은 결과 있으시길 바라겠습니다.
G 최종범 2012.01.20 09:16
네. 그동안 도와주셔서 너무나 감사드립니다.