SQL_query WHERE User ='Windows用户名'

时间:2013-01-31 22:28:30

标签: ms-access vbscript hta

我正在开发一个使用vbscript访问,读取和更新MS Access数据库的HTA。我希望能够选择当前Windows用户名与数据库中“用户”列匹配的所有记录。

之前我使用了以下示例来收集Windows用户名,但在尝试将strSender插入查询时我没有任何运气。

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

2 个答案:

答案 0 :(得分: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对象并在执行之前将参数添加到该对象。但这对我来说似乎是不必要的额外努力。

注意User是一个保留字,所以请避免将其放在SELECT语句的方括号中,或者使用表名或别名对其进行限定,就像我在该示例中所做的那样。

答案 1 :(得分:0)

看起来您可能需要WScript.NetWork对象。请参阅此处的示例:http://www.codeproject.com/Articles/1422/Getting-User-Information-Using-WSH-and-VBScript