세이박스

VB6.0에서 ASP.Net을 사용하는 XML 웹 서비스 사용 방법

응용프로그래밍

VB.NET을 이용하여 WEB SERVICE를 만들고 VB6.0에서 SOAP을 이용하여

XML 웹 서비스를 사용하는 방법은 다음과 같다.


 

1.  ASP.NET을 사용하는 WEB SERVICE 만들기

a. Microsoft Visual Studio .NET을 시작합니다.
    파일 메뉴에서 새로 만들기를 누른 다음 프로젝트를 누릅니다.
    새 프로젝트 대화 상자의 프로젝트 형식에서 Visual Basic 프로젝트를 누른 다음
    템플릿에서 ASP .Net 웹 서비스를 누릅니다.
    프로젝트 이름을 SQLQuery라고 지정하고 확인을 누릅니다.
    기본적으로 Service1에 대한 디자인 폼이 나타납니다.

b. 보기 메뉴에서 코드를 눌러 Service1에 대한 코드 창을 표시합니다.

c. 코드 창의 맨 위에 다음 코드를 붙여 넣습니다.
    Imports System.Data.SqlClient

d. Service1 클래스에서 End Class 바로 앞에 다음 코드를 붙여 넣습니다.
   <WebMethod()> Public Function GetIDs() As String()
        Dim i As Integer

        ' Create an open connection.
        Dim oConn As New SqlConnection(strConn)
        oConn.Open()

        Dim oDataset As New System.Data.DataSet
        ' Execute the query.
        Dim oAdapter As New SqlDataAdapter("SELECT au_id FROM authors", oConn)
        ' Fill the dataset.
        oAdapter.Fill(oDataset)

        Dim s(oDataset.Tables(0).Rows.Count - 1) As String
        ' Create an array of IDs.
        For i = 0 To oDataset.Tables(0).Rows.Count - 1
            s(i) = oDataset.Tables(0).Rows(i).ItemArray.GetValue(0)
        Next i
        ' Return the array.
        Return s
    End Function

 

  <WebMethod()> Public Function QueryDatabase(ByVal sID As String) As String()
        Dim i As Integer

        ' Create an open a connection.
        Dim oConn As New SqlConnection(strConn)
        oConn.Open()

        Dim oCommand As New SqlCommand("SELECT * FROM authors WHERE au_id='" + sID + "'", oConn)
        Dim oReader As SqlDataReader
        ' Execute the query and assign results to a SqlDataReader.
        oReader = oCommand.ExecuteReader()
        oReader.Read()

        Dim s(7) As String
        ' Build an array of results.
        For i = 0 To 7
            s(i) = CType(oReader.GetValue(i), String)
        Next
        ' Return the array.
        Return s
    End Function


참고: 코드에서 strConn 상수를 수정하여 SQL Server pubs 데이터베이스에

       대하여 올바른 연결 문자열이 되도록 합니다.



2.  ASP .Net을 사용하는 XML 웹 서비스 만들기 

   F5 키를 눌러 웹 서비스 솔루션을 빌드하고 실행합니다.
   .NET IDE(통합 개발 환경)에서 웹 서비스를 실행하면 Microsoft Internet Explorer는
   사용자 솔루션에서 Service1.asmx를 로드합니다.
   GetIDs 메서드를 테스트합니다.
   이렇게 하려면 GetIDs 하이퍼링크를 누른 다음 호출을 누릅니다. 

   이 메서드는 pubs 데이터베이스에서 웹 서비스가 추출한 제작자 ID 목록을 반환합니다.

   결과는 브라우저에 XML로 표시됩니다. 
   브라우저 창을 닫고 Visual Studio로 돌아갑니다.

   F5 키를 눌러 웹 서비스를 실행합니다.
   QueryDatabase 메서드를 테스트합니다.
   이렇게 하려면 QueryDatabase 하이퍼링크를 누른 다음
   sID 매개 변수에 409-56-7008을 입력하고 호출을 누릅니다.

   이 메서드는 ID 409-56-7008의 제작자에 대한 세부 정보를 반환합니다.
   결과는 브라우저에 XML로 표시됩니다.
   브라우저 창을 닫아 웹 서비스를 종료합니다.



3.  VB6.0 에서 SOAP을 이용하여 WEB SERVICE를 사용합니다.
   (첨부 파일 참조)


* MSDN 참조


* 고정 IP를 서비스하는 업체의 제품을 사용하여 유동 IP를 고정 IP화 하여

    TEST 한 결과 웹 서버, 터미널 서버 등의 기능은 사용할 수 있었으나

    SQL SERVER를 원격지에서 직접 연결하는 TEST는 성공하지 못했다.

   

    위의 방법을 이용하면 VB에서 DB를 사용할 수 있다.

    (자연스럽게 3 Tier 방식이 구현된다.)

ActiveX Control을 만들어 웹에 배포하고 홈페이지상에서 이를 활용하는 방법

응용프로그래밍

ActiveX Control을 VB로 만들어 웹에 배포하고 홈페이지상에서 이를 활용하는

 방법을 설명한 문서와 관련 프로그램 (lpk_tool.exe)...

 

** 일반적으로 홈피를 통해서 파일을 Upload 하거나 Download 할때

     ActiveX Control를  PC에 내린 후 이 Control을 통해서 처리하지요.

  

** 문서를 작성하신 분은 잘 모르겠으나...우리가 통상 찐이라고 부르는

    친구가 구한것임 ^^

비베유저들을 위한 InstallFactory

응용프로그래밍

비베로 작성한 프로그램을 쉽고 맛있게 배포할 수 있도록 도와주는 프로그램 입니다.


공개용으로 작성한 프로그램이군요...


후배가 추천을 해서 올려 둡니다.

실제 업체에서 잘 사용하고 있다고 합니다....


installfactory를 만드셔서 배포하신 멋진분께...감사를....

설비별 작업일정 관리

응용프로그래밍

설비별/품목별 작업일정을 스프레드에 막대형태로 표시하고 일정을 조정


=> 각 일정을 마우스로 click 한 후 이동할 설비 및 일자에 마우스로 우(Right)Click 하면

    일정이 변경 됨 


**

기본 요소만 구현하였슴.


응용하여 각 작업일정관리용 프로그램으로 발전시키면 훌륭한(?) 업무용 프로그램이

될 것임.....진짜루....^^

매크로를 이용한 Excel제어명령 작성법

응용프로그래밍

Excel의 매크로를 이용하면 VB에서 Excel을 제어하는 명령어를 작성 하기가 쉽다.
방법은 아래와 같다.


1) 도구(T) 메뉴의 매크로에서 새 매크로 기록..(R)을 선택한 후 매크로명을 입력
2) Excel Sheet에서 작업을 하면 작업   (내역이 매크로에 기록 됨)
3) 매크로 기록을 중단하고 도구(T) 메뉴의 매크로에서(매크로를 선택) 매크로명을

    선택한 후    편집 버튼을 누르면 매크로가 보임

          -> 매크로를 복사해서 VB에서 편집하면 작업 끝...


   매크로 )
    ActiveSheet.Cells(iRow + 1, iCol).Select
    '
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    ' Left
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With


   VB)
    Dim xApp As New Excel.Application

    xApp.Visible = True     ' Excel 표시
    xApp.Workbooks.Add  ' Work Sheet 추가


    xApp.ActiveSheet.Cells(iRow + 1, iCol).Select
    '
    xApp.Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    xApp.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    ' Left
    With xApp.Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

HTML Editor

응용프로그래밍

MS사 Rick Jesse가 만든 DHTML Sample을 좀 수정해서 올렸습니다.


잘 활용하면 WEB 응용 프로그램 개발이나 GroupWare 등에 활용할 수 있을듯..


일반 Text Editor 보담 재미있어요...^^


(Toolbar 와 DhtmlEdit Component의 개념과 활용법에 대해 많이 알 수 있슴)

쿼리문을 VB 코드로 전환

응용프로그래밍

쿼리 분석기 등에서 TEST한 쿼리문을 VB에서 사용 가능한 문장으로

변환 시켜 주는 프로그램


** 프로그램에 적용된 문장을 쿼리문으로도 전환 가능


EX)  A에서 B로 B에서 A로 변환

    A.

        select *
           from table
         where fielda = '123'

    B.

        sSql = ""
        sSql += " select *"
        sSql += "   from table "
        sSql += " where fielda = '123'"

vb 폼 및 모듈내의 명령어 검색 프로그램

응용프로그래밍

VB로 작성된 프로젝트가 존재하는 디렉토리를 선택한 후

찾고자 하는 단어를 입력하여 찾기 버튼을 누르면 프로젝트에 포함된

폼과 모듈에서 해당 단어가 포함된 Line을 찾아 준다.


**  VB에서는 폼(.FRM)과 Module을 text file형태로 유지함

**  VB로 작성한 프로그램(폼, 모듈)의 Line수 구하기 등에 응용도 가능

    

덤으로 ___ 스프레드에 표시된 내용을 Excel로 전환하는 버튼도 있슴..^^

vb에서 웹페이지 소스를 읽는 방법 - 소스첨부

응용프로그래밍
인터넷상에 웹페이지를 다운받는 과정을 설명하도록 하지요..
 
만약, 일반적인 인터넷 익스프롤러를 이용했을 때에는,
 
1. 사용자가 주소창에 http://terzeron.net/lyr.....어쩌구.... 라고 입력을 하거나, 그러한 링크를 누릅니다.
 
2. 웹 브라우저는 인터넷상으로 terzeron.net 라는 컴퓨터를 찾아 접속한 후, 해당 페이지를 보내달라고 요청합니다.
 
3. terzeron.net라는 컴퓨터는 요청을 받아들이고 html소스를 웹 브라우져에 보내줍니다.
 
4. 웹 브라우져는 html소스를 사용자가 볼 수 있게 구성하여 화면에 보여줍니다.
 
 
 
이 4단계는 이해가 가시죠?
 
그런데, 2번 과정에서 해당 원격 컴퓨터(웹 서버라 부르죠)에게 페이지를 요청할 때에는
 
규정상 자신의 정보도 같이 보내도록 되어 있습니다.
 
그것을 요청헤더라고 하며,
 
자신의 IP주소, 브라우져 버젼, 운영체제 버젼, 언어설정(지역), 등등을 보내주죠
 
익스프롤러의 경우에는 브라우져 버전을 "익스프롤러 6.0" 이런식으로 보내겠지요..
 
 
 
이런 요청해더는 국제규격으로 정해져 있기 때문에
 
Inet컨트롤 역시 요청헤더를 보내도록 되어 있지요.
 
그런데 Inet컨트롤의 경우에는 요청헤더에다가 너무 솔찍하게 자신을 밝히는게 문제죠.
 
자신의 브라우져 버젼을 "인터넷 전송 컨트롤" 이런식으로 너무 티나게 보내버립니다.
 
 
 
그래서 가끔, 특별한 원격컴퓨터는 이 요청헤더를 보고,
 
마음에 들지 않으면 에러메시지를 보내버리는 경우도 있습니다.
 
위의 웹 페이지 역시 그런 기능이 있는것 같네요.....
 
 
 
이것을 해결하려면 몇가지 방법이 있겠는데요...
 
바로 소켓통신 수준에서 세밀하게 제어해 버리는 것입니다.
 
물론 이것의 의미는 인터넷 익스프롤러와 같이 아주 복잡한 처리과정을
 
직접 다 구현해야 한다는 의미이지요..
 
매우 까다로운 일이 될수 있습니다.
 
그러나 저러한 요청 헤더 역시 마음대로 수정할 수 있기 때문에,
 
거의 모든 웹 서버의 차단장치를 뚫을수 있습니다.
 
 
 
그리고 두번째의 좀더 쉬운 방법이 있는데요....
 
Inet컨트롤 말고, WebBrowser 이라는 컨트롤이 있습니다.
 
이것은 Inet보다 훨 강력한데요...
 
원래의 주 목적은 폼 위에 인터넷 익스프롤러를 통체로 삽입하는 기능이죠..
 
어찌되었건 이녀석은 요청 헤더에다가 '익스프롤러' 라고 찍어서 보내기 때문에
 
위의 방법으로 차단되지 않습니다.
 
 
그런데 문제는 이것은 어디까지나 웹페이지를 '보기' 위한 컨트롤이지,
 
'html 소스'를 다운받지는 못하죠..
 
그래서 편법으로 다운받는데요.. 그것이 100% 신뢰할수는 없으나...
 
그럭저럭 쓸만은 합니다.
 
위의 소켓 통신을 구현하는것 보다는 훨씬 나은 선택이 되실겁니다.
 
 
방법은 Inet와 비슷한데요...
 
아마 Inet컨트롤을 사용하기 위해서 구성요소 관리자에서
 
Microsoft Internat Transfer Control 6.0 을 선택하셨을 텐데요.
 
그 바로 위에 있는
 
Microsoft Internat Control 6.0 이게 바로 그겁니다.
 
이걸 선택하시고, 컨트롤을 Inet처럼 아무데나 조그맣게 그리세요.
 
그리고 다음과 같이 코딩합니다.
 
Dim url_Temp As String
Private Sub Form_Activate()
    url_Temp = "http://terzeron.net/lyrics/search.php?m_cat=1&s_cat=1&language=&musician=Chris Cornell&key=29384023&noaccess=1&song=Angel On Fire"
    WebBrowser1.Navigate url_Temp
End Sub
 
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Dim i As Long
   
    Do Until Not Result = ""
        Result = WebBrowser1.Document.All(i).outerHTML
        i = i + 1
    Loop
   
    Text1.Text = Result

VB로 WebBrowser 컨트롤의 HTML 제어

응용프로그래밍
 
VB로 WebBrowser 컨트롤의 HTML 제어

  작성자 : 손민창
  작성일 : 2006/12/01

 간간히 질문 올라오는것 같아서 간략하게 정리했습니다.
 
 
 
WebBrowser 컨트롤을 이용해서 VB에서 웹페이지 보여줄때 그 웹페이지를 VB에서 제어하는 몇가지 예제입니다.
(이 WebBrowser 컨트롤 이용하려면  Microsoft Internet Controls을 구성요소에서 추가해주는것 잊지 마시고요)
 
 
 
VB 코드 입니다.
 
Private Sub Command1_Click()
    WebBrowser1.Navigate App.Path & "\test.html"
End Sub
 
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
 
    On Error GoTo WebBrowser1_DocumentComplete_Error
 
   '// 첫번째 자바스크립트 내용 가져오기
    MsgBox WebBrowser1.Document.script-xs.Item(0).innerHTML
   
    '// 두번째 자바스크립트 내용 가져오기
    MsgBox WebBrowser1.Document.script-xs.Item(1).innerHTML
   
    '// id 값이 spanid 인것 가져옴
    MsgBox WebBrowser1.Document.getElementsByName("spanid")(0).innerHTML
   
    '// 폼 속성들 가져오기 가져오기
    MsgBox WebBrowser1.Document.Forms(0).Name
    MsgBox WebBrowser1.Document.Forms(0).method
   
    '// 폼 요소 가져오기 (자바스크립트에서 이용하듯이 사용)
    MsgBox WebBrowser1.Document.Forms(0).user_name.Value
    MsgBox WebBrowser1.Document.Forms(0).homepage.Value
   
    '// 값 바꾸기
    WebBrowser1.Document.Forms(0).homepage.Value = "http://www.empas.com"
       
    Dim tmpObj As HTMLDocument
    Set tmpObj = WebBrowser1.Document
 
 
    On Error GoTo 0
    Exit Sub
 
WebBrowser1_DocumentComplete_Error:
 
End Sub
 
 
 
다음은 html 내용입니다.
 
<html>
<head></head>
<script-x language='xxjavascript-x'>
    alert!('첫번째 스크립트입니다.');
    self.close();
</script-x>
<script-x language='xxjavascript-x'>
    alert!('두번재 스크립트 입니다.');
</script-x>
 
<body>
<span id=spanid>하하하</span>
 
<form name=f1 method=post>
<input type=text name=user_name value="손민창">
<input type=text name=homepage value="http://www.mungchung.com">
</form>
</body>
</html>
 
 
 
 
 
 
워낙 간단한 예제들이라 별다른 설명은 필요없을듯하네요...
 
VB 코드를 보면 대부분 WebBrowser1.Document 을 통해서 HTML 코드로 접근합니다.
접근 하는 방식은 xxJavaScript-x랑 비슷합니다.(거의 똑같다고 봐야하나 -_-;;)
이 WebBrowser1.Document가 자바스크립트로 나타내자면 document랑 똑같습니다.
 
예를 들자면 f1 폼에서 homepage의 값(value)를 자바스크립트로 값확인하려면
alert!(document.forms[0].homepage.value) 입니다. 이것 VB로 나타낸게
WebBrowser1.Document.Forms(0).homepage.Value 입니다. 거의 유사하지요.. -_-;
 
그 외의 다른 몇가지 예제들도 자바스크립트로 접근한 방식처럼 VB로 접근하면 됩니다.
 
 
 
헌데 VB에서 WebBrowser1.Document 까지 적은후 점(.)을 찍으면 속성이나 이벤트등이 보여야하는데
나타나지가 않아서 어떤 속성과 이벤트들이 있는지 알수가 없습니다.
이것을 알고자 한다면 아래처럼 하면 됩니다.
 
1. Microsoft HTML Object Library 을 참조로 추가한다.
 
2. 임시변수(tmpObj)를 만든다.

3. 이렇게 하면 WebBrowser1.Document 다음에 점찍으면 속성과 이벤트들이 보입니다.
 
아시겠지만 위의 코드대로 하면 WebBrowser1.Document 객체를 tmpObj 객체로 할당하면
tmpObj.Forms(0).homepage.Value ..이렇게 코딩해도 됩니다.

VB ieframe.dll 관련오류

응용프로그래밍
IE7로 업그레이드 한후에 VB에서

구성요소 "Microsoft Internet Controls" 을 사용하려고

체크를하고 확인을 누르면

"C:\Windows\system32\ieframe.dll\1 을 찾을수없습니다" 라는

에러가 나오면서 사용할수 없게되는경우가 있습니다.

우선 첨부파일을 받으셔서 압축을 푸신후 system32 폴더에 넣습니다.

이미 system32폴더에 같은 파일이 존재할경우에는

구지 덮어쓰지 않으셔도 됩니다.

그다음에 시작 - 실행에서 regsvr32 c:\windows\system32\shdocvw.dll /u

을 입력한후에, regsvr32 c:\windows\system32\shdocvw.dll 을 입력하세요.

마지막으로 비베로가서 구성 요소창에서 찾아보기 버튼을 이용해서

shdocvw.dll을 추가해주면 됩니다. ^^

VB.net에서 웹 브라우저 연결하기

응용프로그래밍
 
1. 새창으로 웹 브라우저 연결
 
    Dim ie As Object
    ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.width = xxx              ' 주소창 너비
    ie.height = yyy             ' 주소창 높이
    ie.AddressBar = False  ' 주소입력창 숨기기
    ie.ToolBar = False        ' Toolbar 숨기기
    ie.MenuBar = False      ' 메뉴 숨기기
    ie.StatusBar = False     ' 상태바 숨기기
    ie.Resizable = False     ' 크기 조절 금지
    ie.Navigate("접속할 주소")
    ie = Nothing
 
 
2. 폼에서 웹 브라우저 연결
 
    도구상자에서 "Microsoft 웹 브라우저" 를 연다.
    도구상자에 없다면 "항목 추가/제거"에서 COM 구성요소에서 "Microsoft 웹 브라우저"를 선택
 
    COM 구성요소에도 없다면.. 좌절하지 말고 -_-;; (com 구성요소에도 없어서 당황한적 있음)
    찾아보기를 선택하여 WINNT\system32\shdocvw.dll을 선택한다.
 
    그 다음부터는.. 하라는대로 하면 된다 -_-
 
    MSDN과 친해지자 ;;