HTML-приложение и базы данных
Как получить доступ к базе данных в файлах HTA? Или еще лучше получить доступ к любому COM? Я знаком с AutoIt, AutoHotKey и Windows Script Host. Есть ли способ включить любой из них в приложение HTA?
3 ответа
Вы делаете это точно так же, как в 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>
Для доступа к базе данных вам понадобится 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;
}
Я взял два ответа и объединил их следующим образом:
а) Я обновил ComTest() из теста Excel, чтобы получить доступ к базе данных Oracle
б) 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