die Verwendung von vba zum ändern von Feld-Namen in access 2007
Ich Daten monatlich von einer externen Firma und müssen, ändern Sie das Feld name um eine laufende Nummer. Beispiel Vertrag 11 15 17 1 2 3. Ich bin versucht, verwenden Sie den folgenden code, bekomme aber eine Fehlermeldung, dass ich nicht definieren kann, das Feld mehr als einmal an "fld.Name = (n) + 1". Wie kann ich das korrigieren?
Function ChangeFieldName()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Dim n As Integer
Set db = CurrentDb
Set tbl = db.TableDefs("tdf1")
On Error Resume Next
n = 0
For Each fld In tbl.Fields
fld.Name = (n) + 1
Next fld
Set fld = Nothing
Set tbl = Nothing
Set db = Nothing
End Function
InformationsquelleAutor Kelly K. | 2013-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass code versucht, benennen Sie jedes Feld, um
n + 1
, aber dan
ist nie erhöht, es tatsächlich versucht, benennen Sie jedes Feld, um1
. Die folgende änderung kann tun, was Sie wollen.Allerdings gibt es einige andere Fragen, sollten Sie mit diesem Ansatz. Die
For Each
Schleifen durch die Felder basierend auffld.OrdinalPosition
. Wenn Ihre nummerierte Feldnamen wurden nicht definiert, in der Reihenfolge, die Sie erwarten, haben Sie ein problem. Zum Beispiel, diese Felder inOrdinalPostion
um: 11; 15; 2. In diesem Fall 11 wäre umbenannt zu 1, aber der code wirft einen Fehler beim umbenennen von 15 zu 2.Auch dieser code wird versuchen, umbenennen jeder Feld eine Zahl. Wenn die Tabelle enthält nur nummerierte Feldnamen, das kann nicht sein ein problem. Aber wenn die Tabelle enthält auch andere Feldnamen, die Sie erhalten wollen, haben Sie mehr Arbeit zu tun.
Ein kleiner Punkt ist, dass
fld.Name
ist text. Wenn Sie versuchen, benennen Sie ein Feld um eine Zahl, Access nutzt eigentlich die Anzahl der Zeichenfolge-äquivalent. Das mag gut sein, aber ich würde lieber explizit casten die Zahl in eine Zeichenfolge selbst.Schließlich bitte überdenken Sie diese ...
Weist Access im hintergrund zu ignorieren alle Fehler. Ich denke, Sie sollten loszuwerden, und fügen Sie eine richtige Fehlerbehandlung code-block statt.
InformationsquelleAutor HansUp