entoanhuu
Messages postés7Date d'inscriptionvendredi 22 octobre 2004StatutMembreDernière intervention12 juin 2009
-
26 sept. 2008 à 14:27
entoanhuu
Messages postés7Date d'inscriptionvendredi 22 octobre 2004StatutMembreDernière intervention12 juin 2009
-
30 sept. 2008 à 10:52
Bonjour.
Je voudrais pouvoir, à partir du code VBA, changer le format du champ d'une table.
J'ai un programme qui:
1/ ouvre un recordset sur une Requête
2/ Créé une NouvelleTable à partir du recordset de la Requête
Dans l'étape 2/, je boucle sur les champs du recordset de la Requête pour copier les propriétés fld.name, fld.type et fld.size dans ma NouvelleTable. Malheureusement, je ne vois pas comment copier la propriété "format", qui a ma connaissance n'existe pas --> les champs de ma NouvelleTable n'ont pas le même format que ceux de la Requête!
Question: Comment faire pour initialiser le format des champs de ma NouvelleTable comme celui des champs de la Requête?
OU
Comment, après la création de la NouvelleTable, changer la propriété format d'un champ en VBA?
Merci de votre aide.
Pour info, voici le code utilié pour créer une table à partir d'un recordset:
'Creer une table à partir d'un recordset
Function CreateTable(rstTableAlim As DAO.Recordset, strNameTable As String) As Boolean
Dim tdfTable As DAO.TableDef
Dim rstTableNew As DAO.Recordset
Dim fld As DAO.Field
Dim newFld As DAO.Field
Dim test As Boolean
If ExisteObjet(strNameTable) = True Then CurrentDb.TableDefs.Delete strNameTable
'Creation de la table et de tous ses champs
Set tdfTable = CurrentDb.CreateTableDef(strNameTable)
For Each fld In rstTableAlim.Fields
Set newFld = tdfTable.CreateField(fld.Name, fld.TYPE, fld.Size)
tdfTable.Fields.Append newFld
Next
CurrentDb.TableDefs.Append tdfTable
RefreshDatabaseWindow
'Remplissage de la table par le recordset
If rstTableAlim.EOF Then
test = False
Exit Function
End If
Set rstTableNew = CurrentDb.OpenRecordset(strNameTable)
rstTableAlim.MoveFirst
While rstTableAlim.EOF = False
rstTableNew.AddNew
For Each fld In rstTableAlim.Fields If Not IsNull(fld) And Not fld "" Then rstTableNew.Fields(fld.Name) fld
Next
rstTableNew.Update
rstTableAlim.MoveNext
Wend
rstTableNew.Close
Set rstTableNew = Nothing
Set tdfTable = Nothing
test = True
CreateTable = test
End Function