2016-03-10 19 views
0

我已經得到了下面的VBScript代碼:保持前導零,並保持變量作爲文本值,而不是數字

WScript.Echo findUser(strUser) 

它調用的函數:findUser。它工作正常,但是,當strUser的值是一個像0001這樣的值,那麼由於某種原因,該功能將剝離0並返回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

那麼你的錯誤代碼的其餘部分,你指定一個整數給struser。 –

+0

是的'findUser()'不是一個內置的函數,那麼如何顯示代碼,那麼我們可能會提供幫助。 – Lankymart

+0

對不起,可能是一個miss-communication需要'findUser()'函數定義,在你的代碼中的某處你可能有'Function findUser(....)'行並且你發佈了整個定義?如果不是它來自其他地方的圖書館或者什麼的?目前我們沒有關於'findUser(strUser)'函數的內容。 – Lankymart

回答

0

如果數字列在您的CSV前導零,但最終會在你的代碼格式整數他們極有可能是沒有雙引號。

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

由於@Lankymart懷疑JET引擎解釋數字作爲數字,除非他們明確地將它們放在引號定義字符串:

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

的首選解決方案是修復CSV或進程創建CSV,以便正確定義字符串值。

如果由於某種原因,這是不可能的/可行的,將整數轉換爲具有前導零的字符串的規範方法是用全零字符串預先編號並將結果字符串剪切到正確的長度:

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

數據一種格式然後有開關並且不得不手動將其切換回來有什麼意義?確實修復CSV會更有意義。 – Lankymart

+0

@Lankymart我們不知道CSV來自哪裏,所以我們不知道在源頭修復它是否可行。以上是處理這個問題的一種方式,無需涉及其他方面。 –

+0

我們確實沒有,所以爲什麼要回答,直到我們呢?噢,我忘了... – Lankymart