2013-04-24 68 views
0

我正在使用來自Visma公司的API。當我從他們的數據庫中讀取數據時,我需要根據字段中可以存在的最大字符數來分配字符串中的空間,以便從中讀取。將數據庫中的字段讀入到字符串中獲取我無法刪除的空格

這件事情是這樣的:

dim CustomerName as string 
CustomerName = Space(50) 

AdkGetStr(pData, ADK_CUSTOMER_NAME, CustomerName, 50) 

我指定我多少個字符允許讀取,問題是,如果我讀了一堆客戶的名字,幾乎都不會使用的最大數量的字符允許,我無法擺脫多餘的空間。

我試過修剪並用「」替換「」,但沒有結果。

然後我試着放入一個名爲「test」的客戶,我知道這個字符串中的前4個字符是字母,而第五個(5)是我無法擺脫的空間。

然後我做了這個測試:

CustomerName = Mid$(CustomerName, 5, 1) 
'reading the first space after my customername 

templength = Len(temp) 
'templength is 1 

所以後一個空間,我的客戶名稱和它的長度爲1,但看起來是這樣的:

enter image description here

,我不能讓我的MSGBOX到顯示。它看起來像是更長,然後len = 1 ...它不等於選項卡或空或空?這到底是什麼?

字符串不可能是唯一的東西,是嗎?所以它必須等於某件事......如果我知道那是什麼,我可以從我的字符串中刪除空格。

+0

嘗試'Debug.Print ASCW(客戶名稱) '查看第一個字符代碼。 – wqw 2013-04-24 07:57:38

+0

Debug.Print AscW(CustomerName)顯示:0 – Dendei 2013-04-24 08:01:42

+0

是否意味着null?或什麼是0? – Dendei 2013-04-24 08:12:01

回答

0

如果你沒有得到來自數據庫的字符串長度的方式,你將不得不通過搜索字符的位置來清潔自己的字符串:

Function CleanString(ByRef str As String) As String 

    Dim posNullChar As Long 
    posNullChar = InStr(1, str, vbNullChar) 
    If posNullChar > 0 Then 
     CleanString = Left$(str, posNullChar - 1) 
    Else 
     CleanString = str 
    End If 

End Function 
+0

是的,我嘗試了類似的東西,並得到它現在的工作,但我認爲你的方法更好,我把它比作一個包含所有字母和數字xD的字符串,但我認爲我仍然需要循環並單獨檢查所有字符,因爲客戶名可以有一個像「漁民公司」的空間,但是非常感謝你:) – Dendei 2013-04-24 08:43:25