2011-09-16 4 views
1

Comment accéder à la base de données dans les fichiers HTA? Ou mieux encore, accéder à tout COM? Je suis familier avec AutoIt, AutoHotKey et Windows Script Host. Existe-t-il un moyen d'inclure l'un de ces éléments dans une application HTA?HTML Application et bases de données

Répondre

1

Vous le faites exactement de la même manière que dans VBScript. Voici un exemple de création d'une feuille de calcul à l'aide d'Excel.

Pour accéder aux bases de données, vous pouvez utiliser l'objet ADODB et pour créer une base de données, vous devez utiliser l'objet ADOX. Vous devez connaître la bonne chaîne de connexion pour le type de base de données dont vous avez besoin.

<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

Pour accéder à la base de données, vous devez utiliser l'objet 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

Je pris les deux réponses et a fusionné comme suit:

a) Je mis à jour COMTest() à partir d'un test Excel pour accéder à un oracle db
b) ActiveXObject ne fonctionne que pour JScript, donc je l'a converti en VBScript selon: 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