j'ai écrit la fonction suivante pour faire un trim sur tous les champs texte
d'une table(table_refs), mon probleme c'est que j'ai une autre table a
traiter(table_datas) et je me dis qu'il doit y avoir un truc plus
intelligent que d'écrire 2 fois tout le code...
donc je me dis qu'il doit falloir écrire avant le 1er "set rst" , un "array
(table_refs,table_datas)" mais je vois pas comment passer ensuite les
valeurs du tableau a l'instruction "set rst = dbs.openrecordset (1ere
valeurdu tableau)" et boucler pour toutes les valeurs du tableau...
j'espere avoir été claire... :-) merci pour votre aide.
Function trimage()
Dim dbs As Database, rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Table_Refs")
rst.MoveFirst
While Not rst.EOF
rst.Edit
For Each Field In rst.Fields
If Field.Type = dbText Then Field.Value = Trim(Field.Value)
'If Field.Type = dbText Then Debug.Print Len(Field.Value) &
" - " & Field.Value & " - " & Field.Name
Next Field
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour Camille,
Si tu veux faire ca avec un Array, tu dois transformer ton code comme ceci :
Function trimage() Dim dbs As DAO.Database, rst As DAO.Recordset Set dbs = CurrentDb Dim temp '<<---- ne pas typer temp Dim i As Integer ' ou Byte <<---- temp = Array("table_refs", "table_datas") '<<---- For i = LBound(temp) To UBound(temp) '<<---- Set rst = dbs.OpenRecordset(temp(i)) '<<---- rst.MoveFirst While Not rst.EOF rst.Edit For Each Field In rst.Fields If Field.Type = dbText Then Field.Value = Trim(Field.Value) 'If Field.Type = dbText Then Debug.Print Len(Field.Value) & _ " - " & Field.Value & " - " & Field.Name Next Field rst.Update rst.MoveNext Wend rst.Close Next i '<<---- Set rst = Nothing End Function
Une autre solution consisterait à faire de ta fonction une fonction générique à laquelle tu passerais en argument le nom de la table ou du recordset.(Utilisable n fois)
Function trimage2(NomRecordset As String) Dim dbs As DAO.Database, rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset(NomRecordset) rst.MoveFirst While Not rst.EOF rst.Edit For Each Field In rst.Fields If Field.Type = dbText Then Field.Value = Trim(Field.Value) 'If Field.Type = dbText Then Debug.Print Len(Field.Value) & _ " - " & Field.Value & " - " & Field.Name Next Field rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End Function
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour a tous
j'ai écrit la fonction suivante pour faire un trim sur tous les champs texte d'une table(table_refs), mon probleme c'est que j'ai une autre table a traiter(table_datas) et je me dis qu'il doit y avoir un truc plus intelligent que d'écrire 2 fois tout le code...
donc je me dis qu'il doit falloir écrire avant le 1er "set rst" , un "array (table_refs,table_datas)" mais je vois pas comment passer ensuite les valeurs du tableau a l'instruction "set rst = dbs.openrecordset (1ere valeurdu tableau)" et boucler pour toutes les valeurs du tableau...
j'espere avoir été claire... :-) merci pour votre aide.
Function trimage() Dim dbs As Database, rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Table_Refs") rst.MoveFirst While Not rst.EOF rst.Edit For Each Field In rst.Fields If Field.Type = dbText Then Field.Value = Trim(Field.Value) 'If Field.Type = dbText Then Debug.Print Len(Field.Value) & " - " & Field.Value & " - " & Field.Name Next Field rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End Function
Bonjour Camille,
Si tu veux faire ca avec un Array, tu dois transformer ton code comme ceci :
Function trimage()
Dim dbs As DAO.Database, rst As DAO.Recordset
Set dbs = CurrentDb
Dim temp '<<---- ne pas typer temp
Dim i As Integer ' ou Byte <<----
temp = Array("table_refs", "table_datas") '<<----
For i = LBound(temp) To UBound(temp) '<<----
Set rst = dbs.OpenRecordset(temp(i)) '<<----
rst.MoveFirst
While Not rst.EOF
rst.Edit
For Each Field In rst.Fields
If Field.Type = dbText Then Field.Value = Trim(Field.Value)
'If Field.Type = dbText Then Debug.Print
Len(Field.Value) & _
" - " & Field.Value & " - " & Field.Name
Next Field
rst.Update
rst.MoveNext
Wend
rst.Close
Next i '<<----
Set rst = Nothing
End Function
Une autre solution consisterait à faire de ta fonction une fonction
générique à laquelle tu passerais en argument le nom de la table ou du
recordset.(Utilisable n fois)
Function trimage2(NomRecordset As String)
Dim dbs As DAO.Database, rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(NomRecordset)
rst.MoveFirst
While Not rst.EOF
rst.Edit
For Each Field In rst.Fields
If Field.Type = dbText Then Field.Value = Trim(Field.Value)
'If Field.Type = dbText Then Debug.Print
Len(Field.Value) & _
" - " & Field.Value & " - " & Field.Name
Next Field
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
End Function
--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour a tous
j'ai écrit la fonction suivante pour faire un trim sur tous les champs texte
d'une table(table_refs), mon probleme c'est que j'ai une autre table a
traiter(table_datas) et je me dis qu'il doit y avoir un truc plus
intelligent que d'écrire 2 fois tout le code...
donc je me dis qu'il doit falloir écrire avant le 1er "set rst" , un "array
(table_refs,table_datas)" mais je vois pas comment passer ensuite les
valeurs du tableau a l'instruction "set rst = dbs.openrecordset (1ere
valeurdu tableau)" et boucler pour toutes les valeurs du tableau...
j'espere avoir été claire... :-) merci pour votre aide.
Function trimage()
Dim dbs As Database, rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Table_Refs")
rst.MoveFirst
While Not rst.EOF
rst.Edit
For Each Field In rst.Fields
If Field.Type = dbText Then Field.Value = Trim(Field.Value)
'If Field.Type = dbText Then Debug.Print Len(Field.Value) &
" - " & Field.Value & " - " & Field.Name
Next Field
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
End Function
Si tu veux faire ca avec un Array, tu dois transformer ton code comme ceci :
Function trimage() Dim dbs As DAO.Database, rst As DAO.Recordset Set dbs = CurrentDb Dim temp '<<---- ne pas typer temp Dim i As Integer ' ou Byte <<---- temp = Array("table_refs", "table_datas") '<<---- For i = LBound(temp) To UBound(temp) '<<---- Set rst = dbs.OpenRecordset(temp(i)) '<<---- rst.MoveFirst While Not rst.EOF rst.Edit For Each Field In rst.Fields If Field.Type = dbText Then Field.Value = Trim(Field.Value) 'If Field.Type = dbText Then Debug.Print Len(Field.Value) & _ " - " & Field.Value & " - " & Field.Name Next Field rst.Update rst.MoveNext Wend rst.Close Next i '<<---- Set rst = Nothing End Function
Une autre solution consisterait à faire de ta fonction une fonction générique à laquelle tu passerais en argument le nom de la table ou du recordset.(Utilisable n fois)
Function trimage2(NomRecordset As String) Dim dbs As DAO.Database, rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset(NomRecordset) rst.MoveFirst While Not rst.EOF rst.Edit For Each Field In rst.Fields If Field.Type = dbText Then Field.Value = Trim(Field.Value) 'If Field.Type = dbText Then Debug.Print Len(Field.Value) & _ " - " & Field.Value & " - " & Field.Name Next Field rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End Function
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour a tous
j'ai écrit la fonction suivante pour faire un trim sur tous les champs texte d'une table(table_refs), mon probleme c'est que j'ai une autre table a traiter(table_datas) et je me dis qu'il doit y avoir un truc plus intelligent que d'écrire 2 fois tout le code...
donc je me dis qu'il doit falloir écrire avant le 1er "set rst" , un "array (table_refs,table_datas)" mais je vois pas comment passer ensuite les valeurs du tableau a l'instruction "set rst = dbs.openrecordset (1ere valeurdu tableau)" et boucler pour toutes les valeurs du tableau...
j'espere avoir été claire... :-) merci pour votre aide.
Function trimage() Dim dbs As Database, rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Table_Refs") rst.MoveFirst While Not rst.EOF rst.Edit For Each Field In rst.Fields If Field.Type = dbText Then Field.Value = Trim(Field.Value) 'If Field.Type = dbText Then Debug.Print Len(Field.Value) & " - " & Field.Value & " - " & Field.Name Next Field rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End Function