Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise à Jour de la Longueur d'un champ d'une Table par VBA

3 réponses
Avatar
fmvac
Bonjour,
Je suis à la recherche du code VBA pour modifier la longueur d'un champ
texte d'une table que j'ai créé avec le code :
Dim FLD As Field, TD As TableDef, Db As Database
Set Db = Application.CurrentDb
Set TD = Db.TableDefs("Client")
Set FLD = TD.CreateField("Tel9", dbText, 10)
TD.Fields.Append FLD
Ce que je souhaite faire c'est de porter la longueur du champ "Tel9" à 14
via du code VBA afin d'automatiser la Modification
D'avance Merci

3 réponses

Avatar
C. ERNST
Global DbTo As Database

'
Sub Changer()
Set DbTo = DBEngine.Workspaces(0).OpenDatabase("Chemin complet et nom
de la base", True, False)
Call vChgField("Nom de la Table", "Nom du Champ", strTypeF, lngSizeF)
' Valeurs de strTypeF : "Boolean", "dbByte" , "dbInteger" , "dbLong" ,
"dbCurrency" , "dbSingle",
"dbDouble", "dbDate" , "dbText" ,
"dbLongBinary" , "dbMemo" , "dbGUID"
' lngSizeF est à 0 sauf pour "DbText" où il faut donner la longueur
End sub

private Sub vChgField(tblName As String, fldName As String, fldType As
String, fldLenght As Long)
Dim dft As TableDef
Set dft = DbTo.TableDefs(tblName)
'Creation d'un champ
Call vCreateField(tblName, fldName & "xyz", fldType, fldLenght)
DbTo.Execute "UPDATE [" & tblName & "] Set [" & fldName & "xyz] = [" &
fldName & "]"
dft.Fields.Delete fldName
dft.Fields(fldName & "xyz").Name = fldName
dft.Fields.Refresh
End Sub

private Sub vCreateField(tblName As String, fldName As String, fldType As
String, fldLenght As Long)
Dim dft As TableDef, chp As Field
Set dft = DbTo.TableDefs(tblName)

Select Case fldType
Case "dbBoolean": Set chp = dft.CreateField(fldName,
dbBoolean)
Case "dbByte": Set chp = dft.CreateField(fldName, dbByte)
Case "dbInteger": Set chp = dft.CreateField(fldName,
dbInteger)
Case "dbLong": Set chp = dft.CreateField(fldName, dbLong)
Case "dbCurrency": Set chp = dft.CreateField(fldName,
dbCurrency)
Case "dbSingle": Set chp = dft.CreateField(fldName, dbSingle)
Case "dbDouble": Set chp = dft.CreateField(fldName, dbDouble)
Case "dbDate": Set chp = dft.CreateField(fldName, dbDate)
Case "dbText": Set chp = dft.CreateField(fldName, dbText,
fldLenght): dft.CreateProperty
Case "dbLongBinary": Set chp = dft.CreateField(fldName,
dbLongBinary)
Case "dbMemo": Set chp = dft.CreateField(fldName, dbMemo)
Case "dbGUID": Set chp = dft.CreateField(fldName, dbGUID)
End Select
dft.Fields.Append chp
dft.Fields.Refresh
End Sub





"fmvac" a écrit dans le message de news:

Bonjour,
Je suis à la recherche du code VBA pour modifier la longueur d'un champ
texte d'une table que j'ai créé avec le code :
Dim FLD As Field, TD As TableDef, Db As Database
Set Db = Application.CurrentDb
Set TD = Db.TableDefs("Client")
Set FLD = TD.CreateField("Tel9", dbText, 10)
TD.Fields.Append FLD
Ce que je souhaite faire c'est de porter la longueur du champ "Tel9" à 14
via du code VBA afin d'automatiser la Modification
D'avance Merci


Avatar
C. ERNST
Global DbTo As Database

'
Sub Changer()
Set DbTo = DBEngine.Workspaces(0).OpenDatabase("Chemin complet et nom
de la base", True, False)
Call vChgField("Nom de la Table", "Nom du Champ", strTypeF, lngSizeF)
' Valeurs de strTypeF : "Boolean", "dbByte" , "dbInteger" , "dbLong" ,
"dbCurrency" , "dbSingle",
"dbDouble", "dbDate" , "dbText" ,
"dbLongBinary" , "dbMemo" , "dbGUID"
' lngSizeF est à 0 sauf pour "DbText" où il faut donner la longueur
End sub

private Sub vChgField(tblName As String, fldName As String, fldType As
String, fldLenght As Long)
Dim dft As TableDef
Set dft = DbTo.TableDefs(tblName)
'Creation d'un champ
Call vCreateField(tblName, fldName & "xyz", fldType, fldLenght)
DbTo.Execute "UPDATE [" & tblName & "] Set [" & fldName & "xyz] = [" &
fldName & "]"
dft.Fields.Delete fldName
dft.Fields(fldName & "xyz").Name = fldName
dft.Fields.Refresh
End Sub

private Sub vCreateField(tblName As String, fldName As String, fldType As
String, fldLenght As Long)
Dim dft As TableDef, chp As Field
Set dft = DbTo.TableDefs(tblName)

Select Case fldType
Case "dbBoolean": Set chp = dft.CreateField(fldName,
dbBoolean)
Case "dbByte": Set chp = dft.CreateField(fldName, dbByte)
Case "dbInteger": Set chp = dft.CreateField(fldName,
dbInteger)
Case "dbLong": Set chp = dft.CreateField(fldName, dbLong)
Case "dbCurrency": Set chp = dft.CreateField(fldName,
dbCurrency)
Case "dbSingle": Set chp = dft.CreateField(fldName, dbSingle)
Case "dbDouble": Set chp = dft.CreateField(fldName, dbDouble)
Case "dbDate": Set chp = dft.CreateField(fldName, dbDate)
Case "dbText": Set chp = dft.CreateField(fldName, dbText,
fldLenght): dft.CreateProperty
Case "dbLongBinary": Set chp = dft.CreateField(fldName,
dbLongBinary)
Case "dbMemo": Set chp = dft.CreateField(fldName, dbMemo)
Case "dbGUID": Set chp = dft.CreateField(fldName, dbGUID)
End Select
dft.Fields.Append chp
dft.Fields.Refresh
End Sub



"fmvac" a écrit dans le message de news:

Bonjour,
Je suis à la recherche du code VBA pour modifier la longueur d'un champ
texte d'une table que j'ai créé avec le code :
Dim FLD As Field, TD As TableDef, Db As Database
Set Db = Application.CurrentDb
Set TD = Db.TableDefs("Client")
Set FLD = TD.CreateField("Tel9", dbText, 10)
TD.Fields.Append FLD
Ce que je souhaite faire c'est de porter la longueur du champ "Tel9" à 14
via du code VBA afin d'automatiser la Modification
D'avance Merci


Avatar
3stone
Salut,

fmvac wrote:
Bonjour,
Je suis à la recherche du code VBA pour modifier la longueur d'un
champ texte d'une table que j'ai créé avec le code :
Dim FLD As Field, TD As TableDef, Db As Database
Set Db = Application.CurrentDb
Set TD = Db.TableDefs("Client")
Set FLD = TD.CreateField("Tel9", dbText, 10)
TD.Fields.Append FLD
Ce que je souhaite faire c'est de porter la longueur du champ "Tel9"
à 14 via du code VBA afin d'automatiser la Modification
D'avance Merci




Un petit code avec gestion d'erreur...

http://www.freevbcode.com/ShowCode.asp?IDE99

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)