j'ai un beug sur mon appli: je teste l'existance d'une=20
table par un function, quand je fais un pas-=E0-pas, le=20
chemin et le nom de la table sont bons, les variables sont=20
d=E9clar=E9es Public, la table existe et pourtant il me met=20
tableExists =3D false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName=20
As String) As Boolean
cheminTable =3D cheminBase & BaseName
'creation d'une connection sur la base
With ADOcn
.Provider =3D "Microsoft.Jet.OLEDB.4.0"
.ConnectionString =3D "Data Source=3D" & cheminTable
.CursorLocation =3D adUseClient
.Open
End With
' Enum=E8re toutes les tables du catalogue
For Each tbl In cat.Tables
If tbl.Name =3D TableName Then 'TableName=3Dtable=20
recherch=E9e
TableExists =3D True
Exit For
End If
Next
If TableExists =3D False Then
Call CreerTable(cat, TableName)
End If
'Set tbl =3D 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
Clive Lumb
Je ne suis pas expert en ADO, mais puisque c'est urgent et personne n'a repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ?? 2) "cat" est passé en argument, a-t-il été initialisé avant avec un .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0... etc ? 3) Si ça marche en pas-à-pas, que se passe-t-il si tu fais un "debug.print tbl.Name" avant ton test, voit-on la table ? Si oui, respectes-tu les minuscules/majuscules ?(bien que cela ne devrait pas marcher en pas à pas si c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui semble être d'une simplicité ... ********* Sub ADOListTables() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table
' Open the catalog cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print their name For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub *********
Clive
"JCM" a écrit dans le message de news:18be701c41bbf$5ea54750$ Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
Je ne suis pas expert en ADO, mais puisque c'est urgent et personne n'a
repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ??
2) "cat" est passé en argument, a-t-il été initialisé avant avec un
.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0... etc ?
3) Si ça marche en pas-à-pas, que se passe-t-il si tu fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui, respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui semble être d'une
simplicité ...
*********
Sub ADOListTables()
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
' Open the catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print their name
For Each tbl In cat.Tables
If tbl.Type <> "VIEW" Then Debug.Print tbl.Name
Next
End Sub
*********
Clive
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le message de
news:18be701c41bbf$5ea54750$a301280a@phx.gbl...
Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une
table par un function, quand je fais un pas-à-pas, le
chemin et le nom de la table sont bons, les variables sont
déclarées Public, la table existe et pourtant il me met
tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName
As String) As Boolean
cheminTable = cheminBase & BaseName
'creation d'une connection sur la base
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With
' Enumère toutes les tables du catalogue
For Each tbl In cat.Tables
If tbl.Name = TableName Then 'TableName=table
recherchée
TableExists = True
Exit For
End If
Next
If TableExists = False Then
Call CreerTable(cat, TableName)
End If
'Set tbl = Nothing
End Function
Je ne suis pas expert en ADO, mais puisque c'est urgent et personne n'a repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ?? 2) "cat" est passé en argument, a-t-il été initialisé avant avec un .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0... etc ? 3) Si ça marche en pas-à-pas, que se passe-t-il si tu fais un "debug.print tbl.Name" avant ton test, voit-on la table ? Si oui, respectes-tu les minuscules/majuscules ?(bien que cela ne devrait pas marcher en pas à pas si c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui semble être d'une simplicité ... ********* Sub ADOListTables() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table
' Open the catalog cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print their name For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub *********
Clive
"JCM" a écrit dans le message de news:18be701c41bbf$5ea54750$ Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
JCM
Salut Clive
Effectivement j'avais oublié :
cat.ActiveConnection = ADOcn avant la ligne : For Each tbl In cat.Tables
Désolé de t'avoir mis la pression, mais cette appli est tellement Hard que j'en ai la tete dans le brouillard.
Merci pour ton aide Cordialement JCM
-----Message d'origine----- Je ne suis pas expert en ADO, mais puisque c'est urgent
et personne n'a
repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ?? 2) "cat" est passé en argument, a-t-il été initialisé
3) Si ça marche en pas-à-pas, que se passe-t-il si tu
fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui,
respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas
marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui
semble être d'une
simplicité ... ********* Sub ADOListTables() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table
' Open the catalog cat.ActiveConnection
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print
their name
For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub *********
Clive
"JCM" a écrit dans le
message de
news:18be701c41bbf$5ea54750$ Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
.
Salut Clive
Effectivement j'avais oublié :
cat.ActiveConnection = ADOcn
avant la ligne : For Each tbl In cat.Tables
Désolé de t'avoir mis la pression, mais cette appli est
tellement Hard que j'en ai la tete dans le brouillard.
Merci pour ton aide
Cordialement
JCM
-----Message d'origine-----
Je ne suis pas expert en ADO, mais puisque c'est urgent
et personne n'a
repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ??
2) "cat" est passé en argument, a-t-il été initialisé
3) Si ça marche en pas-à-pas, que se passe-t-il si tu
fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui,
respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas
marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui
semble être d'une
simplicité ...
*********
Sub ADOListTables()
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
' Open the catalog
cat.ActiveConnection
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print
their name
For Each tbl In cat.Tables
If tbl.Type <> "VIEW" Then Debug.Print tbl.Name
Next
End Sub
*********
Clive
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le
message de
news:18be701c41bbf$5ea54750$a301280a@phx.gbl...
Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une
table par un function, quand je fais un pas-à-pas, le
chemin et le nom de la table sont bons, les variables sont
déclarées Public, la table existe et pourtant il me met
tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName
As String) As Boolean
cheminTable = cheminBase & BaseName
'creation d'une connection sur la base
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With
' Enumère toutes les tables du catalogue
For Each tbl In cat.Tables
If tbl.Name = TableName Then 'TableName=table
recherchée
TableExists = True
Exit For
End If
Next
If TableExists = False Then
Call CreerTable(cat, TableName)
End If
'Set tbl = Nothing
End Function
3) Si ça marche en pas-à-pas, que se passe-t-il si tu
fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui,
respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas
marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui
semble être d'une
simplicité ... ********* Sub ADOListTables() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table
' Open the catalog cat.ActiveConnection
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print
their name
For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub *********
Clive
"JCM" a écrit dans le
message de
news:18be701c41bbf$5ea54750$ Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
.
Antoun
en pas à pas, il passe sur ton TableExists = True et sur ton Exit For ?
ton cheminTable = cheminBase & BaseName me semble louche... ce ne serait pas plutôt cheminTable = cheminBase & TABLEName ou cheminTable = cheminBase & BaseName & TableName ? (en oubliant les séparateurs)
JCM a écrit:
Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
en pas à pas, il passe sur ton TableExists = True et sur ton Exit For ?
ton cheminTable = cheminBase & BaseName me semble louche... ce ne serait
pas plutôt cheminTable = cheminBase & TABLEName ou cheminTable =
cheminBase & BaseName & TableName ? (en oubliant les séparateurs)
JCM a écrit:
Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une
table par un function, quand je fais un pas-à-pas, le
chemin et le nom de la table sont bons, les variables sont
déclarées Public, la table existe et pourtant il me met
tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName
As String) As Boolean
cheminTable = cheminBase & BaseName
'creation d'une connection sur la base
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With
' Enumère toutes les tables du catalogue
For Each tbl In cat.Tables
If tbl.Name = TableName Then 'TableName=table
recherchée
TableExists = True
Exit For
End If
Next
If TableExists = False Then
Call CreerTable(cat, TableName)
End If
'Set tbl = Nothing
End Function
en pas à pas, il passe sur ton TableExists = True et sur ton Exit For ?
ton cheminTable = cheminBase & BaseName me semble louche... ce ne serait pas plutôt cheminTable = cheminBase & TABLEName ou cheminTable = cheminBase & BaseName & TableName ? (en oubliant les séparateurs)
JCM a écrit:
Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
Antoun
> ton cheminTable = cheminBase & BaseName me semble louche... ce ne serait pas plutôt cheminTable = cheminBase & TABLEName ou cheminTable = cheminBase & BaseName & TableName ? (en oubliant les séparateurs)
c'est idiot ce que je dis là... oublie !
> ton cheminTable = cheminBase & BaseName me semble louche... ce ne serait
pas plutôt cheminTable = cheminBase & TABLEName ou cheminTable =
cheminBase & BaseName & TableName ? (en oubliant les séparateurs)
> ton cheminTable = cheminBase & BaseName me semble louche... ce ne serait pas plutôt cheminTable = cheminBase & TABLEName ou cheminTable = cheminBase & BaseName & TableName ? (en oubliant les séparateurs)
c'est idiot ce que je dis là... oublie !
Antoun
en fait tu ne dis tj pas d'où sors le ADOcn... de plus, si tu fais
> cat.ActiveConnection = ADOcn > avant la ligne : For Each tbl In cat.Tables
ça veut dire que tu transmets un cat existant et que tu lui affectes une autre connexion à l'intérieur de ta fonction, je comprends absolument pas pourquoi tu fais ça... encore une fois, tu peux créer directement tes objets à l'intérieur de la fonction, transmettre des trucs vides c'est un peu bizarre (sauf si tu t'en ressers en-dehors).
JCM a écrit:
Salut Clive
Effectivement j'avais oublié :
cat.ActiveConnection = ADOcn avant la ligne : For Each tbl In cat.Tables
Désolé de t'avoir mis la pression, mais cette appli est tellement Hard que j'en ai la tete dans le brouillard.
Merci pour ton aide Cordialement JCM
-----Message d'origine----- Je ne suis pas expert en ADO, mais puisque c'est urgent
et personne n'a
repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ?? 2) "cat" est passé en argument, a-t-il été initialisé
3) Si ça marche en pas-à-pas, que se passe-t-il si tu
fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui,
respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas
marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui
semble être d'une
simplicité ... ********* Sub ADOListTables() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table
' Open the catalog cat.ActiveConnection
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print
their name
For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub *********
Clive
"JCM" a écrit dans le
message de
news:18be701c41bbf$5ea54750$ Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function
Merci de votre aide cordialement JCM
.
en fait tu ne dis tj pas d'où sors le ADOcn... de plus, si tu fais
> cat.ActiveConnection = ADOcn
> avant la ligne : For Each tbl In cat.Tables
ça veut dire que tu transmets un cat existant et que tu lui affectes une
autre connexion à l'intérieur de ta fonction, je comprends absolument
pas pourquoi tu fais ça... encore une fois, tu peux créer directement
tes objets à l'intérieur de la fonction, transmettre des trucs vides
c'est un peu bizarre (sauf si tu t'en ressers en-dehors).
JCM a écrit:
Salut Clive
Effectivement j'avais oublié :
cat.ActiveConnection = ADOcn
avant la ligne : For Each tbl In cat.Tables
Désolé de t'avoir mis la pression, mais cette appli est
tellement Hard que j'en ai la tete dans le brouillard.
Merci pour ton aide
Cordialement
JCM
-----Message d'origine-----
Je ne suis pas expert en ADO, mais puisque c'est urgent
et personne n'a
repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ??
2) "cat" est passé en argument, a-t-il été initialisé
3) Si ça marche en pas-à-pas, que se passe-t-il si tu
fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui,
respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas
marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui
semble être d'une
simplicité ...
*********
Sub ADOListTables()
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
' Open the catalog
cat.ActiveConnection
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print
their name
For Each tbl In cat.Tables
If tbl.Type <> "VIEW" Then Debug.Print tbl.Name
Next
End Sub
*********
Clive
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le
message de
news:18be701c41bbf$5ea54750$a301280a@phx.gbl...
Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une
table par un function, quand je fais un pas-à-pas, le
chemin et le nom de la table sont bons, les variables sont
déclarées Public, la table existe et pourtant il me met
tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName
As String) As Boolean
cheminTable = cheminBase & BaseName
'creation d'une connection sur la base
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With
' Enumère toutes les tables du catalogue
For Each tbl In cat.Tables
If tbl.Name = TableName Then 'TableName=table
recherchée
TableExists = True
Exit For
End If
Next
If TableExists = False Then
Call CreerTable(cat, TableName)
End If
'Set tbl = Nothing
End Function
en fait tu ne dis tj pas d'où sors le ADOcn... de plus, si tu fais
> cat.ActiveConnection = ADOcn > avant la ligne : For Each tbl In cat.Tables
ça veut dire que tu transmets un cat existant et que tu lui affectes une autre connexion à l'intérieur de ta fonction, je comprends absolument pas pourquoi tu fais ça... encore une fois, tu peux créer directement tes objets à l'intérieur de la fonction, transmettre des trucs vides c'est un peu bizarre (sauf si tu t'en ressers en-dehors).
JCM a écrit:
Salut Clive
Effectivement j'avais oublié :
cat.ActiveConnection = ADOcn avant la ligne : For Each tbl In cat.Tables
Désolé de t'avoir mis la pression, mais cette appli est tellement Hard que j'en ai la tete dans le brouillard.
Merci pour ton aide Cordialement JCM
-----Message d'origine----- Je ne suis pas expert en ADO, mais puisque c'est urgent
et personne n'a
repondu...
1) D'ou sort "ADOcn" ? il sert à quoi ?? 2) "cat" est passé en argument, a-t-il été initialisé
3) Si ça marche en pas-à-pas, que se passe-t-il si tu
fais un "debug.print
tbl.Name" avant ton test, voit-on la table ? Si oui,
respectes-tu les
minuscules/majuscules ?(bien que cela ne devrait pas
marcher en pas à pas si
c'est le problème)
Je me suis référé à l'exemple MSDN/MDAC suivant qui
semble être d'une
simplicité ... ********* Sub ADOListTables() Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table
' Open the catalog cat.ActiveConnection
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.NorthWind.mdb;"
' Loop through the tables in the database and print
their name
For Each tbl In cat.Tables If tbl.Type <> "VIEW" Then Debug.Print tbl.Name Next End Sub *********
Clive
"JCM" a écrit dans le
message de
news:18be701c41bbf$5ea54750$ Bonjour à tous
j'ai un beug sur mon appli: je teste l'existance d'une table par un function, quand je fais un pas-à-pas, le chemin et le nom de la table sont bons, les variables sont déclarées Public, la table existe et pourtant il me met tableExists = false.
Voici mon code pouvez-vous me dire ou est l'erreur
Public Function TableExists(cat As ADOX.Catalog, TableName As String) As Boolean cheminTable = cheminBase & BaseName
'creation d'une connection sur la base With ADOcn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & cheminTable .CursorLocation = adUseClient .Open End With
' Enumère toutes les tables du catalogue For Each tbl In cat.Tables If tbl.Name = TableName Then 'TableName=table recherchée TableExists = True Exit For End If Next If TableExists = False Then Call CreerTable(cat, TableName) End If 'Set tbl = Nothing End Function