'개발 Tip'에 해당되는 글 25건

  1. 2009.10.03 [jQuery] Safari 4, Opera 10, Chrome에서 jQuery 동작 안하는 문제
  2. 2009.09.08 [FF, Jeus, CSS] Jeus-WebToB 환경의 CSS가 파이어폭스에서 적용안되는 문제 (8)
  3. 2009.09.04 [JAVA, WSDL] 기상청 웹서비스를 이용한 기상정보 조회 (26)
  4. 2008.09.08 [CrystalReports] Crystal Reports(크리스탈리포트) 2008 웹 배포 방법 (17)
  5. 2008.09.08 [VB] FTP 기능 담당 모듈
  6. 2008.08.27 [ASP.Net2.0] 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정
  7. 2008.08.26 [ASP.Net2.0] GridView에서 사용하는 이벤트들 정리 (16)
  8. 2008.08.23 구글 날씨 API용 국내 주요 시/군 코드 정리 (6)
  9. 2008.08.20 [AIR] 구글 날씨 API를 이용한 날씨 정보 유틸 (6)
  10. 2008.08.12 [VB] 비주얼베이직에서 스크롤 가능하게 설정
  11. 2008.08.12 [ASP.Net2.0] XML 문서 만들기 & 이미지 문서 만들기
  12. 2008.08.11 [VB.Net] PostgreSQL 데이터 조회하기
  13. 2008.08.11 [VB.Net] PostgreSQL OleDB 연결하기
  14. 2008.08.11 [VB.Net] PostgreSQL 데이터 입력하기
  15. 2008.08.11 [ASP.Net2.0] GridView를 Excel 출력하기
  16. 2008.08.11 [ASP.Net2.0] 마스터 페이지 사용시 Request 문제
  17. 2008.08.11 PostgreSQL 설치하기
  18. 2008.08.07 [VB] 스캐너 제어 라이브러리
  19. 2008.08.05 [CrystalReports] Crystal Reports(크리스탈리포트) 인쇄 버튼 클릭시 인쇄 설정 팝업창 나오게 설정하기
  20. 2008.08.05 [CrystalReports] Crystal Reports(크리스탈리포트) 런타임시 실행
  21. 2008.08.01 [ASP.Net2.0] GridView 웹 서버 컨트롤에 바인딩된 행에 대한 대량 업데이트 수행
  22. 2008.08.01 [ASP.Net2.0] GridView 행 추가하기
  23. 2008.07.29 Keil C51 C Compiler
  24. 2008.07.29 EDID(Extended Display Identification Data)
  25. 2008.07.29 [ASP.Net2.0] GridView RowSpan 적용예제 (4)

[jQuery] Safari 4, Opera 10, Chrome에서 jQuery 동작 안하는 문제

View Comments

프로젝트를 진행하면서 여러가지 어려움을 겪긴 하지만 하다보면 어이없는 상황도 있다.

이번 경우가 그런 경우인지는 모르지만 조금은 어이없는 경우.

웹 화면의 깜빡임을 최소화하고 Form을 submit하고 난 후 하얀 배경에 경고창만 떨렁 나오는 걸 막기 위해 jQuery Form을 사용하는데

이걸 이용해 로그인하는 화면에서 Safari 4, Opera 10, Chrome에서 동작을 안하는 문제가 생겼다.

IE와 파이어폭스에서는 정상 동작하는데 왜 그런지를 몰라서 한참이나 이리저리 손보고 있었는데 코드를 잘못 짰는가 싶어 살펴보기도 하고

이리 저리 수정을 해봐도 도통 답이 안나온다. jQuery 사용한 페이지 대부분이 Safari 4, Opera 10, Chrome에서 작동 불능이 되었다.

구글 검색을 해봐도 그 문제에 대해선 못찾다가 jQuery 버전을 가장 최신인 1.3.2 버전을 사용중이었는데 버전을 낮춰보기로 했다.

1.3대 버전 보다는 그 전의 1.2.6 버전을 써보기로 해서 다운받아 적용해보니 1.3.2에서 안되던 Safari 4, Opera 10, Chrome에서 정상 작동한다.

1.3.2 버전에서 뭔가 버그가 있는지는 모르겠지만 어쨌든 해결이 됐으니 다행이지 그래도 안되면 어떡하나 싶다.

이거 말고도 웹접근성 맞추는 것때문에 고생인데 힘들구나~

[수정]

1.2.6을 쓰니 기존 라디오 셀렉트 부분에서 문제가 생긴다. 1.3.1 버전을 사용하니 모든게 해결. 근데 잘 모르겠네....휴~

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[FF, Jeus, CSS] Jeus-WebToB 환경의 CSS가 파이어폭스에서 적용안되는 문제

View Comments

현재 개발중인 관공서 홈페이지에서 조금은 황당한 오류를 경험했다.

일반적인 톰캣 서버에서는 발생안하는 문제인데 디자인을 위한 CSS가 IE에서는 잘 되는데 파이어폭스나 크롬에서는 CSS 적용이 안되는 문제가 발생했다.

일단 이런 문제가 있으면 검색을 통해 찾아보는데 다음과 같은 내용이 검색된다.


위 내용에서 보면 제우스와 웹투비 환경에서의 설정문제인걸로 나온다.

문제해결을 위해선 제우스 홈디렉토리 아래 webserver폴더의 config 하위 폴더에 있는 http.m 설정파일을 수정해주어야 한다.

위의 블로그에선 http.m 설정파일의 MimeType 설정 내용 중 css 내용을 아래와 같이 변경해주라고 하는데

css         MimeType = "text/css",                      SvrType = HTML

위와 같이 해도 내가 개발중인 환경에선 해결이 되지 않는다.

결국 제우스를 관리해주는 엔지니어에게 문의하니 http.m 설정파일에서 아래와 같은 설정내용을 추가하니 해결이 된다.

htc         MimeType = "text/x-component",              SvrType = HTML (추가)
#txt        MimeType = "text/plain",                    SvrType = HTML (주석처리)

조금은 어이없게 해결이 되었는데 톰캣이나 다른 쪽에선 별다른 설정없이 되는 걸 왜 저렇게 설정을 해줘야 돌아가게 해두었는지 모르겠다.

개발프로젝트마다 환경이 다르겠지만 저런 건 기본적으로 되어야되는 문제가 아닌가 싶다.

현재로선 제우스와 웹투비와 같이 돌아가는 환경에서만 발생되는 문제인지 제우스만 돌렸을 때는 정상적으로 되는지는 확인 못함.

일단 해결은 되었으니 다행이긴 한데 좀 어이없는 문제.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

8 Comments (+add yours?)

  1. Favicon of http://boring.tistory.com/ BlogIcon 보링보링 2009.09.10 02:15

    항상 배우려고하는데..오호 볼때마다 어려운 컴퓨터의 세계입니다..ㅠ.ㅠ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.09.10 09:13 신고

      ㅎㅎㅎ 뭐 시작하기전엔 어렵다 생각하지만 스타트를 끊으면 어렵지 않아요~

       Address

  2. Favicon of http://toyvillage.net BlogIcon 라이너스 2009.09.16 18:21

    회사에 누군가가 파폭을 깔아놨길래
    써봤는데 매우 안정적이더군요. 에러도 잘안나고^^;
    그간 잘지내셨는지요.
    요새 통 포스팅도 없으시구^^;
    좋은 하루되세요~

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.09.16 18:27 신고

      파폭이 좋죠. 크롬도 이번에 3.0이 되면서 빨라졌다고 하고 ^^; 그래도 아직까진 플러그인이 많은 파폭이 좋네요. ㅎㅎ
      포스팅이야 자주 해야되는데...전 라이너스님 글이 안올라오길래 잠시 쉬시나 했어요;;;
      알고 봤더니 아침에 RSS에 글이 많길래 안읽고 그냥 읽은 글 처리해버렸더니 항상 글을 못보네요 ^^;;;
      라이너스님도 즐거운 하루 되시길 ^^

       Address

  3. Favicon of http://blog.daum.net/teriouswoon BlogIcon 테리우스원 2009.09.29 17:30

    좋은 작품 잘 감상하오며
    즐거운 오후 시간으로 승리하시길

    사랑합니다 행복하세요!!

     Reply  Address

  4. fantast 2010.11.17 06:27

    안녕하세요. 웹페이지 하나를 수정하면서 css를 사용해서 풀다운 메뉴를 만들었습니다. 그런데 ie에서는 잘 되는데 fire fox에서는 깨져서 나와서 알아보려고 웹서핑을 하다가 이곳까지 왔네요. 근데 윗 글을 읽어도 무슨 말인지 잘 모르겠습니다. 저에게 도움을 주실수 있으시겠어요? 감사합니다. 이메일 연락 기다릴께요. ffantast@hotmail.com 감사합니다.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2010.12.05 16:55 신고

      메일로 답변드렸는데 아마 제가 쓴 글의 내용과는 다를 듯 합니다.
      메일 확인하세요 ^^

       Address

Leave a Reply

0 Tracbacks (+view to the desc.)

[JAVA, WSDL] 기상청 웹서비스를 이용한 기상정보 조회

View Comments

이번 관공서 프로젝트를 진행하던 중 기상정보를 조회할 수 있는 기능이 들어가야되서 기상청에서 제공하는 웹서비스를 이용하게 됐다.

WSDL이라는 XML형태로 제공되는 웹서비스 기술언어를 이용하는데 이번 프로젝트에서 처음 접해보는 거라 적용하는데 애를 먹어서

다음 번에 비슷한 작업을 하게 될 경우를 대비해서 정리해 본다.

기상청 웹서비스는 현재 개인에게는 서비스는 하지 않고 관공서나 방재관련쪽에만 서비스를 한다고 한다. (관련 Q&A)

혹시나 관공서쪽 프로젝트를 하면서 기상청 웹서비스를 이용하고자 한다면 기상청에 웹서비스 이용신청서를 작성하여 서비스 이용에 필요한 아이디와 패스워드를 발급받아야 이용 가능하다.

WSDL로 제공되는 기상청 웹서비스는 WSDL 형태로 제공이되고 현재 사용할 프로젝트에 적용하기 위해선 언어에 맞는 Client Stub으로 변환할 필요가 있다.

참여중인 프로젝트는 JAVA를 이용하기에 JAVA에서 쓰기 위한 Client Stub으로 변환하는 방법에 대해서만 정리한다.

   WSDL을 Client Stub으로 변환  

WSDL을 이용하여 Client Stub으로 변환하기 위해서 기상청 시스템 담당자로부터 전달받은 메뉴얼은 작년에 작성된 문서이고 정작 중요한 부분이 설명이 안되어 있어서 그대로 보고 변환하고자 하기엔 어렵다.

JAVA에서 WSDL을 변환하는 유틸은 AXIS 라이브러리를 쓰기도 하고 WAS에서 제공하는 유틸을 사용하기도 한다.

현재 프로젝트에서는 jeus를 사용하기때문에 jeus에서 제공하는 유틸을 이용하기로 한다.

jeus가 설치되어있지 않다면 TmaxSoft 테크넷에서 Trial버전을 다운받아 설치한다. 회원 로그인을 해야만 다운로드가 가능하다.

jeus를 설치하고 jeus 홈 디렉토리의 samples 폴더 아래에 ant_task란 폴더에 보면 wsdl2java란 예제 폴더가 있고 그 안에 genclient 폴더에 보면

build.xml이 있는데 그 파일과 samples 폴더 아래의 common 폴더를 이용하면 된다.

build.xml의 내용을 보면

<?xml version="1.0" encoding="UTF-8"?>
<project name="SurfaceService" default="build" basedir=".">
    <property name="is.app-client.module" value="true"/>
    <import file="./common/common-build.xml"/> -- common-buil.xml의 경로는 자신에게 맞는 경로로 변경
    <taskdef name="wsdl2java" classname="jeus.util.ant.webservices.Wsdl2JavaTask">
        <classpath refid="jeus.libraries.classpath"/>
    </taskdef>
    <target name="-pre-compile">
        <mkdir dir="${build.classes.dir}"/>
        <wsdl2java destDir="${build.classes.dir}"
            verbose="true"
            mode="gen:client"
            doCompile="true" -- true이면 JAVA 소스와 컴파일된 파일이 생성되고 false이면 JAVA소스만 생성
            noDataBinding="false"
            package="kma.websky.client.stub.forecast" -- 변환된 JAVA소스가 담길 package 정의
            wsdl="http://websky.kma.go.kr/services/SurfaceService?wsdl"> -- 변환할 서비스의 WSDL 주소
            <classpath refid="jeus.libraries.classpath"/>
            <classpath refid="classpath"/>
        </wsdl2java>
    </target>
</project>

위 표시된 부분을 자신의 프로젝트에 맞게 변경하여 cmd창에서 위 build.xml파일이 위치한 경로에서 jant를 실행하면 아래 그림과 같이 실행된다.

참고로 기상청 웹서비스 목록은 http://websky.kma.go.kr/ 사이트에서 확인 가능하고 위에서 사용된 WSDL은 지상 웹 서비스이다.

build

WSDL을 JAVA로 변환하기 위한 build


이렇게 변환을 하고 나면 build.xml이 위치한 폴더에 build 폴더와 dist란 폴더가 생성이 되고 build 폴더에는 build.xml에서 정의한 package 경로에 변환된 소스들이 생성이 되고 dist 폴더에는 해당 소스를 압축한 jar 파일이 생성된다.

생성된 것들 중 편한대로 사용하면 된다. jar파일을 이용하고자 하면 WEB-INF 폴더의 lib폴더에 jar파일을 넣어서 사용하면 되고 JAVA소스를 이용하고자 한다면 src폴더아래에 두고 사용하면 된다.

   변환된 Client Stub 사용에 필요한 라이브러리  

Client Stub으로 변환 후 프로젝트에 사용하고자 한다면 변환된 JAVA소스에서 사용하는 관련 라이브러리도 필요하다.

아래 목록이 그 라이브러리들이다.

bootstrap.jar
FastInfoset.jar
javax.jms.jar
jaxrpc-api.jar
jaxrpc-impl.jar
jaxrpc-spi.jar
jaxws-rt.jar
jeus.jar
jeusapi.jar
jeusutil.jar
jeus-ws.jar
saaj-impl.jar

 - 참고1 : 빨간색으로 표시된 jar 파일은 아래 첨부파일을 다운받아 사용하면 된다.

 - 참고2 : 빨간색의 굵게 표시된 JAR파일을 제외하고 나머지 jar 파일은 JEUS 설치 후 JEUS 홈디렉토리 아래 \lib\system 폴더 하위에 존재한다.

   소스에 적용하기  

기상청에서 제공하는 많은 웹서비스들이 있고 각 서비스마다 조회 가능한 기상정보들이 많기 때문에 다 쓸 필요는 없고 필요한 서비스만 가져다 쓰면 된다.

해당 웹서비스의 WSDL을 JAVA 소스로 변환하여 프로젝트에 추가한 후 아래와 같이 사용하면 된다.
/**
* 기상청 웹서비스 관련 Util Class
*/
public class KmaWeatherUtil {
private static SurfaceServiceImplService_Impl impl = null;
private static SurfaceServiceImpl_Stub service = null;

/**
* Default Constructor
*/
public KmaWeatherUtil() {
impl = new SurfaceServiceImplService_Impl();
service = (SurfaceServiceImpl_Stub)impl.getSurfaceService();

service._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "발급받은 ID");
service._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "발급받은 Password");
}

/**
* 주어진 지점코드와 시간의 현재 기상정보를 받아온다.
* @param station_id
* @param time
* @return
* @throws RemoteException
*/
public CurrentWeatherModel getCurrentWeatherInfo(String station_id, String time) throws RemoteException {
return service.getCurrentWeather(station_id, time);
}
}

// 실제 사용하는 부분
// 143은 대구의 지역코드이고 2번째 인자는 String 형태(yyyyMMddHH)의 시간이며 null은 현재 시간
KmaWeatherUtil kmaWtUtil = new KmaWeatherUtil();
CurrentWeatherModel curWtInfo = kmaWtUtil.getCurrentWeatherInfo("143", null);
위 소스에서 getCurrentWeatherInfo 함수는 현재 시간의 기상정보를 가져오고 필요한 파라메터는 조회하고자 하는 위치코드(station_id)와 조회를 원하는 시간(time)을 넘겨주면 되고 현재 시간의 기상정보를 얻을려면 null값을 넘겨주면 된다.

JSP에서 표시되는 결과는 아래 그림과 같이 나온다.

결과


이상으로 변환에 대한 정리를 마친다. 현재 프로젝트에서 사용하는 건 현재 기상정보만을 사용하기때문에 함수 하나로 간단하게 되지만 서비스하고자 하는 기능이 많다면 좀 더 복잡해질거라 본다.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

26 Comments (+add yours?)

  1. Favicon of http://raycat.net BlogIcon Fallen Angel 2009.09.04 13:20

    상당히 어려워 보이게 느껴지는....@.@;;;;

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.09.04 13:27 신고

      ㅎㅎㅎ 개발에 대해서 모르시는 분들이야 뭐 그냥 외계어처럼 보이겠죠;;;
      사실 저도 어려워요 ㅠㅠ

       Address

  2. 2009.09.05 08:26

    비밀댓글입니다

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.09.05 11:12 신고

      블로그보단 트위터를 자주 하니 뭐 ㅋ
      알려주신 기능 자주 사용해보께요 ^^
      주말 잘 보내시구요 ㅎㅎ

       Address

  3. Favicon of http://boring.tistory.com/ BlogIcon 보링보링 2009.09.08 02:03

    html만 보면 울렁증이..@.@어지러워요~ㅎ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.09.08 09:02 신고

      ㅎㅎㅎ 뭐 엄밀히 말하면 html이 아니라 java인데요?;;;
      오늘 하루 즐겁게 보내세요 ^^

       Address

  4. 2009.11.05 13:33

    비밀댓글입니다

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.11.05 14:51 신고

      닷넷을 이용하신다면 이 글에 적힌 방법으로는 안됩니다 ^^;
      이 글은 자바 기준으로 변환하는 방법이구요.
      구글에서 닷넷용으로 찾아보시길 권해드립니다.
      닷넷으로 할때는 웹참조를 이용하면 된다고 하는데 닷넷으로 하는 방법은 해보지를 않아서 정확한 방법은 잘 모르겠네요.
      혹시 ASP.NET이라면 아래 링크를 참고해보세요.

      첫번째 : http://msdn.microsoft.com/ko-kr/library/7bkzywba%28VS.80%29.aspx

      두번째 : http://quickstarts.asp.net/QuickStartv20/webservices/

      큰 도움이 못드려서 죄송합니다 ^^;

       Address

  5. 궁금이 2009.11.11 11:40

    jeus4버전에서는 어떻게 해야 하나요?
    환경 Dir 경로도 없고 관련 파일도 없는거 같은데 jeus4에서도 가능한가요?

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.11.11 12:03 신고

      제우스 홈 디렉토리 아래에 샘플 디렉토리에 wsdl2java 예제 폴더가 없던가요?
      비슷한 예제가 있을것 같은데...
      지금은 제가 일때문에 확인을 못해볼 것 같구요.
      저녁때쯤 확인해보고 다시 답변달아드리께요 ^^;

       Address

  6. 궁금이 2009.11.11 12:38

    네.. wsdl2java 가 없더라구요.

    저도 기상정보를 받으려는데 운영자 지침서를 받아서 보고있습니다.

    그런데 JEUS5.0 기준 설명이라 나와 있고

    무슨 소린지 알지 듣지를 못하겠습니다.

    build.xml, tasks.xml, taskdef.xml 만들어서

    빌드 실행해서 서비스 호출하라는데...

    여기가 설명을 더 잘해주셨네요..

    그런데 JEUS4 버전인데 JEUS4에서는 어떻게 해야하는지 궁금합니다.

    감사합니다.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.11.11 18:16 신고

      저랑 같은 운영자 지침서를 받으신 모양이네요;;;
      거긴 설정파일은 설명되어있는데 정작 필요한 파일에 대한 자세한 설명이 없어서 저도 몇일 헤맸어요 -ㅅ-;
      지금 플젝 막바지라서 좀 바쁘군요 ㅎㅎ
      저녁시간대라 저녁먹고 살펴보고 답변달아드리께요 ^^;

       Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.11.11 19:29 신고

      음...제 컴퓨터에 윈도우용 Jeus4.2를 깔아서 살펴봤는데 이게 보니까 wsdl2java란 실행파일 자체가 없군요;;;
      변환할때 저 파일을 이용하는데
      Jeus4.x 버전대에는 다른 파일로 하는건지 아님 웹서비스 자체가 안되는건지 잘 모르겠네요 ^^;;

      http://technet.tmax.co.kr/
      위 사이트가 티맥스소프트 테크넷인데 저기 Q&A에서 담당자한테 물어봐야될듯 합니다.

      Jeus6버전대로 변환해서 사용이 가능하면 좋은데 그게 될지도 잘 모르겠네요.

      저도 이번 플젝에서 처음 사용해본거라 상세한 답변드리긴 힘들 것 같아요;;;

       Address

  7. 궁금이 2009.11.12 10:05

    답변 감사드립니다.

    티맥스에 문의를 해야 겠네요. ^^;

    좋은 하루되세요.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.11.12 10:17 신고

      네 해결을 위한 답을 못드려서 같은 개발자로서 미안하네요 ^^;
      아무쪼록 잘 해결되길 바랍니다 ^^

       Address

  8. 초보개발자 2010.08.24 14:18

    너무 좋은 정보 감사합니다.
    현재 JEUS를 이용해서 기상정보 시스템이랑 연동중인데요.
    WSDL 서비스를 한번에 여러개 사용하고 싶으면 어떻게 하면 될까요?
    생각나시는 방법 있으시면 좀 알려주세요.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2010.08.24 21:57 신고

      흠..여러개를 사용하시고자 한다면 위와 같은 작업을 해서 jar 파일로 만들거나 java 소스 패키지 형태로 만드셔서 프로젝트에 추가하여 사용하면 될거라 생각합니다.
      정말로 그냥 생각뿐이지만 그렇게 해도 될거 같은데요? ^^;

       Address

  9. 2010.10.21 10:00

    비밀댓글입니다

     Reply  Address

  10. 제우스만초보 2010.10.29 00:01

    지금 전자정부프레임워크를 이용하여 제우스와 연동을 해야 하며 기상청 서비스도 받아야 합니다.

    문제는 전자정부프레임워크와 제우스 연동이네요.. 연동이 되야 저걸 어케든 적용시켜볼겐데.. ㅠㅠ

    혹시 전자정부프레임워크와 제우스 및 웹2비 연동은 안해보셨나요?
    -_-;;

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2010.11.04 13:45 신고

      죄송합니다 제가 바빠서 블로그 관리가 소홀하네요 ^^;
      제우스와 웹투비, 전자정부 프레임워크 연동은 해본적이 없군요;;
      근데 java를 이용한다면 크게 차이는 없을거라 생각합니다 ^^;
      자세히 설명을 해드리고 싶지만
      제가 설명을 해드릴 수 있는 범위는 본문에 있는 글 정도 밖에 안될 거 같습니다 ^^;

       Address

  11. BlogIcon 비드고슈제 2011.08.03 17:57

    현재도 이 웹서비스가 실행되고 있나요? ㅠ
    JSP에다가 "실제 사용하는 부분의 소스"를 적고 페이지를 열면
    "예기치 않은 null" 이라는 오류가 나네요 ㅠㅠㅠㅠ
    혹시 호출하는 부분의 소스를 보여주실수 없으실려나요? ㅠㅠㅠ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.08.03 21:27 신고

      네 저걸 적용한 관공서 사이트는 현재도 운영중에 있습니다.
      근데 저 웹서비스는 관공서에서 기상청에 공문으로 요청하여
      아이디와 비밀번호를 발급받아 사용하는 모듈입니다.
      저희와 똑같이 아이디와 비밀번호 발급을 받으셨다면 모르겠지만
      아니면 저걸 그대로 사용은 못할거에요 ^^;

       Address

  12. 비드고슈제 2011.08.05 13:39

    예기치 않은 null은 기상청에서 막아놓은 오퍼레이션을 호출할 경우에 발생하네요. 저는 아이디를 발급받아 놓을걸 받아서 써서 이런 사항을 몰랐는데, 혹시나 해서 참고하실분 하시라고 끄적여 놓습니당 ㅠㅠ 헌데,
    "일련화 해제 오류: 예기치 않은 XML 판독기 상태입니다. END을(를) 예상했지만 START: {http://xml.apache.org/axis/}stackTrace이(가) 검색되었습니다." 이 오류 아시는분 혹시 있으신가요? ㅠㅠ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.08.05 13:51 신고

      xml 파싱하는 부분이 잘못된거 아닐까요?
      파싱하면서 발생되는 부분 같은데요 ^^;

       Address

  13. 개발자 2012.10.24 14:04

    eclipse의 web service를 이용하여 client stub으로 변환하여 기상특보 웹서비스(WarningService) 연결이 정상적임을 확인했습니다.
    위성 웹서비스(SatelliteService)를 똑같은 형식으로 호출하였더니..
    java.lang.RuntimeException: No support for attachments
    org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)
    org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
    org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    org.apache.axis.client.Call.invoke(Call.java:2767)
    org.apache.axis.client.Call.invoke(Call.java:2443)
    org.apache.axis.client.Call.invoke(Call.java:2366)
    org.apache.axis.client.Call.invoke(Call.java:1812)
    kr.go.kma.websky.services.SatelliteService.SatelliteServiceSoapBindingStub.getSatelliteImage(SatelliteServiceSoapBindingStub.java:170)
    kr.go.kma.websky.util.SatelliteUtil.getSatelliteImage(SatelliteUtil.java:33)
    org.apache.jsp.SatelliteService_jsp._jspService(SatelliteService_jsp.java:57)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    이와 같은 에러가 발생하더군요. 어떤 차이가 있는건가요?
    해결방법은?

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2012.10.25 15:53 신고

      java.lang.RuntimeException: No support for attachments

      이 부분을 살펴봐야할 것 같습니다.

      어떤 방식으로 어떤 데이터를 이용하실려는 건지는 모르겠지만 처음 보는 오류 메시지네요.

       Address

Leave a Reply

0 Tracbacks (+view to the desc.)

[CrystalReports] Crystal Reports(크리스탈리포트) 2008 웹 배포 방법

View Comments




* 근 3주간 크리스탈 리포트 2008버전의 웹 배포 방법을 몰라 삽질을 해댄 후 방법을 알아내서 공유합니다.
혹시나 크리스탈 리포트 2008버전의 웹 배포에 어려움을 겪으시는 분들에게 참고가 되었으면 합니다.

1. 우선 작업하기 전에 [ASP.Net2.0] Crystal Repors(크리스탈리포트) 인쇄 버튼 클릭시 인쇄 설정 팝업창 나오게 설정하기 글에 참고 웹사이트에 있는 내용을 참고바란다.
    - 크리스탈 리포트 작업시 크리스탈 리포트를 위한 웹사이트를 기준 웹사이트와 별개로 따로 생성을 해야함.

2. 크리스탈 리포트 웹사이트 프로젝트가  열려있는 상태에서 <그림1>과 같이 파일 메뉴에서 추가를 선택하여
    새 프로젝트를 선택하여 <그림2>에 보이는 템플릿 중에 웹 설치 프로젝트를 선택하여 생성한다.

3. 추가된 프로젝트에 기본 컨텐츠 및 병합모듈을 추가한다. 기본 컨텐츠 (크리스탈 리포트 프로젝트 소스 컨텐츠)는 이미 등록이 되어있다.
크리스탈 리포트 2008 배포 시 필요한 병합모듈은 “C:\Program Files\Common Files\Merge Modules” 위치 시켜야 한다.
- Crystal Reports 2008용 Merge Modules(병합모듈)
  
- 추가적인 Merge Modules(병합모듈) : 다운로드

<그림3>에서 생성한 WebSetup 프로젝트에서 마우스 오른쪽 버튼 클릭 후 추가를 눌러 병합모듈을
<그림4>에서 보는 것처럼 다운받은 병합모듈을 필요한 파일만 선택하여 프로젝트에 추가한다.

4. 추가한 병합 모듈 중 <그림5>에서 보는 것처럼 CRRuntime_12_0.msm 파일의 속성을 선택하여 <그림6>과 같
이 Keycode 부분에 크리스탈 리포트의 라이센스키를 입력해준다.
(참고 : 정식 라이센스키가 있다면 정식키를 입력해주고 Trial버전을 설치하였다면 Trial키를 넣어준다.)


5. 컨텐츠 및 병합모듈의 추가가 끝났다면 웹 설치 프로젝트를 빌드 한다.
빌드 후 프로젝트 폴더에 Debug 폴더에 가면 WebSetup.msi 파일이 생성되어 있을 것이다.
(Release 모드로 빌드를 했다면 Release 폴더에 생성)

6. 생성된 WebSetup 파일을 실행하여 설치를 진행을 한다.
설치시 경로는 크리스탈 리포트를 호출하여 사용하는 웹사이트의 경로에 설치를 하고 설치 가상 디렉토리는
크리스탈 리포트 프로젝트 생성할 때 만든 이름으로 생성하여야 한다.(<그림7> 참고)
설치시 <그림8>에서 보는 것처럼 DLL 등록실패 에러가 뜨는데 크리스탈 리포트가 설치가 안된 서버에서
DLL을 등록하기 위한 부분인데 이미 크리스탈 리포트가 설치되어 있는 상태에서 실행을 하였기 때문에
뜨는 에러이기 때문에 여기서는 그냥 계속을 눌러서 설치 완료를 한다.

7. 설치가 완료된 후 해당 폴더에 보면 기존 웹사이트 폴더에 설치한 CR 폴더가 위치해 있는 걸 볼 수 있다.
(<그림9> 참고)
이 상태에서 실행시 자바스크립트 에러가 발생하는 경우가 있는데 이때에 CR 폴더와 동일한 레벨 위치에
IIS 사이트 루트(interpub\wwwroot\) 폴더 아래에 위치한 aspnet_client 폴더를 복사해와서 두면 된다.(<그림10> 참고)


이상으로 Crystal Reports 2008(크리스탈 리포트 2008)의 웹 배포 방법에 대한 설명을 마친다.

※ 설명이 제대로 되었는지는 모르겠습니다. 3주간 삽질하다가 아래 직원이랑 같이 찾아본 결과 겨우 배포방법을 찾아서 이번에 진행하는 프로젝트에 적용을 하면서 정리를 한다고 했는데 이게 다른 프로젝트에도 제대로 배포가 될지는 모르겠네요. 일단 현재 진행중인 프로젝트에서는 잘 실행이 되는군용~^^;
크리스탈 리포트 2008 Trial 버전으로 작업을 하였는데 프로젝트를 제안한 곳에서 정식CD를 구매를 하긴 했는데 크리스탈 리포트 원제작사가 SAP이란 회사에 합병되면서 CD 발송이 늦어지고 있다고 하네요.
주문은 7월말에 했는데 아직 도착을 안하고 있다는 ㅡㅡ^
정식CD에 배포와 관련한 메뉴얼이 있을지는 모르겠지만 만약에 있다면 욕나올 듯 합니다 ㅡㅡ;
어찌됐든 배포 성공해서 프로젝트 종료가 가능했네요. 후~



* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.

17 Comments (+add yours?)

  1. OTL 2009.03.19 15:03

    이미지가 깨져서 하기가 힘드네요 ㅜㅠ.

     Reply  Address

  2. 대박이넹~ 2009.06.19 17:22

    흠..12_0.msm 파일 다운로드가 안되네요.
    죄송한데 파일좀 올려 주실수 있나요??
    부탁합니다.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.06.19 22:13 신고

      언제 보실지는 모르겠지만 제가 다운받아서 분할압축하여 올려두었습니다.
      이상하게 저놈은 링크가 깨지더라구요 ^^;

       Address

  3. 2009.06.22 09:41

    비밀댓글입니다

     Reply  Address

  4. 2009.08.05 17:35

    비밀댓글입니다

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.08.05 17:42 신고

      네이트 친추하도록 하겠습니다. 저도 일하는 중이고 저녁시간이 다 되가는지라 성실한 답변을 드릴 수 있을지 모르겠네요 ^^;

       Address

  5. 도원 2009.09.25 16:17

    죄송합니만, 혹시 아래와 같은 에러가 뜨면서 엑세스 파일을 열수없는 문제는 왜 발생하는 걸까요? CR은 2008버전을 쓰고 있고 오피스는 2003, sp3 사용하고 있으며 엑세스 파일자체에 암호는 걸지 않았습니다. 질문하는 곳은 아닌것 같은데.. 급한 마음에.. 죄송합니다.

    Error Message in Crystal Report
    Logon Failed.
    Details: DAO Error Code: 0xbd5
    Source: DAO.DbEngine
    Descriptiion: Not a valid account name or password

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.09.25 20:33 신고

      정확하게 어떤 내용인지는 잘 모르겠습니다만...혹시 DB와 연결하여 사용중이신가요?
      아마 DB 연결할 때 쓰는 계정 정보가 잘못되서 나오는 에러인 것 같네요.
      DB를 뭐 쓰시는 지 모르겠지만 DB 계정 정보를 한번 확인해보시기 바랍니다.

       Address

  6. 배달의기수 2009.12.09 20:27

    분할 압축된 파일이 풀리지 않네요.
    파일이 잘못된건가요... 아님 제가 잘못한건가요?
    파일 하나로 그냥 올리시면 안되나요?
    꼭 부탁드립니다.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.12.09 23:28 신고

      파일 하나로 올리기엔 용량이 너무 커서 한번에 안올라가서 올렸어요.
      압축은 7zip으로 분할압축하였습니다.
      알집이나 빵집으로 푸셨다면 안풀릴 수도 있어요.

      http://www.7-zip.org/
      위 사이트에서 7zip 설치 후 압축해제하시면 됩니다.

       Address

  7. 박상곤 2010.02.11 07:34

    안녕하세요 웹으로 크리스탈 리포트를 만들고 있습니다.

    저도 님처럼 다 완성 시킨다음 웹사이트에 배포를 할려니 저런 문제가

    발생하였습니다.

    그러던중에 님이 올려준 이 포스팅을 보게 되었구요.

    하지만 포스팅에 올려진대로 해보아도 여전히 문제가 발생하는 군요

    저희 회사는 회사 자체에 웹서버가 있는게 아니고 다른 업체 웹 호스팅 업체를

    통해서 서비스를 하고 있는데 그쪽 웹호스팅 업체에서 닷넷 크리스탈

    리포트를 지원하지 않아서 일까요??

    마지막 부분을 좀더 자세히 설명해주시면 고맙겠습니다.

    그럼 연락 기달리겠습니다

    멜로 답변 가능할까요?

    psgzzang@hotmail.com

     Reply  Address

  8. 보초초보 2010.04.23 16:38

    필요한 병합모듈이라는것은 어떤것을 기준으로 선택하는건가요
    CrystalReportRedist2005_x86.msm은 비주얼스튜디오 2005에서 만들어서
    쓰신건가요 비주얼 스튜디오2008에서 만들면 다른것을 써야하는 것인가요

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2010.04.26 15:05 신고

      헉..요즘 블로그 관리를 못하고 있는지라 이제써야 질문을 봤네요. 죄송합니다 ㄷㄷ; 요즘 바쁜 시즌이라 ^^;
      이글을 작성한지가 2년전이라 기억은 잘 안나는데 작업 당시에 Visual Sudio 2005로 작업을 하였던걸로 기억합니다.
      아마 Visual Sudio 2008로 작업시에는 해당 버전에 맞는 걸로 작업하셔야 할 듯 합니다.
      명확한 답변을 드리지 못해서 미안하네요 ^^;;

       Address

  9. 삼룡룡이 2011.03.28 13:39

    6. 생성된 WebSetup 파일을 실행하여 설치를 진행을 한다.
    설치시 경로는 크리스탈 리포트를 호출하여 사용하는 웹사이트의 경로에 설치를 하고 설치 가상 디렉토리는
    크리스탈 리포트 프로젝트 생성할 때 만든 이름으로 생성하여야 한다.(<그림7> 참고)

    이부분에서 가상디렉토리 경로에 대해 자세히 설명좀 바랍니다. ㅜㅠ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.03.30 11:54 신고

      답변이 늦어 미안해요 ^^;

      가상디렉토리란게 설치가 될 폴더명입니다.
      지금 보니 설명이 좀 이상하긴 한데...설치시 생성될 폴더명을 적으시면 됩니다 ^^;

       Address

Leave a Reply

1 Tracbacks (+view to the desc.)

[VB] FTP 기능 담당 모듈

View Comments


VB에서 특정 FTP 서버에 파일을 업로드하기 위한 모듈.

wininet.dll을 사용하여 FTP 업로드기능을 구현함.






4. 접속 종료

'FTP접속종료
Public Sub FtpClose()
  
    If hConnection <> 0 Then InternetCloseHandle hConnection
    hConnection = 0
 
End Sub

5. 기능 사용예

If FtpOpen(FTP 접속 IP, FTP 접속 Port, FTP 접속 사용자 이름, FTP 접속 비밀번호) = False Then
   MsgBox "FTP 서버접속 실패!", vbCritical, "확인"
   Exit Sub
End If
               
If FTPUpload(업로드할 로컬 파일,  원격 서버 파일, ProgrssBar를 가지고 있는 폼 객체) = False Then
   MsgBox "FTP 서버전송 실패!", vbCritical, "확인"
End If

Call FtpClose

MsgBox "전송 완료"
Unload frmProgress

※ 테스트시 유의할점

테스트를 위해서 기본 폼 외에 ProgressBar를 가지고 있는 폼을 따로 생성해두어야 합니다.
따로 폼 생성을 하기 싫으면 함수 모듈 중 FTPUoload 함수 마지막 인자를 없애고
FTPUpload 함수 내 objTarget 객체를 삭제를 하여 사용을 하시기 바랍니다.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.


0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정

View Comments

※ 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정

웹사이트에 AJAX를 사용가능하게 설정하는 데에는 Visual Studio의 버전에 따라 달라진다.

일단 Visual Studio 2008 버전에서는 AJAX를 사용할 수 있게

그림에서 보는 것처럼 템플릿이 추가되어 있다.

사용자 삽입 이미지

AJAX1.0-Enabled ASP.NET 2.0 Web Site라고 템플릿이 추가되어있다.



AJAX1.0-Enabled ASP.NET 2.0 Web Site 템플릿으로 웹사이트 프로젝트를 생성하면

따로 설정을 해줄 필요없이 AJAX 기능을 사용할 수가 있다.

저 템플릿은 ASP.NET Extensions 1.0 버전이고 .NET Framework 2.0 버전에서 사용된다.

현재는 AJAX Library가 3.5버전까지 나와있고 .NET Framework 3.5버전에서 사용 가능하다.

라이브러리 다운로드는

http://www.asp.net/ajax/downloads/ 에서 다운로드가 가능하고 다른 내용도 살펴볼 수 있다.

이렇게 2008 버전에는 별다른 설정없이 바로 사용이 가능해서 편리하게 사용이 가능하다.

Visual Studio 2005 버전에서 AJAX 기능을 사용하기 위해서는 위 사이트에서

ASP.NET Extensions 1.0을 다운받아 설치를 하면 프로젝트 만들기에 해당 템플릿을 선택이 가능하다.

설치가 안되어있으면 2005버전에서는 템플릿을 선택을 할 수가 없다.

그리고 도구상자에서 AJAX와 관련된 컨트롤을 사용하기 위해서는

첨부파일의 ASP.NET AJAX Control Toolkit을 다운받아서 설치를 하면

도구상자에 AJAX 관련 컨트롤들이 추가되어 사용이 가능하다.



각 컨트롤에 대한 샘플은 다음 사이트에서 확인 가능하니 적용하기 전 확인 후 적용하면 된다.

ASP.NET AJAX Control Toolkit 샘플 페이지 보러 가기


그런데
AJAX1.0-Enabled ASP.NET 2.0 Web Site 템플릿이 아닌

일반 웹사이트로 이미 웹사이트를 만든 경우에는 web.config의 설정을 직접 수정을 해주어야 한다.

web.config의 설정 수정 내역은


ASP.NET Extensions의 버전이 변경되면 그에 맞게 web.config의 설정 내 관련 설정 부분의 버전도

같이 변경을 해주어야 버전 변경에 따른 오류 사항을 막을 수 있다.

그리고 AJAX 기능을 사용하기 위해 또 하나 추가해줘야할 부분은

AJAX 기능을 사용할려는 페이지에 다음 코드를 필수적으로 추가해줘야 원하는 기능을 사용할 수 있다.

<asp:ScriptManager ID="ScriptManager1" runat="server" />

위 코드는 반드시 FORM 태그 내에 존재해야 한다.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다. 


0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView에서 사용하는 이벤트들 정리

View Comments

※ GridView에서 주로 사용하는 이벤트들 정리 - 각 제목 클릭하면 상세 화면 보기 가능



 



* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.



16 Comments (+add yours?)

  1. Favicon of http://blog.naver.com/jijsu BlogIcon artrace 2009.12.09 02:35

    좋은정보 감사합니다

     Reply  Address

  2. 정훈 2010.02.06 18:22

    덕분에 GridView Paging 3시간 만에 해결봤습니다 ㅠ 감사합니다 앞으로 종종 들리겠습니다 ^^

     Reply  Address

  3. 김영진 2011.08.24 13:09

    님 GridView Paging 소스에 보면 GetDataSet()이라고 있는데
    그거는 어떤건가요?
    그거 소스좀 알수 있을까요?

     Reply  Address

  4. 김영진 2011.08.24 16:05

    GetDataSet()이

    Paging이랑 Sorting에 둘다 있던데,,,
    저게 구체적으로 어떤 소스인지 궁금하네요~
    저게 없으니 아예 안되요.. ㅜㅠ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.08.24 16:07 신고

      제가 그 소스가 어디 있는지 잘 몰라서요;;; 몇년 전에 했던거라 이따 저녁때 살펴보고 답변드리께요 ^^;

       Address

  5. 김영진 2011.08.24 18:37

    아 네.. 그러시군요~

    꼭 확인해보시구 답변주세요^^ 감사합니다 ㅎㅎ;;

     Reply  Address

  6. 김영진 2011.08.24 20:14

    님 꼭 좀 알려주세요~~ 부탁드릴게요~!!! ^^;;

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.08.24 20:18 신고

      죄송한데요 제가 회사일이 많이 바빠서요;;;
      외장하드 어딘가에 백업해둔 걸로 기억하는데 회사 자료가 많다보니 쉽게 못찾겠네요.
      찾게 되면 답글달겠습니다.

       Address

  7. 김영진 2011.08.24 21:11

    네 ~ 기다릴게요^^ 많이 바쁘신거같은데 수고하셔요~

     Reply  Address

  8. 김영진 2011.08.26 19:46

    흑흑.. 아직 못찾으셨나요.....??

    전 24시간 내내 님의 답변을 기다리고 있습니다...^^

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.08.26 20:01 신고

      본문 내용에 해당 함수 넣어뒀습니다.

      기본적으로 테이블을 읽어서 필요한 데이터 작업 처리 후 해당 DataSet을 반환하는 걸로 되어있습니다 ^^

      소스 참고하세요

       Address

  9. 김영진 2011.08.28 22:19

    님 감사해요~~
    근데도 아직 해결이 안됬네요.....ㅜ
    소스내용을 이해하기가 무척 힘들어요..ㅜㅜ

     Reply  Address

  10. ㅠㅠ 2012.03.13 19:24

    ㅠㅠ 감사히 잘 봤습니다
    제가 하다가 오류가 났는데 좀 도와주세요 ㅠㅠ
    제가 자동 필드 생성을 안하고 하나하나 추가하는 방식으로 했는데요

    저 세 기능을 다 합하려고 하니 안되네요 ㅠㅠ
    세가지 기능(페이징, 정렬, 수정/삭제)을 합치려면 어떻게 해야하는 지 알려주세요 ㅠㅠ
    하나만 눌러도 다른 이벤트들도 발생해야하기 때문에..(페이지를 넘겼는데 정렬이 초기화되면 안되잖아용.. ㅠㅠ)

    요놈들의 이벤트때문에 고생입니다 ㅠㅠ.. 제발 알려주세용

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2012.03.13 19:28 신고

      죄송합니다;; 제가 ASP .Net을 손을 뗀지가 4년이나 되서요 ㅠㅠ 저도 기억이 잘 안나네요;
      근데 오류가 발생하는건가요?
      원칙대로라면 되야될건데;;

       Address

Leave a Reply

0 Tracbacks (+view to the desc.)

구글 날씨 API용 국내 주요 시/군 코드 정리

View Comments

http://www.google.co.kr/ig/api?weather=해당 시/군의 영문명


위 주소는 구글에서 제공하는 날씨 정보를 얻기 위한 날씨 API용 주소이다.

원하는 시/군의 영문명을 입력하면 XML형태의 데이터로 결과를 출력해준다.

예를 들어 대구의 날씨를 알고 싶다면 다음과 같이 입력해주면

1. http://www.google.co.kr/ig/api?weather=Daegu
2. http://www.google.co.kr/ig/api?weather=Taegu

1,2번 아무거나 넣으면 된다. 내가 알기론 2번의 영문명은 예전에 사용하던 것이고
1번이 변경된 영문명인 걸로 안다.


결과는 다음과 같이 나온다.



이렇게 나오는 XML 결과를 가지고 원하는 언어(Java, ASP.Net, Flex 등)에서 가져다 사용하면 된다.

그런데 사용을 할려고 하면 대도시 같은 명칭은 대부분 쉽게 찾아 사용할 수 있는데

작은 시/군에 대한 영문명은 구글에서 어떻게 정의를 해두었는지를 몰라서

시/군에 대한 데이터를 가지고 올라치면 여기저기 찾아봐야한다.

난 구글 Analystics에 있는 블로그 접속 지역이 영문으로 나오길래 그걸 참고해서

일일히 노가다로 직접 쳐서 결과 나오는 걸 보고 다음과 같이 정리를 해두었다.

이래야 나중에 사용할 때 쉽게 사용을 하지 ㅋ

근데 더 있을건데 더 이상은 잘 모르겠다. 나중에 또 찾게 되면 그때 다시 수정을 해야겠다.


6 Comments (+add yours?)

  1. 천균파 2008.08.21 00:49

    igoogle의 날씨표기에 보면 대부분의 도시 영문명이 표기되어 있습니다.
    좋은 정보 잘보고 갑니다.

     Reply  Address

  2. Favicon of http://tawool.tistory.com BlogIcon 모험가 2009.06.17 14:28

    잘 보았습니다~ 이번프로젝트에서써먹어야겠군요 ㅋㅋ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2009.06.17 18:25 신고

      아 프로젝트에서 이거 사용할 일이 있으신가요? ㅎㅎ
      도움이 되었으면 좋겠네요 ^^

       Address

  3. Favicon of http://tawool.tistory.com BlogIcon 모험가 2009.06.17 14:31

    아 그 도시는 소스보기 하니깐 나오더군요;;;

    ","강릉|경주|고양|광명|광주|구미|군산|군포|김해|대구|대전|동해|목포|부산|부천|서귀포|서울|성남|송탄|수원|시흥|안산|안양|용인|울릉도|울산|원주|의정부|익산|인천|일산|전주|제주|진주|철원|청주|춘천|파주|평택|포항|흑산도

    "Kangneung|Gyeongju|Goyang|Gwangmyeong|Gwangju|Gumi|Gunsan|Gunpo|Gimhae|Daegu|Daejeon|Donghae|Mokpo|Busan|Bucheon|Seogwipo|Seoul|Seongnam|Songtan|Suwon|Siheung|Ansan|Anyang|Yongin|Ulleung-do|Ulsan|Wonju|Uijeongbu|Iksan|Incheon|Ilsan|Jeonju|Jeju|Jinju|Cheorwon|Cheongju|Chuncheon|Paju|Pyeongtaek|Pohang|Heuksan-do"

     Reply  Address

Leave a Reply

1 Tracbacks (+view to the desc.)

[AIR] 구글 날씨 API를 이용한 날씨 정보 유틸

View Comments


이번에 프로젝트 투입이 되면서 처음 접하게 된 언어가 있다. 바로 Adobe사의 Flex란 언어이다.

그동안 자바, JSP로만 웹 개발만 해오다 새로운 걸 접하니 생소하고 두렵기도 하고 해서 예제로 배우는 Adobe FLEX란 책을 구매하여 공부하는 중이다.

그런데 구글 날씨 API를 이용한 날씨 정보 유틸은 이 책에 제일 뒤쪽 부록으로 간략하게 설명이 되어 있는 AIR란 걸 이용하여 만들었다.

에어(AIR)란 Adobe사에서 아폴로(Apollo)란 이름으로 진행했던 프로젝트의 정식 명칭이다.
에어는 윈도우 데스크탑 버전의 RIA 어플리케이션을 작동하게 하기 위한 운영체제 호환, 디바이스 호환이 가능한 런타임이다.
기존의 FLEX가 웹브라우저에서 동작하는 어플리이케이션이고 로컬 자원에 접근하기가 힘든 반면
에어는 웹브라우저가 아닌 윈도우에서 실행이 되고 로컬 자원에 접근할 수 있다는 장점이 있다.

대강 에어가 이렇다는 걸 상기하고 기존 플렉스(FLEX)를 개발해봤던 사람이면 에어 어플리케이션을 쉽게 제작 가능하다.

왜냐하면 실행되는 환경이 다를 뿐 개발 방식은 똑같기 때문이다. 설명은 여기까지 하고 구글 날씨 API를 이용하여 개발한 소스를 첨부한다.


위 소스로 만든 어플리케이션의 실행화면은 다음 그림을 참고하기 바란다.

사용자 삽입 이미지

그림을 보면 콤보박스에서 조회하고자 하는 도시를 선택을 하면 현재의 날씨 정보를 텍스트박스에 보여주고 오른편에 이미지로 나타내준다.

그 아래에는 오늘 날씨 정보와 3일치의 날씨 정보를 나타내준다.

날씨 정보에 대한 소스는 이전 글(구글 날씨 API용 국내 주요 시/군 코드 정리)를 참고하기 바란다.

실제로 저 허접한 유틸을 돌려보고 싶은 사람이 있다면 다음 첨부파일을 다운받아 설치하면 간단하게 사용이 가능하다.
설치하는 건 다른 일반 윈도우 어플리케이션과 비슷하다.

다만 테스트용 인증서로 배포버전을 만든 거라 경고문이 뜨는 데 악성프로그램이 아니니 안심하고 설치하면 된다.

마음에 안들면 제어판->프로그램 추가/제거에서 JuneUtil이란 놈을 찾아 과감히 삭제하시길.


본인의 컴퓨터에 Adobe AIR Runtime이 설치되어 있다면 첨부파일로만 설치하여 사용이 가능하고 설치안되어 있는 분들은 Adobe AIR사이트에서 다운받아 설치하면 된다.

용량이 12MB로 큰 용량이 아니니 부담없이 설치해도 될 듯 하다.

에어 런타임 다운받기

※ 혹시나 본문의 소스보기가 힘들고 첨부파일을 설치하신 분은 해당 프로그램을 실행 후  마우스 오른쪽 버튼을 누르면 View Source란 메뉴를 통해서도 쉽게 소스를 볼 수가 있으니 참고바랍니다.

6 Comments (+add yours?)

  1. Favicon of http://iceflower.tistory.com BlogIcon 활의노래 2008.08.20 21:50 신고

    구....구미 +_+;;;;;;;;

     Reply  Address

  2. Favicon of https://blog.arzz.com BlogIcon 알쯔 2008.08.20 23:21 신고

    저도 한번 배워봐야하는데;;
    시간의 압박이 ㅠ_ㅠ

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2008.08.20 23:34 신고

      저야 프로젝트에서 FLEX를 사용해서
      공부하는 김에 잠깐 써본거지
      시간있어서 만든건 아니에요 ^^;
      잠깐잠깐 시간날때 틈틈이 배우는 것도 괜찮을거 같은데 ^^;

       Address

  3. 블랙커피 2008.09.04 14:13

    요즘은 FLEX가 좋게 느껴지는데 한번 공부해봐야겠습니다
    잘보고 갑니다 ^^

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2008.09.04 14:22 신고

      네 ㅎㅎ
      전 이번 프로젝트 투입이 되면서
      처음 FLEX를 접하게 됐는데
      생각보다 좋더라구요
      새로 배울만한 기술인 듯 합니다 ^^;
      방문에 감사드립니당 ^^

       Address

Leave a Reply

1 Tracbacks (+view to the desc.)

[VB] 비주얼베이직에서 스크롤 가능하게 설정

View Comments

* 비주얼베이직에서 스크롤 가능하게 설정

비주얼베이직에서는 기본적으로 마우스 휠을 사용한 화면 스크롤 자체가 안된다.

그래서 소스가 길어서 스크롤이 생겼을 때 아래 내용을 볼려면 페이지 업/다운이나 화살표를 이용해야하는

불편함이 있다.

하지만 사람이란건 어떤 걸 사용하다가 불편을 느끼면 그걸 해소하기 위한 도구를 만드는법 ^^;

내가 만든 건 아니지만 유용한 추가기능을 하나 찾았다.
:

바로 첨부파일에 있는 건데 다운로드 후 VBA Mouse Wheel Fix.reg를 실행해서 레지스트리에 등록을 한 다음

비베를 실행하여 메뉴의 추가기능 하위 메뉴인 추가기능 관리자를 선택해서 그림과 같이 설정한다.

사용자 삽입 이미지


확인을 한 다음에 마우스 휠을 돌려보면 휙~휙~ 아래 위 스크롤이 잘 된다.


0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] XML 문서 만들기 & 이미지 문서 만들기

View Comments

* XML 문서 만들기 & 이미지 문서 만들기

제목이 저렇게 붙이는 게 맞는지는 모르겠지만 일단은 뭐 ;;

1. Default.aspx라는 WebForm 문서를 하나 추가한다.

2. 추가한 aspx 소스 내용에는 다른 것들은 전부 지운 후 아래 내용만 남겨두고 저장한다.

   - <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>

3. aspx.cs에 용도에 맞게 Page_Load() 함수에 다음과 같이 적용한다.

// 이미지 파일을 가져올 때
// 사용법 : http://localhost/Default.aspx?fileName=test.jpg
protected void Page_Load(object sender, EventArgs e)
{
    Byte[] arrBytes = null;  // 파일을 바이트로 읽기 위한 변수
    string fileName = null; // 파일명을 받을 변수 선언

    // Content Type을 반드시 image/jpeg 혹은 image/gif 등의 image 유형으로 지정
    Response.ContentType = "image/jpeg";

    arrBytes = new Byte[1000000];
    FileStream fs = null;   // 파일을 읽이위한 파일 스트림 선언

    fileName = Server.UrlDecode(Request["fileName"]);

    String imgFileName = Server.MapPath("이미지 파일이 있는 경로명" + fileName);

    fs = new FileStream(imgFileName, FileMode.Open, FileAccess.Read, FileShare.Read);

    fs.Read(arrBytes, 0, 1000000);
    fs.Flush();
    fs.Close();

    Response.Clear();
    Response.OutputStream.Write(arrBytes, 0, arrBytes.Length);
}

// XML문서 생성을 할 때
protected void Page_Load(object sender, EventArgs e)
{
    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    sb.Append("<?xml version='1.0' encoding='UTF-8'?>"); // 요게 핵심. 이렇게 해줘야 XML 문서로 인식함.
    sb.Append("<Result>");
    sb.Append("</Result>");

    Response.Clear();
    Response.Write(sb.ToString());
    Response.End();
}

다른 더 좋은 방법도 있겠지만 뭐 일단 이걸로도 잘되니 일단 이걸로 진행.



0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[VB.Net] PostgreSQL 데이터 조회하기

View Comments

1. 테이블에서 데이터 조회
      Dim intCount As Integer
 
        Try
            If DB_CONNECT() Then
                strCmd.Connection = gOleDBConn
                strCmd.CommandType = CommandType.Text
                strCmd.CommandText = "SELECT * FROM code"
 
                objDA.SelectCommand = strCmd
                objDA.Fill(objDS, "code")
 
                With objDS.Tables("code")
                    For intCount = 0 To .Rows.Count - 1
                        cbRelate.Items.Add(.Rows(intCount).Item("c_code").ToString & " : " & .Rows(intCount).Item("c_value").ToString)
                    Next
                End With
 
                Call DB_DISCONNECT()
            Else
                MessageBox.Show("DB 연결을 확인하십시오!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
 
            Call DB_DISCONNECT()
        End Try

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[VB.Net] PostgreSQL OleDB 연결하기

View Comments

1. OleDB 연결을 위한 ConnectString
   - "Provider=PostgreSQL OLE DB Provider;Data Source=DB서버 주소;location=DB명;User ID=아이디;password=비밀번호"
 
2. DB 연결 함수
   Private gOleDBConn As OleDb.OleDbConnection
   Public objDA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter()
   Public objDS As DataSet = New DataSet()
   Public strCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand()
 
   Public Function DB_CONNECT() As Boolean
        Dim strConn As String = "Provider=PostgreSQL OLE DB Provider;Data Source=DB서버 주소;location=DB명;User ID=아이디;password=비밀번호"
 
        Try
            If gOleDBConn Is Nothing Then
                gOleDBConn = New OleDb.OleDbConnection(strConn)
                gOleDBConn.Open()
            Else
                If gOleDBConn.State = ConnectionState.Open Then
                ElseIf gOleDBConn.State = ConnectionState.Closed Then
                    gOleDBConn = New OleDb.OleDbConnection(strConn)
 
                    gOleDBConn.Open()
                End If
            End If
        Catch ex As Exception
            Console.WriteLine(ex.Message)
 
            If gOleDBConn.State = ConnectionState.Closed Then
                DB_CONNECT = False
                MsgBox("데이터베이스 접속 실패!", MsgBoxStyle.Critical, "Error")
            Else
                DB_CONNECT = True
            End If
        End Try
 
        DB_CONNECT = True
    End Function
 
3. DB 연결 해제 함수
   Public Function DB_DISCONNECT() As Boolean
        Try
            If gOleDBConn.State = ConnectionState.Open Then
                objDA.Dispose()
                objDS.Dispose()
                strCmd.Dispose()
                gOleDBConn.Close()
            ElseIf gOleDBConn.State = ConnectionState.Closed Then
                MsgBox("데이터 베이스가 이미 연결 해제 상태입니다!", MsgBoxStyle.Critical, "Error")
            End If
        Catch ex As Exception
            Console.WriteLine(ex.Message)
 
            If gOleDBConn.State = ConnectionState.Open Then
                objDA.Dispose()
                objDS.Dispose()
                strCmd.Dispose()
                gOleDBConn.Close()
            End If
        End Try
 
        DB_DISCONNECT = True
    End Function

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[VB.Net] PostgreSQL 데이터 입력하기

View Comments

1. 신규 데이터 입력하기
        Dim intCount As Integer
 
        Try
            If DB_CONNECT() Then
                strCmd.Connection = gOleDBConn
                strCmd.CommandType = CommandType.Text
                strCmd.CommandText = "INSERT INTO person VALUES('" & cbRelate.Text.Substring(0, 2) & "', '" & txtName.Text & "', '" & txtBirthday.Text & "', '" & txtHomeAddr.Text & "', '" & txtHomeTel.Text & "', '" & txtComName.Text & "', '" & txtComAddr.Text & "', '" & txtComTel.Text & "', '" & txtCellPhone.Text & "', '" & txtMemo.Text & "')"
 
                objDA.InsertCommand = strCmd
                intCount = objDA.InsertCommand.ExecuteNonQuery()
 
                If intCount = -1 Then
                    MessageBox.Show("데이터 입력 성공", "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Else
                    MessageBox.Show("데이터 입력 실패!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
 
                Call DB_DISCONNECT()
            Else
                MessageBox.Show("DB 연결을 확인하십시오!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
 
            Call DB_DISCONNECT()
        End Try

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView를 Excel 출력하기

View Comments

* GridView 데이터를 Excel로 출력하기


   // 엑셀 출력 버튼

    protected void imgBtnExcel_Click(object sender, ImageClickEventArgs e)
    {
        DataSet ds = GetData();
        Boolean check = false;

        if (ds.Tables.Count != 0)
        {
            if (ds.Tables[0].Rows.Count != 0)
            {
                check = true;
                DataView dv = new DataView(ds.Tables[0]);
                SaveDataView2Excel(dv);
            }
            else
            {
                check = false;
            }
        }

        if (!check)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("<script type='text/javascript'>alert('검색된 결과가 없습니다.'); </script>");

            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
        }
    }


    // 엑셀 출력 함수
    public void SaveDataView2Excel(DataView view)
    {
        DataTable table = new DataTable();
        table = view.Table.Copy();

        string strStyle = @"<style>td { mso-number-format:\@; } </style>";
        string fileName = "OrderForITEM_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
        fileName = HttpUtility.UrlEncode(fileName, new System.Text.UTF8Encoding()).Replace("+", "%20");

        #region html테이블 생성
        string htmlStr = "<div><table class='cell_bg' cellspacing='0' rules='all' border='1' id='ctl00_ContentPlaceHolder_GridView1' style='width:1000px;border-collapse:collapse;'>";
        htmlStr += "<tr align='center' valign='middle' style='background-color:#E9EEEA;height:30px;'>";
        for (int i = 0; i < table.Columns.Count; i++)
        {
            htmlStr += "<th scope='col'>" + table.Columns[i].ToString() + "</th>";
        }

        for (int j = 0; j < table.Rows.Count; j++)
        {
            htmlStr += "</tr><tr align='center' valign='middle' style='color:Black;height:30px;'>";
            for (int i = 0; i < table.Columns.Count; i++)
            {
                htmlStr += "<td>" + table.Rows[j][i].ToString() + "</td>";
            }
            htmlStr += @"</tr>";
        }
        htmlStr += @"</table></div><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
        #endregion

        Response.ClearHeaders();

        Response.AddHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");

        Response.Charset = "";
        Response.ContentType = "application/vnd.xls";
        Response.Write(strStyle);
        Response.Write(htmlStr);
        Response.End();

    }



0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] 마스터 페이지 사용시 Request 문제

View Comments

* 마스터 페이지 사용시 Request 문제

1. 마스터 페이지를 사용을 안할 때

   - 마스터 페이지를 사용을 안할 때는 일반적으로 Request 개체를 사용

   ex1) String temp1 = Request.Params["이름"];
   ex2) String temp1 = Request.QueryString["이름"];
   ex3) String temp1 = Request.Form["이름"];
   ex4) String temp1 = Request["이름"];

   1번,2번 예제는 GET 방식일 때 사용, 3번 예제는 POST 방식일 때, 4번 예제는 GET, POST 방식 둘 다 사용 가능

2. 마스터 페이지를 사용할 때

   - 마스터 페이지를 사용할 때는 일반적인 방식의 Request로는 값을 얻어오지 못함.

   - 마스터페이지가 있고 마스터페이지 내 컨텐츠 페이지의 ID가 MainContent라면 다음과 같은 방식으로 가져와야 함.

   ex1) String temp1 = ((TextBox)Master.FindControl("MainContent").FindControl("이름")).Test;
   ex2) String temp1 = Request["ctl100$MainContent$이름"];

   위와 같은 방식으로 되는데 2번 방식에서 첫번째 $앞은 Control의 아이디인 듯 하고 그 다음은 컨텐츠 페이지의 ID, 마지막은 Control의 Name같이 사용을 해야 원하는 값을 얻어올 수 있음.

   편의상 1번 방식이 보기도 편하고 나중에 유지보수도 편할 듯 함.



0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

PostgreSQL 설치하기

View Comments

회사에서 프로젝트 진행에 사용할 DBMS를 설치했다.

PostgreSQL이라고 중형 DBMS인데...예전에 들어보긴 했지만 써보는 건 이번이 처음이다.

오라클이랑 MySQL은 써봤는데 ㅋㅋ 별걸 다 써보는 구나.

일단 설치를 위해서 다음 링크에서 가장 최신 버전인 8.2.3버전을 받자~!

http://wwwmaster.postgresql.org/download/mirrors-ftp?file=%2Fbinary%2Fv8.2.3%2Fwin32%2Fpostgresql-8.2.3-1.zip

위 링크에서 태극기 그림의 아무링크나 클릭해서 다운받으면 되니 맘에 드는걸로 다운.

다운 후 압축을 풀어서 postgresql-8.2.msi를 선택해서 설치.

[설치 진행]

1. 언어는 English 선택

2. 설치옵션은 자신이 필요한 것들 선택해서 설치

3. Service Configuration 항목에서 계정관련 정보를 입력후 Next를 누르면 Account Name에 적은 사용자 계정이 없으면

   새로 생성할 것이냐고 묻는데 Yes, 다시 경고창이 뜨는데 암호가 취약하니 랜덤으로 생성할 거냐고 묻는데 그냥 No 선택

4. Initialise database cluster 항목에서 포트는 디폴트로 그냥 두고 Address는 그냥 체크해제.

   Locale은 Korean, Korea로 Encoding은 EUC-KR로 선택. Superuser 관련 정보를 입력 후 Next를 누르면

   어떤 컴퓨터에서는 다음과 같은 경고창이 나오는 컴퓨터가 있을 것이다.

사용자 삽입 이미지

위와 같은 경고창이 뜨는 이유는 Secondary Logon 서비스가 실행이 되지 않고 있어서 뜬다.

시작-실행창에서 services.msc를 실행 후 해당 서비스를 실행을 시킨 후 진행하면 정상적으로 설치가 된다.

사용자 삽입 이미지

나머지 옵션들은 디폴트로 두거나 필요한 옵션을 선택해서 설치를 하면 완료~!!

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[VB] 스캐너 제어 라이브러리

View Comments

첨부파일 :




스캐너 제어 프로그램에 필요한 라이브러리.

상용라이브러리인지 Trial 버전밖에 없네.

설치하면 VB6에서 구성요소 추가로 사용이 가능하다.

설치시 데모 소스와 메뉴얼도 같이 설치가 되니

메뉴얼 참고하면서 소스 분석하면 쉽게 스캐너 제어를 할 수 있을 듯 하다.

데모 소스라 복잡하지도 않고 기본적인 기능만 있음.


출처 : http://www.ciansoft.com/twaincontrolx/default.asp

위 출처 사이트에 가보면 .Net용도 있고 다른 프로그램도 있으니 참고삼아 가볼만도 함.


0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[CrystalReports] Crystal Reports(크리스탈리포트) 인쇄 버튼 클릭시 인쇄 설정 팝업창 나오게 설정하기

View Comments

※ 첨부파일 :



* Crystal Repors(크리스탈리포트) 인쇄 버튼 클릭시 인쇄 설정 팝업창 나오게 설정하기

1. 크리스탈 리포트 발행 후 인쇄 버튼을 클릭하면 초기 기본값은 PDF파일로 미리보기 실행

2. 인쇄 설정창이 나오게 하기 위해선 첨부파일에 있는 파일이 필요

3. CrystalReportViewer를 정의한 aspx 파일에 다음과 같이 OBJECT 태그로 첨부파일의 CAB파일 지정

    <object id="CrystalPrintControl" classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A"
codebase="http://localhost:1485/CR/CAB/PrintControl.cab" height="0px" version="10,2,0,1078"
viewastext="" width="0px">
</object>

※ 크리스탈 리포트를 실행하기 위해서는 별도의 Crystal Report용 웹사이트가 필요로 함.

- 참고 웹페이지 : http://www.hoons.kr/Lecture/LectureView.aspx?BoardIdx=199&kind=27
                        http://www.hoons.kr/Lecture/LectureView.aspx?BoardIdx=200&kind=27



0 Comments (+add yours?)

Leave a Reply

1 Tracbacks (+view to the desc.)

[CrystalReports] Crystal Reports(크리스탈리포트) 런타임시 실행

View Comments

* Crystal Repors(크리스탈리포트) 런타임시 실행

특정 버튼 클릭으로 크리스탈 리포트를 보여주기 위해서 aspx.cs단에서 해줘야할 것들.

1. 크리스탈 리포트 바인딩을 수행하는 함수 작성

   private void ConfigCrystalReport()
   {
        // Crystal Report 접속용 로그인 정보
        TableLogOnInfo cryLogonInfo = new TableLogOnInfo();
        cryLogonInfo.ConnectionInfo.ServerName = "SERVER명";
        cryLogonInfo.ConnectionInfo.UserID = "DB접속 아이디";
        cryLogonInfo.ConnectionInfo.Password = "DB접속 비밀번호";
        cryLogonInfo.ConnectionInfo.DatabaseName = "사용할 데이터베이스명";
        CRV_BOM.LogOnInfo.Add(cryLogonInfo);
        CRV_BOM.EnableDatabaseLogonPrompt = false;  // 크리스탈 리포트 실행시 로그인 정보 입력폼 안나오게
      
        // Report 문서 경로 설정
        rptdoc.ReportDocument rpt = new rptdoc.ReportDocument();
        rpt.Load(Server.MapPath("리포트 파일 경로명"), OpenReportMethod.OpenReportByDefault);

        // 파라메터 전송을 위한 개체 정의
        rptdoc.ParameterFieldDefinition pfd;
        ParameterValues pvals;
        ParameterDiscreteValue pdv;

        // 파라메터 설정 - 파라메터 설정은 리포트에서 필요로 하는 파라메터만큼 만들어준다.
        pfd = rpt.DataDefinition.ParameterFields["@iType"];
        pvals = new ParameterValues();
        pdv = new ParameterDiscreteValue();
        pdv.Value = "S1";
        pvals.Add(pdv);
        pfd.ApplyCurrentValues(pvals);

        CrystalReportViewer1.ReportSource = rpt;
        CrystalReportViewer1.DataBind();
   }

2. 1번에서 작성한 함수를 Page_Init에서 로드
   
    protected void Page_Init(object sender, EventArgs e)
    {
        ConfigCrystalReport();
    }
   


0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView 웹 서버 컨트롤에 바인딩된 행에 대한 대량 업데이트 수행

View Comments

참고 사이트 : http://msdn.microsoft.com/ko-kr/library/aa992036(VS.80).aspx

GridView에서 다수 데이터가 수정된 사항에서 한꺼번에 업데이트를 하기 위한 작업.
이것도 이번 프로젝트 작업에서 필요한 거라 정리한다.

1. 사전작업으로 GridView 바인딩을 하면서 원래 데이터 보관 - ViewState 사용
private bool tableCopied = false;
private DataTable originalDataTable;

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
if (!tableCopied)
{
originalDataTable = ((DataRowView)e.Row.DataItem).Row.Table.Copy();
ViewState["originalValuesDataTable"] = originalDataTable;
tableCopied = true;
}
}

2. 버튼 클릭시 저장하기 위한 작업

protected void UpdateButton_Click(object sender, EventArgs e)
{
originalDataTable = (DataTable)ViewState["originalValuesDataTable"];

foreach (GridViewRow r in GridView1.Rows)
if (IsRowModified(r)) { GridView1.UpdateRow(r.RowIndex, false); }

// Rebind the Grid to repopulate the original values table.
tableCopied = false;
GridView1.DataBind();
}

protected bool IsRowModified(GridViewRow r)
{
int currentID;
string currentTitleOfCourtesy;
string currentLastName;
string currentFirstName;
string currentTitle;
string currentExtension;

currentID = Convert.ToInt32(GridView1.DataKeys[0].Value);

currentTitleOfCourtesy = ((TextBox)r.FindControl("TitleOfCourtesyTextBox")).Text;
currentLastName = ((TextBox)r.FindControl("LastNameTextBox")).Text;
currentFirstName = ((TextBox)r.FindControl("FirstNameTextBox")).Text;
currentTitle = ((TextBox)r.FindControl("TitleTextBox")).Text;
currentExtension = ((TextBox)r.FindControl("ExtensionTextBox")).Text;

DataRow row =
originalDataTable.Select(String.Format("EmployeeID = {0}", currentID))[0];

if (!currentTitleOfCourtesy.Equals(row["TitleOfCourtesy"].ToString())) { return true; }
if (!currentLastName.Equals(row["LastName"].ToString())) { return true; }
if (!currentFirstName.Equals(row["FirstName"].ToString())) { return true; }
if (!currentTitle.Equals(row["Title"].ToString())) { return true; }
if (!currentExtension.Equals(row["Extension"].ToString())) { return true; }

return false;
}

--> 버튼 클릭하였을 때 현재 변경된 부분을 보관해둔 ViewState의 값과 비교하여 다른 부분만 GridView를 업데이트 처리
음...근데 대충 정리를 하다보니 이것도 내가 원하는 방식이 아니네
일단 이건 SqlDataSource를 사용하고 GridView 설정을 하면서 Update 쿼리문을 지정을 해주어야 한다.
지금 프로젝트에서는 일반 업데이트 쿼리가 아니라 저장 프로시져를 사용하는 거라
조금 다르게 작업을 해야겠네....일단 이런 방법으로 하는 거라 생각만 해두고
작업이 완료되면 다시 따로 정리할 예정.

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView 행 추가하기

View Comments

* GridView 수동 행 추가

GridView에서 특정 버튼을 눌러서 행추가를 할려고 근 1주일넘게 삽질을 하다가 하나의 꼼수를 생각해냈다 --;;
여기저기 자료를 찾아보니
SqlDataSource를 사용하면 insert() 함수로 간단히 추가가 가능한 거 같은데
살펴보니 내가 원하는 방식은 아니다.
내가 원하는 방식은 따로 버튼을 두어 해당 버튼이 클릭이 되면 행이 추가가 되도록 하고 싶었는데
머리가 둔한건지 근 1주일 넘게 삽질하다 생각해낸게 아래 소스 방식이다 ㅡ,.ㅡ

하아~ 벌써 끝날 프로젝트인데 종료가 안된 상황에서 다른 프로젝트 투입되느라 작업시간도 없거니와
ASP.Net은 이번에 처음 만지는거라 작업시간이 오래 걸리네 (원래 난 JSP, JAVA만 쭈욱 해왔다;;)

1. 행추가 꼼수를 위해 aspx 소스 아무 위치에 HiddenField를 다음과 같이 하나 둔다.

   <asp:HiddenField ID="rowcnt" runat="server" Value="0" />

2. aspx.cs 파일에 버튼 클릭 이벤트 함수에 다음과 같이 작업

    protected void imgBtnInsRow_Click(object sender, ImageClickEventArgs e)
    {
        int curRowCnt =             
               int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);

        curRowCnt = curRowCnt + 1;

        ((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value = curRowCnt.ToString();

        insertRow();
    }

3. insertRow() 함수

   private void insertRow()
    {
        int curRowCnt =
             int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);

        // Create a DataTable
        DataTable table = new DataTable();

        // Create a DataColumn and set various properties
        DataColumn column1 = new DataColumn();
        column1.DataType = Type.GetType("System.String");
        column1.AllowDBNull = true;
        column1.Caption = "ITEM";
        column1.ColumnName = "ITEM";

        // Add the column to the table
        table.Columns.Add(column1);

        for (int i = 1; i <= 12; i++)
        {
            DataColumn column2 = new DataColumn();
            column2.DataType = Type.GetType("System.Decimal");
            column2.AllowDBNull = true;
            column2.Caption = i.ToString();
            column2.ColumnName = i.ToString();

            table.Columns.Add(column2);
        }

        // Add Row and set values
        DataRow row;
        for (int i = 0; i < curRowCnt; i++)
        {
            row = table.NewRow();
            row["ITEM"] = "";

            for (int j = 1; j <= 12; j++)
            {

                row[j] = 0;
            }

            // Be sure to add the new row to the
            // DataRowCollection.
            table.Rows.Add(row);
        }

        DataSet ds = new DataSet();
        ds.Tables.Add(table);

        gridDetail.DataSource = ds;
        gridDetail.DataBind();
    }

--> 위 소스에 대해서 간략하게 설명을 하면 행추가 버튼을 클릭을 하면 HiddenField인 rowcnt를 1씩 증가시키고 그 값을 insertRow() 함수 빨간색 부분 첫번째 for문에서 사용한다.
행추가 버튼을 눌러 증가된 rowcnt만큼 반복하면서 행을 하나씩 추가한다.

아무리 생각해도 허접한 삽질소스이지만 일단 원하는 행추가는 되니까 뭐 일단은 이렇게라도 쓰자;;


0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

Keil C51 C Compiler

View Comments

http://www.keil.com/support/man/docs/c51/    :  C51 C Compiler Online User Manual

LCD TV 회사에 다닐 때 개발에 사용했던 컴파일러입니다.

생소한 이름이지만 C 언어 기반 언어인 듯 한데 자세한 건 LCD TV 제조회사에 오래 다니진 않아서 상세히는 모른다는;;

생소하긴 하지만 그렇다고 어렵지는 않아서 C언어를 할 줄 안다면 쉽게 접근 가능합니다.

위 링크는 개발할 때 참고할 수 있는 온라인 메뉴얼 등 컴파일러 사용에 도움이 되는 정보들이 있으니

해당 개발부분 담당하시는 분들은 참고하시면 되겠습니다 ^^;

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

EDID(Extended Display Identification Data)

View Comments

첨부파일 :



EDID에 대한 파일..

EDID가 대충 뭔지 말하자면 Display가 PC에게 Display 정보를 알려주기 위한 데이타.

제조사, 제조년월일, 시리얼번호, 지원해상도 등의 내용을 가지고 있는 데이타이고

Plug and Play를 지원하기 위해 만들어진 데이타.

0 Comments (+add yours?)

Leave a Reply

0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView RowSpan 적용예제

View Comments

* GridView에 RowSpan 적용 예제

1. GridView에 RowSpan을 하기 위해서 aspx 소스상에서 GridView의 OnRowDataBound 이벤트를 선언해준다.
<asp:GridView id="grdResult" onRowDataBound="grdResult_RowDataBound"></asp:GridView>
2. aspx.cs 소스상에서 grdResult_RowDataBound 함수를 선언 후 RosSpan을 수행하는 함수 호출
   protected void grdResult_RowDataBound(object sender, GridViewRowEventArgs e)
   {
        RowSpanGridView(grdResult, 0);
RowSpanGridView(grdResult, 1);
}
   // 1번째 인자는 GridView 객체, 2번째 인자는 RosSpan할 칼럼의 인덱스(인덱스는 0부터 시작) public void RowSpanGridView(GridView gd, int c_index)    {         int rowSpan = 1;         string ls_tmp0;         string ls_tmp1;         for(int i = 0; i < gd.Rows.Count; i++)         {             if(i == (gd.Rows.Count; i++)             {                  gd.Rows[i-rowSpan+1].Cells[c_index].RowSpan = rowSpan;             }             else             {                  ls_tmp0 = gd.Rows[i].Cells[c_index].Text;                  ls_tmp1 = gd.Rows[i+1].Cells[c_index].Text;                                   if(ls_tmp0 == ls_tmp1)                  {                       rowSpan++;                       gd.Rows[i+1].Cells[c_index].Visible = false;                  }                  else                  {                       gd.Rows[i-rosSpan+1].Cells[c_index].RowSpan = rowSpan;                       rowSpan + 1;                  }             }         }    }

4 Comments (+add yours?)

  1. lee 2011.11.10 16:37

    error CS0201: 할당, 호출, 증가, 감소 및 새 개체 식만 문으로 사용할 수 있습니다.

    데이타가 같은 로우 span하려고 이의 소스를 이용해서
    해봤는데 계속 에러만..

    왕초보입니다.

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2011.11.10 16:41 신고

      흠 말씀해주신 상황만으로는 답변이 좀 곤란하네요 ^^;;
      거기다 닷넷은 손 놓은지 꽤 되서요;;;
      저도 구글 검색으로 자료 찾아서 한거거든요 ㅠㅠ
      만족스러운 답변 못드려서 미안해요 ^^;

       Address

  2. 안녕하세요 2012.08.22 14:31

    소스 24로우가 약간 이상해보입니다;;
    if문인데 for문법이랑 섞인 것 같아요
    그래도 잘 쓸게요 고맙습니다:D

     Reply  Address

    • Favicon of https://www.parkgunstyle.kr BlogIcon 열혈박군 2012.08.23 19:13 신고

      헉 그러네요.
      예전에 복사/붙여넣기 하다가 이상하게 복사된 모양이네요 ^^;
      지금 소스가 없어서 나중에 찾으면 복구해두께요.
      감사합니다 ^^

       Address

Leave a Reply

0 Tracbacks (+view to the desc.)

Newer Entries Older Entries