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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
C. ERNST
Le #20534811
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"
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


C. ERNST
Le #20535561
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"
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


3stone
Le #20540691
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)
Publicité
Poster une réponse
Anonyme