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

Le
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
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
CErnst
Le #18307641
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" 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


Publicité
Poster une réponse
Anonyme