Fred_Yang2013 2019-03-20 09:44 采纳率: 0%
浏览 407
已结题

vb程序运行时报错:“不能重复定义字段”,如何解决?

想用以下代码修改Acess表的列名称:
将列明中的: 201811、201809、201806、 201803 、201712、 201709
分别替换为:201902、201901、201812、201811、201809、201806
例如:_201806变成_201812,代码如下:

Private Sub Command0_Click()
Dim MyDB As New ADOX.Catalog
Dim Obj As ADOX.Table
Dim Col As ADOX.Column
Dim GetChar, GetChar1 As String
Dim Loc, Loc1 As Integer
MyDB.ActiveConnection = CurrentProject.Connection
For Each Obj In MyDB.Tables
If Obj.Name = "客户" Then
For Each Col In MyDB.Tables(Obj.Name).Columns
' 获取最后一个_的位置
 Loc = InStrRev(Col.Name, "_")
'获取将账期与其它字符分开
 GetChar = Right(Col.Name, 6)
 GetChar1 = Left(Col.Name, Loc)
 If GetChar = "201709" Then Obj.Columns(Col.Name).Name = GetChar1 + "201806"
 If GetChar = "201712" Then Obj.Columns(Col.Name).Name = GetChar1 + "201809"
 If GetChar = "201803" Then Obj.Columns(Col.Name).Name = GetChar1 + "201811"
 If GetChar = "201806" Then Obj.Columns(Col.Name).Name = GetChar1 + "201812"
 If GetChar = "201809" Then Obj.Columns(Col.Name).Name = GetChar1 + "201901"
 If GetChar = "201811" Then Obj.Columns(Col.Name).Name = GetChar1 + "201902"
' End If
Next Col
End If
Next Obj
MsgBox "表列名批量修改完毕"
End Sub

但运行程序后报错,全部程序及具体报错截图见附件;
报错时GetChar1的值为"_",请教各位是什么原因;
图片说明图片说明

  • 写回答

1条回答 默认 最新

  • slevenxulianjie 2019-03-20 15:25
    关注

    看了一下你的代码,在如下代码中

    If GetChar = "201709" Then Obj.Columns(Col.Name).Name = GetChar1 + "201806"
     If GetChar = "201712" Then Obj.Columns(Col.Name).Name = GetChar1 + "201809"
     If GetChar = "201803" Then Obj.Columns(Col.Name).Name = GetChar1 + "201811"
     If GetChar = "201806" Then Obj.Columns(Col.Name).Name = GetChar1 + "201812"
     If GetChar = "201809" Then Obj.Columns(Col.Name).Name = GetChar1 + "201901"
     If GetChar = "201811" Then Obj.Columns(Col.Name).Name = GetChar1 + "201902"
    

    请注意这样一个特殊值,**201806**
    第一行改变了table中的值,第四行又索引了该值,所以会在该行报错。

    建议不要在同一个表中修改,将修改结果组织成另一张表,这样才不会影响原表循环判断

    评论

报告相同问题?

悬赏问题

  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services