Problème de Création de table access via DAO

cs_Tresor Messages postés 38 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 1 mai 2006 - 15 nov. 2003 à 22:47
cs_phil23 Messages postés 79 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 14 juillet 2005 - 16 nov. 2003 à 00:02
Bonjour à tous !
Je programme en Visual Basic

J'ai un petit problème avec la création des Tables avec DAO
Au fait, j'ai tout ce qu'il me faut comme code

Voici le code que j'utilise pour créer une nouvelle table :
Sub CréerTable1(noms As String)
Dim db As DAO.Database
Dim Instruction As String

Set db = DAO.Workspaces(0).OpenDatabase(App.Path & "\Cyberbureautique.mdb", False, False)

Instruction = "CREATE TABLE" & " [" & noms & "] " & "( [Service] text(255), [Quantité] Single, [Total] Single);"

db.Execute Instruction
db.Close
Set db = Nothing
End Sub

Mais j'ai remarqué ceci:
Lorsque j'essaie d'acceder à ma table pour la PREMIERE fois avec le code:
DtRecette.RecordSource = noms: DtRecette.Refresh
Il me renvoie une erreur "Table inexistante !!!".

Mais ce qui est currieur, c'est lorsque je reboute mon programme (appui sur F5), il passe la ligne sans problème (comme si l'erreur avait disparut). Et le problème disparait aux prochaines executions, jusqu'à la création de la nouvelle table.
En bref, il me pose de problème pour acceder pour la PREMIERE fois à la Table (nouvellement créée).

Donc, je ne sais plus quoi faire ! :-(

Merci de me dépanner ...

1 réponse

cs_phil23 Messages postés 79 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 14 juillet 2005 1
16 nov. 2003 à 00:02
Si je comprend bien, tu as quelque chose comme ça:
DtRecette (qui est je pense un contrôle data)

DtRecette.Database = App.Path & "\Cyberbureautique.mdb"
DtRecette.RecordSource = "NomTable"
DtRecette.Refresh

Call CréerTable1("NouvelleTable")

DtRecette.RecordSource = "NouvelleTable"
DtRecette.Refresh

L'erreur se produit car je pense que DtRecette ne sais pas que cette nouvelle table existe car au moment de l'ouverture de DtRecette (DtRecette.Database) la table n'existait pas.
Essaie de rafraîchir DtRecette:

DtRecette.Database = App.Path & "\Cyberbureautique.mdb"
DtRecette.RecordSource = "NomTable"
DtRecette.Refresh

'Nombre de table avant la création
MsgBox DtRecette.Database.TableDefs.Count

Call CréerTable1("NouvelleTable")

'Rafraîchit la définition des tables
DtRecette.Database.TableDefs.Refresh
'Nombre de table après la création (normalement + 1)
MsgBox DtRecette.Database.TableDefs.Count

DtRecette.RecordSource = "NouvelleTable"
DtRecette.Refresh
0
Rejoignez-nous