我目前正试图在我的vbscript中使用一个db(.accdb文件(。
我的函数来自一个由hta文件执行的.vbs文件:
function dbCall(sAction, sPayload, sTable, sConCol, sConVal)
updateLocalDB()
Dim sConnectionString, objConnection, objRecordset, dbQuery, lTemp
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & localDB
'Query für die DB zusammenbauen
Select Case sAction
Case "get"
If sConCol = False Then
dbQuery = "SELECT " & sPayload & " FROM " & sTable
Else
dbQuery = "SELECT " & sPayload & " FROM " & sTable & " WHERE " & sConCol & " = '" & sConVal & "'"
End If
End Select
'do DB-Stuff
objConnection.open sConnectionString
objRecordset.Open dbQuery, objConnection
IF objRecordset.fields.Count = 1 Then
lTemp = objRecordset.fields(0)
End If
objRecordset.close
objConnection.close
dbCall = lTemp
End function
结果用于决定我的hta文件的设计。
我对它有多种用途。这样称呼它:
getSlotAmount = dbCall("get", "value", "config", "name", "MiPaCount")
根据返回一个数字
名称(短字符串( | 值(整数( |
---|---|
MiPaCount | 5 |
您缺少的是希望处理几种数据类型,并为字段名保留单词。因此,例如,您需要:
' For text:
dbQuery = "SELECT " & sPayload & " FROM " & sTable & " WHERE [" & sConCol & "] = '" & sConVal & "'"
' For numbers:
dbQuery = "SELECT " & sPayload & " FROM " & sTable & " WHERE [" & sConCol & "] = " & Str(sConVal) & ""
' For dates:
dbQuery = "SELECT " & sPayload & " FROM " & sTable & " WHERE [" & sConCol & "] = #" & Format(DateValue(sConVal), "yyyy/mm/dd") & "#"
您可以通过使用我的函数CSql来简化它,但我还没有在这样的场景中测试过它。
尝试替换此行:
iStart=dbCall("get"、"startzeit"、"slots"、"ID"、tmp(
这个:
iStart=dbCall("get"、"startzeit"、"slots"、"ID"、"tmp"(
您正在该参数中查找一个值,tmp(不带引号(应为数字值。