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

changer la taille d'un champ text dans une table par du code

1 réponse
Avatar
michel_bdx
bonjour

voila j'ai une table dans une base de données du style pomme_data.mdb
dans cette base j'ai une table "rubrique" avec un champ "code" de type
'text' que j'ai limité a 3 caractères mais maintenant je voudrais le passer à
5 caracteres mais par du code et à partir d'une base applicative du genre
pomme_appi.mdb
et tout cela sans perdre mes données qui se trouvent dans ce champ

merci pour votre aide

michel

1 réponse

Avatar
CErnst
La taille d'un champ une fois défini est en lecture seule.
La procédure consiste donc à créer un nouveau champ ayant un nom quelconque
"Codexyz" par exemple et les caractéristique du nouveau champ
Puis par une requête, vous remplissez "Champxyz" par les valeurs du champ
"Code"
Vous pouvez alors supprimer le champ "Code" puis renommer "Champxyz" en
"Code"

Mais attention, si le champ "Code" entre dans des relations entre tables, il
faut d'abord supprimer ces relations puis effectuer la procédure de part et
d'autre de la relation et enfin refaire la relation...

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

Sub vCreateField(tblName As String, fldName As String, fldType As String,
fldLenght As Long, Ajout As Boolean)
'Creation d'un champ

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
If Ajout = True Then
dft.Fields.Append chp
Else
'dft.Fields(1).Type = dbLong
chp.Type = dbLong
dft.Fields.Refresh
End If
dft.Fields.Refresh
End Sub


"michel_bdx" a écrit dans le message
de news:
bonjour

voila j'ai une table dans une base de données du style pomme_data.mdb
dans cette base j'ai une table "rubrique" avec un champ "code" de type
'text' que j'ai limité a 3 caractères mais maintenant je voudrais le
passer à
5 caracteres mais par du code et à partir d'une base applicative du genre
pomme_appi.mdb
et tout cela sans perdre mes données qui se trouvent dans ce champ

merci pour votre aide

michel