Création table automatique

cs_lamarque Messages postés 1 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 7 mars 2006 - 7 mars 2006 à 16:21
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 - 8 mars 2006 à 11:08
Bonjour,

Un formulaire me donne les valeurs des champs d'une base de donnée (par mode assistant). Aussi, l'appui sur un bouton doit entrainer la création ou l'ajout de donnée d'une table devant porter le nom des champs actuels (tuples) visés par le formulaire.

Voici ce que j'ai commencé à taper:

Code:


Code:
,
----

Private Sub Commande14_Click()

Set QueryDef = CurrentDb.CreateQueryDef([Création_table], [CREATE TABLE nom_de_la_table])
End Sub

Seulement, nom_de_la_table doit faire référence à la variable du même nom récupérant la valeur du champs actuels (comme code_interne)
Code:


Code:
,
----

CODE_INTERNE_BeforeUpdate(Cancel As Integer)

et je n'ai pas réussi à le faire.
Cela dit je ne suis pas sûr que par programmation la table portera effectivement ce nom.
Ensuite, comment tester qu'une table existe dèjà pour ajouter des tuples à l'intérieur, ou en créer une nouvelle?
Merci de vos réponses

1 réponse

cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
8 mars 2006 à 11:08
Ton code de Commande14_Click() me parraît inutilement compliqué, j'aurais écrit :
CurrentDb.Execute "CREATE TABLE" & NomTable & "(Champ1 TypeDonnée1, Champ2 TypeDonnée2,...);"
Déjà, avec ce code, tu peux changer le nom de la table avec une variable string.

Ensuite, pour savoir si une table existe, il faut balayer la colection TableDefs de la base de données :
Public Function TableExist(TableName As String) As Boolean
Dim bd as Database, td As TableDef
Set bd=CurrenDb
For Each td In TableDefs
If td.Name=TableName Then
TableExist=True
Exit For
End If
Next td
End Function
Et pour eviter l'erreur de doublons :
Dim bRep as Byte
...
If TableExist(TableName) Then
Beep
bRep=MsgBox("La table " & TableName & " existe déjà!..." & vbCrLf & "Voulez vous la remplacer?...", vbQuestion+vbYesNo+vbDefaultButton2, "La table existe déjà")
If bRep=vbYes Then
bd.Execute "DROP TABLE " & TableName & ";"
bd.Execute "CREATE TABLE " & TableName & "(Champ1 TypeDeDonnée1,...);"
Else
Exit Sub
End If
Else
bd.Execute "CREATE TABLE " & TableName & "(Champ1 TypeDeDonnée1,...);"
End If
...

Bon courage!...
0
Rejoignez-nous