1

MS Access データベースへのアクセス、読み取り、および更新に vbscript を使用する HTA に取り組んでいます。現在の Windows ユーザー名がデータベースの「ユーザー」列と一致するすべてのレコードを選択できるようにしたいと考えています。

strSender以前に以下の例を使用して Windows ユーザー名を収集しましたが、クエリに挿入しようとしてもうまくいきませんでした。

Set wshShell = CreateObject( "WScript.Shell" )
strSender = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )

任意の提案をいただければ幸いです。

ありがとう。

02-01-13 に追加:

これは、私が行っていることのアイデアを提供するためのスニペットです。

Dim conn

sub dotheconnection

Set conn = CreateObject("ADODB.Connection")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=./Database/data.mdb; User Id=; Password="

If conn.errors.count <> 0 Then 

    alert("problem connecting to the database")
else
    getdata

end if
end sub

sub getdata

SQL_query = "SELECT * FROM MyDatabase ORDER BY Team, Status, Employee"
Set rsData = conn.Execute(SQL_query)

strHTML = strHTML & "<table id='data_table' cellspacing='0' cellpadding='4' border='1'><tr><td bgcolor='#000000'><font color='blue'><b>Employee</b></font></td><td bgcolor='#000000'><font color='blue'><b>Team</b></font></td><td bgcolor='#000000'><font color='blue'><b>Status</b></font></td></tr>"
Do Until rsData.EOF = True
strHTML = strHTML & "<tr class='in_out'><td onclick='deleteUser("& rsData("ID") &")' language='vbscript' style='cursor:hand; color:red'>del</td><td>" & rsData("Employee") & "</td><td>" & rsData("Team") & "</td><td><b>" & rsData("Status") & " </b></td> <td onclick='editUser("& rsData("ID") &")'language='vbscript' style='cursor:hand; color:red'>Edit</td></tr>"
rsData.moveNext ' go to next record
Loop

strHTML = strHTML & "</table>"
thediv.innerHTML = strHTML


SQL_query = "SELECT Count(*) AS intTotal FROM MyDatabase"
Set rsData = conn.Execute(SQL_query)
strHTML1 = strHTML1 & "<b>Number of Users: </b>"
strHTML1 = strHTML1 & "" & rsData("intTotal") & ""
Count.innerHTML = strHTML1
end sub
4

2 に答える 2

1

このパラメーター クエリをqryFetchUserRecordsとして保存しました。

PARAMETERS which_user Text ( 255 );
SELECT yt.*
FROM YourTable AS yt
WHERE yt.User=[which_user];

この VBScript は、そのクエリの結果セットを含む ADO レコードセットを読み込みます。名前付きクエリを接続オブジェクトの「メソッド」として使用し、パラメータ値はそのメソッドの引数として提供されます。

Dim cn ' As ADODB.Connection
Dim rs ' As ADODB.Recordset
Dim strSender ' As String

Set cn = CreateObject("ADODB.Connection")
cn.Open "your connection string"
Set rs = CreateObject("ADODB.Recordset")
strSender = CreateObject("WScript.Network").UserName
cn.qryFetchUserRecords strSender, rs
' do stuff with recordset here
rs.Close
Set rs = Nothing
Set cn = Nothing

保存されたクエリを使用したくない場合は、ADO Command オブジェクトを使用して、実行する前にパラメータを追加できます。しかし、それは私にとって不必要な余分な努力のように思えます。

BewareUserは予約語であるため、SELECTステートメントで角括弧で囲むか、その例で行ったようにテーブル名またはエイリアスで修飾することで問題を回避してください。

于 2013-01-31T23:19:08.093 に答える
0

代わりに WScript.NetWork オブジェクトが必要なようです。ここの例を参照してください: http://www.codeproject.com/Articles/1422/Getting-User-Information-Using-WSH-and-VBScript

于 2013-01-31T22:33:28.527 に答える