定义为CHAR的表字段的值带有尾随空格

时间:2019-07-17 08:30:56

标签: vba ms-access

我正在开发一个vba工具来分析日志。 我用CREATE命令创建一个表

     CREATE TABLE " & txtImportedLogTbleName & " (日付 DATETIME, WindowsID CHAR, 名前 CHAR) 

然后从文件中读取值。 导入数据后,每个字段在值后都有许多空格(255的长度)。 尝试修剪以将值导出到数组并删除rs。但到目前为止没有运气。

下面是我尝试过的代码。

Public Function TrimAllFields(ByVal strSQL As String)
   Dim intX, intArrDimX, intY, intArrDimY, intMyRecCounts As Integer
   Dim arrTemp(), txtRsData As String
   Dim db As DAO.Database
   Dim rs As DAO.Recordset

Set db = CurrentDb
CurrentDb.TableDefs.Refresh
Set rs = db.OpenRecordset(strSQL)
On Error Resume Next
If Not rs.EOF Then rs.MoveLast
intMyRecCounts = rs.RecordCount
  If (Err.Number <> 0) Then Call ErrorCatcher(Err.Number, Err.Description, Erl): Err.Clear
  On Error GoTo 0
   If intMyRecCounts > 0 Then
      intArrDimX = rs.RecordCount
      intArrDimY = rs.Fields.Count
      rs.MoveFirst

      ReDim arrTemp(intArrDimX, intArrDimY)
         intX = 0
         While Not rs.EOF And Not rs.BOF
            For intY = 0 To intArrDimY - 1
               If Not rs.Fields(intY).Value = "" Then
                  arrTemp(intX, intY) = Trim(rs.Fields(intY).Value)
                  rs.Edit
                  rs.Fields(intY) = arrTemp(intX, intY)
                  rs.Update
               End If
            Next intY
'            rs.Delete
            rs.MoveNext
             intX = intX + 1
         Wend
rs.Close
Set rs = Nothing
DoCmd.SetWarnings True
End Function

1 个答案:

答案 0 :(得分:2)

在Access DDL中,CHAR列是固定长度的255个字符。插入该列的值将用空格填充(最多255个字符)。

如果要使用可变长度的列,请使用TEXT。默认最大长度仍为255个字符(您可以指定较小的最大长度,例如TEXT(100)),但是不会填充这些值。