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

Vba 定义为CHAR的表字段具有尾随空格的值,vba,ms-access,Vba,Ms Access,我正在开发一个vba工具来分析日志。 我使用create命令创建一个表 CREATE TABLE " & txtImportedLogTbleName & " (日付 DATETIME, WindowsID CHAR, 名前 CHAR) 然后从文件中读取值。 导入数据后,每个字段的值后面都有许多空格(255为数据长度)。 尝试Trim将值导出到数组并删除了rs。但目前为止运气不佳 下面是我试过的代码 Public Function TrimAllFields(ByV

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

     CREATE TABLE " & txtImportedLogTbleName & " (日付 DATETIME, WindowsID CHAR, 名前 CHAR) 
然后从文件中读取值。 导入数据后,每个字段的值后面都有许多空格(255为数据长度)。 尝试Trim将值导出到数组并删除了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
公共函数TrimAllFields(ByVal strSQL作为字符串)
Dim intX、intArrDimX、intY、intArrDimY、INTMYREC计为整数
Dim ARRTTEMP(),txtRsData为字符串
Dim数据库作为DAO.Database
Dim rs作为DAO.Recordset
Set db=CurrentDb
CurrentDb.TableDefs.Refresh
Set rs=db.OpenRecordset(strSQL)
出错时继续下一步
如果不是rs.EOF,则rs.MoveLast
intMyRecCounts=rs.RecordCount
如果是(Err.Number 0),则调用ErrorCatcher(Err.Number,Err.Description,Erl):Err.Clear
错误转到0
如果intMyRecCounts>0,则
intArrDimX=rs.RecordCount
intArrDimY=rs.Fields.Count
先走一步
ReDim ARRTTEMP(intArrDimX,intArrDimY)
intX=0
而不是rs.EOF和rs.BOF
对于intY=0到intArrDimY-1
如果不是rs.Fields(intY).Value=“”,则
arrTemp(intX,intY)=微调(rs.Fields(intY).Value)
rs.编辑
rs.Fields(intY)=arrTemp(intX,intY)
rs.更新
如果结束
下一个intY
'rs.删除
下一个
intX=intX+1
温德
rs.Close
设置rs=无
DoCmd.SetWarnings True
端函数

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

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