Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table. Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2" n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1" existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table. Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2" n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1" existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table. Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2" n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1" existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
bonjour,
Il faut gérer les erreurs :
On error goto xx
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1 par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table. Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2" n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1" existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
bonjour,
Il faut gérer les erreurs :
On error goto xx
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1 par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table. Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2" n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1" existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
bonjour,
Il faut gérer les erreurs :
On error goto xx
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1 par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table. Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2" n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1" existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message de
news:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message de
news: 04027E33-FD74-43F7-AD16-939E959EDB0A@microsoft.com...
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message de
news:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le 1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ "Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message de
news:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le
1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message de
news: 04027E33-FD74-43F7-AD16-939E959EDB0A@microsoft.com...
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le
1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message de
news:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer le
1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ "Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message
de
news:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer
le
1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message de
news: 88CFD5F4-DBF0-4702-A855-846DA1C61D4E@microsoft.com...
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message
de
news: 04027E33-FD74-43F7-AD16-939E959EDB0A@microsoft.com...
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer
le
1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message
de
news:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer
le
1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
messaged'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message
denews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer
le1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" <nospam@nospam.net> a écrit dans le message de
news:43a1753b$0$10962$ba620e4c@news.skynet.be...
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message de
news: 88CFD5F4-DBF0-4702-A855-846DA1C61D4E@microsoft.com...
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message
de
news: 04027E33-FD74-43F7-AD16-939E959EDB0A@microsoft.com...
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer
le
1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
messaged'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le message
denews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis remplacer
le1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a écrit dans le message
de
news: 43a17712$Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message
de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
messaged'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le
message
denews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message
de
news: 43a17712$1@news.sncf.fr...
Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" <nospam@nospam.net> a écrit dans le message de
news:43a1753b$0$10962$ba620e4c@news.skynet.be...
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message
de
news: 88CFD5F4-DBF0-4702-A855-846DA1C61D4E@microsoft.com...
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le
message
de
news: 04027E33-FD74-43F7-AD16-939E959EDB0A@microsoft.com...
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le
1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a écrit dans le message
de
news: 43a17712$Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message
de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
messaged'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le
message
denews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Re,
C'est bizarre, j'ai testé ton code et il fonctionne sans problème...
Plutôt que de le lancer par une macro, fait une autre fonction de ce type
:
Fonction test
ajoutchamptbleA "champ1",10
ajoutchamptbleA "champ2",10
end function
que tu lances en appuyant sur F8 pour exécuter ton code en mode pas à
pas...
du coup, tu verras tout de suite, si tu sors de ta fonction, alors que tu
ne
devrais
pas...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a17a79$0$10278$
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a écrit dans le message
denews: 43a17712$Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message
denews:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
messaged'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le
messagedenews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacerle1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans
une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------Function AjoutChampTbleA(strNomChamp As String, intTypeChamp
As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Re,
C'est bizarre, j'ai testé ton code et il fonctionne sans problème...
Plutôt que de le lancer par une macro, fait une autre fonction de ce type
:
Fonction test
ajoutchamptbleA "champ1",10
ajoutchamptbleA "champ2",10
end function
que tu lances en appuyant sur F8 pour exécuter ton code en mode pas à
pas...
du coup, tu verras tout de suite, si tu sors de ta fonction, alors que tu
ne
devrais
pas...
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" <nospam@nospam.net> a écrit dans le message de
news:43a17a79$0$10278$ba620e4c@news.skynet.be...
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> a écrit dans le message
de
news: 43a17712$1@news.sncf.fr...
Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" <nospam@nospam.net> a écrit dans le message de
news:43a1753b$0$10962$ba620e4c@news.skynet.be...
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le message
de
news: 88CFD5F4-DBF0-4702-A855-846DA1C61D4E@microsoft.com...
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" <Patrice@discussions.microsoft.com> a écrit dans le
message
de
news: 04027E33-FD74-43F7-AD16-939E959EDB0A@microsoft.com...
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le
1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans
une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp
As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Re,
C'est bizarre, j'ai testé ton code et il fonctionne sans problème...
Plutôt que de le lancer par une macro, fait une autre fonction de ce type
:
Fonction test
ajoutchamptbleA "champ1",10
ajoutchamptbleA "champ2",10
end function
que tu lances en appuyant sur F8 pour exécuter ton code en mode pas à
pas...
du coup, tu verras tout de suite, si tu sors de ta fonction, alors que tu
ne
devrais
pas...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a17a79$0$10278$
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a écrit dans le message
denews: 43a17712$Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si "Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a écrit dans le message
denews:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
messaged'erreur. Tout simplement le champ "Champ2" n'est pas créé.
Une idée?
Pat
"Patrice" a écrit dans le
messagedenews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacerle1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans
une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même si le champ
"Champ1"existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------Function AjoutChampTbleA(strNomChamp As String, intTypeChamp
As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Impec, je me doutais bien que c'était cette macro qui bloquait et comme
un
con je ne pensais pas à la lancer en VBA.
Merci beaucoup pour vos aides précieuses.
Pat
"Jessy Sempere [MVP]" a
écrit dans le message de
news:Re,
C'est bizarre, j'ai testé ton code et il fonctionne sans
problème...
Plutôt que de le lancer par une macro, fait une autre fonction de ce
type
:
Fonction test
ajoutchamptbleA "champ1",10
ajoutchamptbleA "champ2",10
end function
que tu lances en appuyant sur F8 pour exécuter ton code en mode pas
à
pas...
du coup, tu verras tout de suite, si tu sors de ta fonction, alors que tu
ne
devrais
pas...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a17a79$0$10278$
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça
fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a
écrit dans le message
de
news: 43a17712$Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de
fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si
"Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a
écrit dans le message
de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas
créé.
Une idée?
Pat
"Patrice" a
écrit dans le
message
denews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans
une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même
si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------Function AjoutChampTbleA(strNomChamp As String, intTypeChamp
As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Impec, je me doutais bien que c'était cette macro qui bloquait et comme
un
con je ne pensais pas à la lancer en VBA.
Merci beaucoup pour vos aides précieuses.
Pat
"Jessy Sempere [MVP]" a
écrit dans le message de
news:
Re,
C'est bizarre, j'ai testé ton code et il fonctionne sans
problème...
Plutôt que de le lancer par une macro, fait une autre fonction de ce
type
:
Fonction test
ajoutchamptbleA "champ1",10
ajoutchamptbleA "champ2",10
end function
que tu lances en appuyant sur F8 pour exécuter ton code en mode pas
à
pas...
du coup, tu verras tout de suite, si tu sors de ta fonction, alors que tu
ne
devrais
pas...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a17a79$0$10278$
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça
fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a
écrit dans le message
de
news: 43a17712$
Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de
fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si
"Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a
écrit dans le message
de
news:
Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas
créé.
Une idée?
Pat
"Patrice" a
écrit dans le
message
de
news:
Petite précision
bonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le
1
par
ce n°erreur
Bonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans
une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même
si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp
As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
Impec, je me doutais bien que c'était cette macro qui bloquait et comme
un
con je ne pensais pas à la lancer en VBA.
Merci beaucoup pour vos aides précieuses.
Pat
"Jessy Sempere [MVP]" a
écrit dans le message de
news:Re,
C'est bizarre, j'ai testé ton code et il fonctionne sans
problème...
Plutôt que de le lancer par une macro, fait une autre fonction de ce
type
:
Fonction test
ajoutchamptbleA "champ1",10
ajoutchamptbleA "champ2",10
end function
que tu lances en appuyant sur F8 pour exécuter ton code en mode pas
à
pas...
du coup, tu verras tout de suite, si tu sors de ta fonction, alors que tu
ne
devrais
pas...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a17a79$0$10278$
Merci pour ton aide Jessie mais ça ne fonctionne pas. Ça
fonctionne si
"Champ1" n'existe pas.
Pat
"Jessy Sempere [MVP]" a
écrit dans le message
de
news: 43a17712$Bonjour
Dans le doute, ré-initialise ta variable Trouve en début de
fonction.
Et remplaces aussi, if not trouve then par if trouveúlse then
Du coup ta fonction devrait avoir cette tête :
Function AjoutChampTbleA(strNomChamp As String, intTypeChamp As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database, Trouve
As
Boolean
trouve = false
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If trouve = false Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Pat" a écrit dans le message de
news:43a1753b$0$10962$
Rien à faire il ne crée pas le "Champ2" si
"Champ1" existe, j'ai plus
l'impression que c'est la macro qui s'arrête.
Merci
"Patrice" a
écrit dans le message
de
news:Ne test pas si il existe déjà
Merci pour ton aide Patrice, le problème c'est qu'il n'y a aucun
message
d'erreur. Tout simplement le champ "Champ2" n'est pas
créé.
Une idée?
Pat
"Patrice" a
écrit dans le
message
denews:Petite précisionbonjour,
Il faut gérer les erreurs :
On error goto xx
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)out_xx:
exit sub
xx:
if err.number=1 then resume next
msgbox err.number & " " & err.description
resume out_xx
Ds le 1er passage, relever le n° d'erreur du message puis
remplacer
le1
par
ce n°erreurBonjour,
J'utilise le code ci plus bas, pour ajouter des champs dans
une
table.
Je
lance ce code via une macro.
Comme je veux rajouter plusieurs champs dans la "TbleA" j'ai
plusieurs
lignes de commande l'une en dessous de l'autre.
Exécuter code: AjoutChampTble1("Champ1",10)
Exécuter code: AjoutChampTble1("Champ2",10)
Etc....
Tout va bien, sauf que si le champ "Champ1" existe, le champ
"Champ2"
n'est
pas créé.
Comment faire pour créer le champ "Champ2" même
si le champ
"Champ1"
existe?
Merci pour vos lumières
Pat
----------------------------------------------------------------Function AjoutChampTbleA(strNomChamp As String, intTypeChamp
As
Integer,
Optional Longueur As Integer = 50)
Dim t As DAO.TableDef, w As DAO.Workspace, bd As DAO.Database,
Trouve
As
Boolean
Set w = DBEngine.Workspaces(0)
Set bd = w.OpenDatabase("C:db.mdb")
Set t = bd.TableDefs("TbleA")
Dim f As DAO.Field
For Each f In t.Fields
If LCase(f.Name) = LCase(strNomChamp) Then
Trouve = True
Exit For
End If
Next
If Not Trouve Then
With t
Set f = .CreateField(strNomChamp, intTypeChamp)
If intTypeChamp = dbText Then
f.Size = Longueur
End If
.Fields.Append f
End With
End If
bd.Close
w.Close
Set f = Nothing
Set t = Nothing
Set bd = Nothing
Set w = Nothing
End Function