2011-09-16 64 views
1

如何訪問HTA文件中的數據庫?或者更好的是,訪問任何COM? 我熟悉AutoIt,AutoHotKey和Windows Script Host。有沒有辦法在HTA應用程序中包含這些內容?HTML應用程序和數據庫

回答

1

您的操作方式與您在VBScript中的操作完全相同。以下是使用Excel創建電子表格的示例。

要訪問數據庫,您可以使用ADODB對象,並創建一個數據庫,您可以使用ADOX對象。您需要知道所需的數據庫類型的正確連接字符串。

<html> 

<!-- COMTest.hta --> 

<head> 
<hta:application 
    id="oHTA"  
    border="thick"  
    borderstyle="raised" 
    caption="yes" 
    maximizebutton="no" 
    minimizebutton="yes" 
    showintaskbar="yes" 
    singleinstance="yes" 
    sysmenu="yes" 
    version="0.1" 
    windowstate="normal" 
/> 

<title>COM Test</title> 

<script language="VBScript"> 

sub say(s) 
    output.innerHTML = output.innerHTML & s & "<br>" 
end sub 

sub ComTest() 
    say "testing COM" 

    xlFile = "c:\test\ExcelTest.xls" 
    ' use .xslx if you have Office 2007 or greater 

    set fso = CreateObject("Scripting.FileSystemObject") 
    if fso.FileExists(xlFile) then 
    say "deleting test file: " & xlFile 
    end if 

    say "creating Excel Application object and workbook" 
    set oEx = CreateObject("Excel.Application") 
    set oWb = oEx.Workbooks.Add() ' create a new workbook 
    set oWs = oWb.Worksheets(1) ' point to first worksheet 

    oWs.cells(1,1) = "Test Worksheet" 
    oWs.cells(2,1) = "=now()" 
    oWs.UsedRange.Columns.AutoFit 

    say "saving test file: " & xlFile 
    oEx.DisplayAlerts = false ' if file exists, overwrite it without prompting 
    oWb.SaveAs xlFile 

    oEx.Quit 
    set oEx = nothing 

    say "done" 
end sub 

</script> 

<style type="text/css"> 
body { 
    overflow: auto; 
    background-color: "blanchedalmond"; 
} 

#output { 
    color: lightgreen; 
    background-color: black; 
    font-family: "Lucida Console"; 
    font-size: 9pt; 
    padding: 3px; 
} 
</style> 
</head> 

<body> 
<input type="button" value="test" onclick="ComTest"> 
<br> 
<pre id="output"></pre> 
</body> 

<script language="vbscript"> 
sub ShowTitle() 
    say document.Title 
    say "command line=" & oHTA.commandLine 
end sub 

ShowTitle 
</script> 

</html> 
0

要訪問數據庫,您將需要ActiveXObject。

var conn = new ActiveXObject("ADODB.Connection"); 
var rs  = new ActiveXObject("ADODB.Recordset"); 
conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=handbook.mdb"); 
rs.Open("select * from faq", conn, 3, 2); 
if (!rs.BOF && !rs.EOF) { 
    questionField.value = rs.fields('question').value;; 
    answerField.value = rs.fields('answer').value; 
} 
0

我把兩個答案,併合並他們如下:

一)我從Excel測試更新COMTEST()來訪問Oracle數據庫
B)的ActiveXObject僅適用於JScript的,所以我將其轉換爲VBscript,如下所示:http://msdn.microsoft.com/en-us/library/ms756007(v=vs.85).aspx

sub ComTest() 
    say "testing COM" 

    dim conn, rs 
    set conn = CreateObject("ADODB.Connection") 
    Set rs = CreateObject("ADODB.Recordset") 
    conn.Open("Provider=OraOLEDB.Oracle;Data Source=XXXX;User ID=XXXX;Password=XXXX") 
    say "open conn" 
    rs.Open "select sysdate from dual", conn 
    say "sqlResult =" & rs.Fields("sysdate").Value 

    'Close connection and clean up objects 
    conn.Close 
    say "close conn" 
    Set rs = Nothing 
    Set conn = Nothing 

    say "done" 
end sub 
相關問題