保持前导零并将变量保持为文本值而不是数字

时间:2016-03-10 09:24:38

标签: vbscript

我有以下VBScript代码:

WScript.Echo findUser(strUser)

它调用函数:findUser。然而,它工作正常,当strUser的值是像0001这样的值时,由于某种原因,该函数剥离零并且仅返回0,因此findUser函数返回错误,表示未找到用户。

知道我怎么能确保它不会删除任何字符?由于某种原因,它被视为一个数值,但看到用户帐户可能并不总是只有数字,我宁愿它将strUser的值视为文本字符串

* UDPATE *

我将如何获取strUser变量的其余代码如下。它从CSV文件中获取strUser。但是,即使我像这样设置strUser

strUser = 0001

它仍然作为整数返回并删除前导零。

Set oConnection = CreateObject("adodb.connection")
Set oRecordSet = CreateObject("adodb.recordset")
oConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & sCSVFileLocation & ";Extended Properties=""text;HDR=NO;FMT=Delimited"""
oRecordSet.Open "SELECT * FROM " & sCSVFile, oConnection

Do Until oRecordSet.EOF 
    strUser = oRecordSet.Fields.Item(0).value
    WScript.Echo findUser(strUser)

    On Error Resume Next

    oRecordSet.MoveNext 
Loop

1 个答案:

答案 0 :(得分:0)

如果数字在您的CSV中以前导零列出,但在代码中最终为纯整数,则很可能不是双引号。

ID,...
0001,...
0002,...

由于@Lankymart怀疑JET引擎将数字解释为数字,除非通过将它们放在引号中明确定义为字符串:

ID,...
"0001",...
"0002",...

首选解决方案是修复CSV或创建CSV的过程,以便正确定义字符串值。

如果由于某种原因不可能/可行,将整数转换为带有前导零的字符串的规范方法是在数字前加上全零字符串并将结果字符串剪切为正确的长度:

i = 1
s = Right("0000" & i, 4)  's = "0001"