Làm th? nào đ? s? d?ng m?t thành ph?n VB ActiveX cho t? đ?ng hóa t? t? Internet Explorer

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 286023 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này ch?ng t? làm th? nào b?n có th? s? d?ng m?t ActiveX thành ph?n cho client-side t? đ?ng hóa c?a t? t? m?t trang Web đó đư?c k?t xu?t trong Internet Explorer. Có r?t nhi?u l?i ích đ? s? d?ng m?t thành ph?n ActiveX t? m?t trang Web thay v? c?a k?ch b?n đư?c nhúng trong trang Web riêng c?a m?nh:
  • N?u b?n đ? có Visual Basic m? mà t? đ?ng hóa S? d?ng Microsoft Word, b?n có th? l?i m? c?a b?n trong tr?nh duy?t b?ng cách chuy?n đ?i c?a b?n Visual Basic d? án m?t ActiveX EXE ho?c DLL ActiveX m?t.
  • Word không đư?c đánh d?u an toàn cho k?ch b?n. Tùy thu?c vào thi?t đ?t b?o m?t trong Internet Explorer, t? đ?ng hóa t? m? trong k?ch b?n có th? không ch?y ho?c ngư?i s? d?ng có th? đư?c nh?c nh? v?i m?t c?nh báo b?o m?t. Gi? đ?nh r?ng b?n Thành ph?n ActiveX đáp ?ng các nguyên t?c nh?t đ?nh, nó có th? đư?c đánh d?u an toàn cho k?ch b?n đ? tránh nh?ng v?n đ? an ninh.
  • Visual Basic có nhi?u tính năng mà b?n không th? s? d?ng v?i k?ch b?n trong m?t trang Web. Ví d?, m?t tính năng mà có s?n cho tr?c quan Cơ b?n nhưng không ph?i đ? trang Web script là kh? năng đ? g?i cho các ?ng d?ng Windows giao di?n l?p tr?nh (API).
M?t k?ch b?n phát tri?n ph? bi?n là đ? cho ngư?i dùng v?i m?t trang Web giao di?n đ? t?o m?t tài li?u Word b?ng cách s? d?ng d? li?u t? m?t s? ngu?n bên ngoài ho?c logic. M?c dù b?n có th? s? d?ng t? đ?ng hóa t? phía máy ch? đ? t?o ra các tài li?u và d?ng nó tr? l?i cho khách hàng, có r?t nhi?u h?n ch? cho vi?c s? d?ng m?t cách ti?p c?n phía máy ch? có liên quan đ?n t? đ?ng hóa t?. Như?c đi?m chính là kh? năng m? r?ng; T? m?t máy ch? t? đ?ng hóa r?t tài nguyên-chuyên sâu và không khuy?n khích cho th? h? tài li?u trên máy ch? Web.

B?ng cách s? d?ng m?t ActiveX thành ph?n đ? th?c hi?n các th? h? tài li?u t?i các khách hàng, b?n có th? di chuy?n t? đ?ng hóa t? tài nguyên-chuyên sâu t? các máy ch? Web. Đi?u này là các gi?i pháp đư?c tr?nh bày b?i các thành ph?n ActiveX m?u đó là th?o lu?n trong bài vi?t này. M?c dù m?u là c? th? cho t? đ?ng hóa t?, cùng m?t nguyên t?c có th? đư?c áp d?ng đ? t? đ?ng hoá khác Microsoft Office các ?ng d?ng, ch?ng h?n như Microsoft Excel.

THÔNG TIN THÊM

T?i v? m?u

AutoWord.exe ch?a d? án Visual Basic ActiveX DLL, Word tài li?u, và các trang Web này đư?c mô t? ? đây bài vi?t.

Các t?p tin sau đây có s?n đ? t?i v? t? Microsoft Download Trung tâm:
Autoword.exe
Ngày phát hành: Tháng tư 17, 2001

Đ? thêm thông tin v? làm th? nào đ? t?i xu?ng Microsoft H? tr? t?p tin, h?y b?m s? bài vi?t sau đây đ? xem các bài vi?t trong các Cơ s? ki?n th?c Microsoft:
119591 Làm th? nào đ? có đư?c Microsoft h? tr? t?p tin t? các d?ch v? tr?c tuy?n
Microsoft đã quét vi-rút cho tệp này. Microsoft s? d?ng nhi?u nh?t ph?n m?m phát hi?n vi rút hi?n t?i đ? có s?n trên ngày mà các t?p tin đ? đư?c đăng. Các t?p tin đư?c lưu tr? trên tăng cư?ng b?o m?t máy ch? giúp ngăn ng?a b?t k? thay đ?i không đư?c phép đ? các t?p tin.

Thi?t l?p m?u

Sau khi b?n t?i v? Autoword.exe, h?y làm theo các bư?c sau đ? thi?t l?p m?u:
  1. T?o m?t thư m?c có tên là hóa đơn trong thư m?c ?o g?c c?a máy ch? Web c?a b?n. (Thư m?c ?o g?c m?c đ?nh là C:\Inetpub\Wwwroot.)
  2. Gi?i nén các t?p tin trong Autoword.exe đ? hóa đơn thư m?c.
  3. M? Autoword1.htm trong m?t văn b?n ho?c ch?nh s?a và thay th? tài li?u tham kh?o đ? YourWebServer trong t?t c? các URL v?i tên c?a máy ch? Web c?a b?n. Tương t?, thay th? YourSQLServer trong chu?i k?t n?i v?i tên máy ch? SQL c?a b?n mà ch?a cơ s? d? li?u m?u Northwind.

    LƯU ?: N?u b?n không có m?t máy ch? SQL có s?n v?i Northwind m?u cơ s? d? li?u, b?n có th? s?a đ?i chu?i k?t n?i đ? s? d?ng Microsoft Truy c?p Northwind m?u cơ s? d? li?u đ? thay th?. K?t n?i v?i truy c?p Northwind m?u cơ s? d? li?u tương t? như dư?i đây:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _
            "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    					
  4. M? Autoword2.htm trong m?t văn b?n ho?c ch?nh s?a và thay th? tài li?u tham kh?o đ? YourWebServer trong t?t c? các URL v?i tên c?a máy ch? Web c?a b?n.
  5. Kh?i đ?ng Internet Explorer. B?n có th? duy?t đ? http://YourWebServer/invoice/AutoWord1.htm và http://YourWebServer/invoice/AutoWord2.htm đ? ki?m tra k?ch b?n. Khi b?n đ?u tiên truy c?p vào m?t trong các trang này, b?n s? đư?c nh?c đ? t?i v? ActiveX thành ph?n.
Các thành ph?n Visual Basic ActiveX m?u và t?p l?nh mô t? chi ti?t hơn trong các ph?n theo.

Visual Basic ActiveX thành ph?n

Các thành ph?n Visual Basic ActiveX trong m?u này tương tác v?i Trang web script đ? t?o ra m?t tài li?u hóa đơn đ?t hàng theo yêu c?u c?a ngư?i dùng. ?ng d?ng Web có th? cho phép các thành ph?n ActiveX đ? có đư?c th? t? thông tin cho m?t ID th? t? nh?t đ?nh, ho?c các ?ng d?ng Web có th? ch?n đ? gói thông tin đ?t hàng như XML và g?i cho các thành ph?n ActiveX cho ch? bi?n. Trong c? hai trư?ng h?p, sau khi các thành ph?n l?y đư?c thông tin đ?t hàng, nó có th? t? đ?ng t? đ? xây d?ng và hi?n th? các tài li?u hóa đơn cho các đ?t hàng.

(Thành ph?n) ActiveXAutomateWord) ch?a m?t l?p duy nh?t, các Hoá đơn l?p, mà cho th?y nhi?u ba phương pháp:
  • Các GetData phương pháp s? d?ng ActiveX Data Objects (ADO) đ? l?y thông tin v? đơn đ?t hàng trong cơ s? d? li?u m?u Northwind. Thông tin đ?t hàng lưu tr? trong các m_Data thành viên tư nhân bi?n. Các GetData phương pháp có th? đư?c g?i là đ? cho phép khai thác d? li?u x?y ra phía khách hàng.
  • Các SendData phương pháp s? d?ng Microsoft XML (MSXML) đ? đi?n vào các m_Data thành viên tư nhân bi?n v?i thông tin đ?t hàng là cung c?p b?i ngư?i g?i. SendData hy v?ng m?t tham s? đ?i di?n cho m?t DOMDocument đ?i tư?ng cho các thông tin đ?t hàng. Các SendData phương pháp có th? đư?c g?i là đ? g?i thông tin đ?t hàng t? trang Web Trang đ? các thành ph?n. V?i cách ti?p c?n này, b?n có th? s? d?ng ASP đ? gi?i nén d? li?u phía máy ch? và hi?n nay các khách hàng v?i d? li?u XML m?t h?n đ?o mà có th? đư?c s? d?ng cho th? h? tài li?u.
  • Các MakeInvoice phương pháp s? d?ng t? đ?ng hóa t? đ? xây d?ng m?t tài li?u có ch?a các đ?t thông tin trong các m_Data thành viên tư nhân bi?n. M?t tài li?u đư?c lưu tr? trên Web máy ch? đư?c s? d?ng như m?t đi?m kh?i đ?u cho hóa đơn. Ngư?i g?i có th? ch?n đ? hi?n th? tài li?u Word đ? hoàn thành ? bên ngoài c?a tr?nh duy?t ho?c lưu các hoàn thành tài li?u đ? m?t đ?a đ? s? d?ng sau này.
Invoice.CLS
Option Explicit

Private Type InvoiceData
    OrderID As String
    OrderDate As Date
    CustID As String
    CustInfo As String
    ProdInfo As Variant
End Type

Private m_Data As InvoiceData

Public Sub GetData(sOrderID As Variant, sConn As Variant)

    Dim oConn As Object, oRS As Object
    
    'Connect to the Northwind database.
    Set oConn = CreateObject("ADODB.Connection")
    oConn.Open sConn
    
    'Obtain the Customer ID and Order Date.
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Open "Select [OrderDate], [CustomerID] from Orders where " & _
             "[OrderID]=" & sOrderID, oConn, 3 'adOpenStatic=3
    m_Data.OrderID = sOrderID
    m_Data.OrderDate = CDate(oRS.Fields("OrderDate").Value)
    m_Data.CustID = oRS.Fields("CustomerID").Value
    oRS.Close
    
    'Obtain Customer information.
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Open "Select * from Customers Where CustomerID='" & _
             m_Data.CustID & "'", oConn, 3 'adOpenStatic=3
    m_Data.CustInfo = oRS.Fields("CompanyName").Value & vbCrLf & _
                      oRS.Fields("City") & " "
    If Not (IsNull(oRS.Fields("Region"))) Then
       m_Data.CustInfo = m_Data.CustInfo & oRS.Fields("Region").Value & " "
    End If
    m_Data.CustInfo = m_Data.CustInfo & oRS.Fields("PostalCode").Value & _
                      vbCrLf & oRS.Fields("Country").Value
    oRS.Close
    
    'Obtain Product information.
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Open "Select ProductName, Quantity, [Order Details].UnitPrice," & _
             "Discount from Products Inner Join [Order Details] on " & _
             "Products.ProductID = [Order Details].ProductID " & _
             "Where OrderID = " & sOrderID, oConn, 3 'adOpenStatic=3
    m_Data.ProdInfo = oRS.GetRows
    oRS.Close
    
    'Close the connection to the database.
    oConn.Close

End Sub

Public Sub SendData(oXML As Variant)

    'Extract the information from the DOMDocument object oXML and store
    'it in the private member variable m_Data.

    m_Data.OrderID = oXML.getElementsByTagName("OrderID").Item(0).Text
    m_Data.OrderDate = oXML.getElementsByTagName("OrderDate").Item(0).Text
    m_Data.CustID = oXML.getElementsByTagName("CustID").Item(0).Text
    m_Data.CustInfo = oXML.getElementsByTagName("CustInfo").Item(0).Text
    
    Dim oItems As Object, oItem As Object
    Set oItems = oXML.getElementsByTagName("Items").Item(0)
    ReDim vArray(0 To 3, 0 To oItems.childNodes.Length - 1) As Variant
    Dim i As Integer
    For i = 0 To UBound(vArray, 2)
        Set oItem = oItems.childNodes(i)
        vArray(0, i) = oItem.getAttribute("Desc")
        vArray(1, i) = oItem.getAttribute("Qty")
        vArray(2, i) = oItem.getAttribute("Price")
        vArray(3, i) = oItem.getAttribute("Disc")
    Next
    m_Data.ProdInfo = vArray

End Sub

Public Sub MakeInvoice(sTemplate As Variant, Optional bSave As Variant)
    
    Dim oWord As Object
    Dim oDoc As Object
    Dim oTable As Object
    
    If IsMissing(bSave) Then bSave = False

    'Open the document as read-only.
    Set oWord = CreateObject("Word.Application")
    Set oDoc = oWord.Documents.Open(sTemplate, , True)
    
    'Fill in the bookmarks.
    oDoc.Bookmarks("Customer_Info").Range.Text = m_Data.CustInfo
    oDoc.Bookmarks("Customer_ID").Range.Text = m_Data.CustID
    oDoc.Bookmarks("Order_ID").Range.Text = m_Data.OrderID
    oDoc.Bookmarks("Order_Date").Range.Text = m_Data.OrderDate
    
    'Fill in the table with the product information.
    '** Note that the table starts out with three rows -- the first row
    '   contains headers for the table, the second row is for
    '   the first set of product data, and the third row contains a total.
    '   New rows are added for additional products before the "total row".

    Set oTable = oDoc.Tables(1)
    Dim r As Integer, c As Integer
    For r = 1 To UBound(m_Data.ProdInfo, 2) + 1
        If r > 1 Then oTable.Rows.Add (oTable.Rows(oTable.Rows.Count))
        For c = 1 To 4
            oTable.Cell(r + 1, c).Range.Text = _
               m_Data.ProdInfo(c - 1, r - 1)
        Next
        oTable.Cell(r + 1, 5).Formula _
            "=(B" & r + 1 & "*C" & r + 1 & ")*(1-D" & r + 1 & ")", _
            "#,##0.00"
    Next

    'Update the field for the grand total and protect the document.
    oTable.Cell(oTable.Rows.Count, 5).Range.Fields.Update
    oDoc.Protect 1 'wdAllowOnlyComments=1
        
    If bSave Then
        'Save the document as "c:\invoice.doc" and quit Word.
        Dim nResult As Long
        nResult = MsgBox("Are you sure you wish to create the document" & _
             " ""c:\invoice.doc""? If this document already exists, " & _
             "it will be replaced", vbYesNo, "AutomateWord")
        If nResult = vbYes Then oDoc.SaveAs "c:\invoice.doc"
        oDoc.Close False
        oWord.Quit
    Else
        'Make Word visible.
        oWord.Visible = True
    End If
    
End Sub
				

B?ng cách s? d?ng các thành ph?n ActiveX t? m?t trang Web

Autoword1.htm ch?ng t? làm th? nào b?n có th? s? d?ng các GetData phương pháp đ? cho phép các thành ph?n ActiveX truy xu?t d? li?u th? t? phía khách hàng và xây d?ng các tài li?u.

Autoword1.htm
<HTML>
<HEAD>
   <OBJECT ID="AutoWord"
    CLASSID="CLSID:32646EBA-0919-4C2F-94D6-599F46DC34F2"
    CODEBASE="http://YourWebServer/invoice/package/AutomateWord.CAB#version=1,0,0,0">
   </OBJECT>
</HEAD>
<BODY>
Enter an order id between 10248 and 11077 and click the button to view the invoice for the order:
<P/><INPUT TYPE="text" VALUE="10500" ID="OrderID">
<P/><BUTTON ID="InvoiceButton">Create Invoice</BUTTON>
</BODY>

<SCRIPT Language="VBScript">

   Function InvoiceButton_OnClick()
      Dim sConn
      sConn = "Provider=sqloledb;Data Source=YourSQLServer;Initial Catalog=Northwind;UID=sa;"
      AutoWord.GetData OrderID.Value, sConn
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc"
   End Function

</SCRIPT>
</HTML>
				
Đo?n m? trong Autoword1.htm s? d?ng thành ph?n ActiveX đ? hi?n th? các hoàn thành tài li?u bên ngoài c?a tr?nh duy?t. B?n c?ng có th? ch?n đ? c?u các hoàn thành tài li?u và hi?n th? nó trong tr?nh duy?t; Tuy nhiên, làm như v?y đ?i h?i r?ng tài li?u Word đư?c lưu vào đ?a. Các thành ph?n có th? lưu tài li?u Theo C:\Invoice.doc trên ? đ?a đ?a phương c?a khách hàng. B?i v? các thành ph?n ActiveX là đánh d?u an toàn cho k?ch b?n, khách hàng đư?c nh?c xác nh?n các ti?t ki?m.

N?u b?n mu?n hi?n th? các tài li?u đ? hoàn thành trong tr?nh duy?t, thay đ?i cu?c g?i đ?n MakeInvoice trong Autoword1.htm đ? sau đây:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True
      window.navigate "c:\invoice.doc"
				
Autoword2.htm ch?ng t? làm th? nào b?n có th? s? d?ng các SendData phương pháp đ? g?i d? li?u th? t? như m?t DOMDocument đ?i tư?ng đ? các thành ph?n ActiveX cho vi?c t?o các đ? hoàn thành tài li?u. Các DOMDocument đư?c t?o ra t? m?t d? li?u XML h?n đ?o mà n?m trên trang Web. Đ?i v?i các thành ph?n ActiveX đúng cách x? l? thông tin đ?t hàng là đư?c g?i b?i ngư?i g?i, XML E ph?i t?t đư?c h?nh thành và c?u trúc đ? các thành ph?n có th? gi?i thích nó như thông tin đ?t hàng.

Autoword2.htm
<HTML>
<HEAD>
   <OBJECT ID="AutoWord"
    CLASSID="CLSID:32646EBA-0919-4C2F-94D6-599F46DC34F2"
    CODEBASE="http://YourWebServer/invoice/package/AutomateWord.CAB#version=1,0,0,0">
   </OBJECT>
</HEAD>
<BODY>
   <BUTTON ID="InvoiceButton">Create Invoice</BUTTON>
   <XML ID="DataXML">
     <Order>
        <OrderID>10700</OrderID>
        <OrderDate>10/10/2000</OrderDate>
        <CustID>SAVEA</CustID>
        <CustInfo>Save-a-lot
Markets Boise ID 83720
USA</CustInfo>
        <Items>
           <Product Desc="Chai" Qty="5" Price="18" Disc="0.2"/>
           <Product Desc="Sasquatch Ale" Qty="12" Price="14" Disc="0.2"/>
           <Product Desc="Scottish Longbreads" Qty="40" Price="12.5" Disc="0.2"/>
           <Product Desc="Flotemysost" Qty="60" Price="21.5" Disc="0.2"/>
        </Items>        
     </Order>
   </XML>
</BODY>

<SCRIPT Language="VBScript">
  
   Function InvoiceButton_OnClick()
      AutoWord.SendData DataXML.XMLDocument
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc"
   End Function

</SCRIPT>
</HTML>
				
Trong c? hai Autoword1.htm và Autoword2.htm, b?n nên lưu ? r?ng các Thành ph?n ActiveX instantiated theo cách c?a m?t t? khóa <object> thay v? the<b00></b00></object>CreateObject ch?c năng. M?c đích c?a vi?c s? d?ng các t? khóa <object> là Kích ho?t tính năng t? đ?ng t?i v? các thành ph?n ActiveX cho ngư?i dùng r?ng không đ? có các thành ph?n cài đ?t. N?u m?t ngư?i dùng truy c?p m?t trong các trang này và các thành ph?n không đư?c cài đ?t, các thành ph?n đư?c t?i v? t? n?i các T?p tin (CAB) t?i URL đư?c ch? đ?nh trong các<b00></b00></object>CODEBASE thu?c tính. Tùy thu?c vào thi?t đ?t b?o m?t c?a ngư?i dùng trong Internet Thám hi?m, h? l?n đ?u tiên có th? nh?n đư?c m?t d?u nh?c đ? xác nh?n vi?c t?i xu?ng.

LƯU ?: CAB t?p đư?c bao g?m trong Autoword.exe đư?c t?o ra v?i các gói và tri?n khai Wizard cho Visual Basic. Các thành ph?n ActiveX trong các gói ph?n m?m đư?c đánh d?u an toàn cho k?ch b?n và kh?i t?o, nhưng không ph?i là k? đi?n t?.

Đ? bi?t thêm v? vi?c t?o Internet thành ph?n t?i, k? thu?t s? k? k?t, và đánh d?u các thành ph?n như là an toàn cho k?ch b?n và kh?i t?o, xem các trang Web m?ng nhà phát tri?n c?a Microsoft (MSDN) sau đây:
Vi?c đăng k? và ki?m tra m? v?i v?i m? xác th?c
http://msdn2.Microsoft.com/en-us/Library/ms537364.aspx

An toàn kh?i t?o và script cho đi?u khi?n ActiveX
http://msdn2.Microsoft.com/en-us/Library/Aa751977.aspx

THAM KH?O

Đ? bi?t thêm chi ti?t, nh?p vào s? bài vi?t sau đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
257757Thông tin: T? đ?ng hóa c?a văn ph?ng đ? th?c hi?n không giám sát là không khuy?n khích ho?c đư?c h? tr?
270906 Làm th? nào đ? s? d?ng ASP đ? t?o m?t tài li?u đ?nh d?ng (RTF) văn b?n phong phú đ? d?ng su?i đ? Microsoft Word
(c) Microsoft Corporation 2001, t?t c? các quy?n D? tr?. Nh?ng đóng góp c?a Lori B. Turner, Microsoft Corporation.

Thu?c tính

ID c?a bài: 286023 - L?n xem xét sau cùng: 06 Tháng Mười 2011 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
T? khóa: 
kbdownload kbautomation kbhowto kbmt KB286023 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:286023

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com