actualiser une table

Le
Pascal
Bien le bonjour,
Pourriez-vous m'indiquer de quelle manière en VBA je peut actualiser la
création d'une nouvelle table
car cela me produit une erreur,
je crée la table en DAO, je ferme proprement
si je tente de l'ouvrir directement , l'erreur se produit


est-ce par la propriété CONNECT de la collection tableDef ?

merci de m'aider
Pascal
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ze Titi
Le #6179991
Hello Pascal !

On ne sait pas quelle est l'erreur, on ne peut pas beaucoup t'aider...
Mais un
CurrentDb.TableDefs.Refresh
DoEvents

après la création devrait résoudre ton problème.

Dis-nous !

En ce jour mémorable du mardi 27/02/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bien le bonjour,
Pourriez-vous m'indiquer de quelle manière en VBA je peut actualiser la
création d'une nouvelle table
car cela me produit une erreur,
je crée la table en DAO, je ferme proprement
si je tente de l'ouvrir directement , l'erreur se produit


est-ce par la propriété CONNECT de la collection tableDef ?

merci de m'aider
Pascal


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Pascal
Le #6179931
hello ze titi,
merci je vais tenter cela, je pense que cela devrait fonctionner, je
cherchai plus compliqué, sais pas pourquoi!
l'erreur en question:
je crée la table en DAO, je ferme et tente de l'ouvrir pour la remplir
à ce moment le message apparaît indiquant que la table n'a pas été trouvée
merci de ton aide
A Pascal



"ze Titi"
Hello Pascal !

On ne sait pas quelle est l'erreur, on ne peut pas beaucoup t'aider...
Mais un
CurrentDb.TableDefs.Refresh
DoEvents

après la création devrait résoudre ton problème.

Dis-nous !

En ce jour mémorable du mardi 27/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bien le bonjour,
Pourriez-vous m'indiquer de quelle manière en VBA je peut actualiser la
création d'une nouvelle table
car cela me produit une erreur,
je crée la table en DAO, je ferme proprement
si je tente de l'ouvrir directement , l'erreur se produit


est-ce par la propriété CONNECT de la collection tableDef ?

merci de m'aider
Pascal


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info





Pascal
Le #6179911
Rehello,
non cela ne fonctionne pas, le numéro d'erreur est 3078
je cherche aussi
bien à toi
Pascal

"Pascal"
hello ze titi,
merci je vais tenter cela, je pense que cela devrait fonctionner, je
cherchai plus compliqué, sais pas pourquoi!
l'erreur en question:
je crée la table en DAO, je ferme et tente de l'ouvrir pour la remplir
à ce moment le message apparaît indiquant que la table n'a pas été trouvée
merci de ton aide
A > Pascal



"ze Titi" news:
Hello Pascal !

On ne sait pas quelle est l'erreur, on ne peut pas beaucoup t'aider...
Mais un
CurrentDb.TableDefs.Refresh
DoEvents

après la création devrait résoudre ton problème.

Dis-nous !

En ce jour mémorable du mardi 27/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bien le bonjour,
Pourriez-vous m'indiquer de quelle manière en VBA je peut actualiser la
création d'une nouvelle table
car cela me produit une erreur,
je crée la table en DAO, je ferme proprement
si je tente de l'ouvrir directement , l'erreur se produit


est-ce par la propriété CONNECT de la collection tableDef ?

merci de m'aider
Pascal


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info








ze Titi
Le #6179871
Je pense qu'en nous donnant ton code, on t'aiderait plus
efficacement...

En ce jour exceptionnel du mardi 27/02/2007, tu nous as très
généreusement gratifié du message suivant:

hello ze titi,
merci je vais tenter cela, je pense que cela devrait fonctionner, je cherchai
plus compliqué, sais pas pourquoi!
l'erreur en question:
je crée la table en DAO, je ferme et tente de l'ouvrir pour la remplir
à ce moment le message apparaît indiquant que la table n'a pas été trouvée
merci de ton aide
A > Pascal



"ze Titi"
Hello Pascal !

On ne sait pas quelle est l'erreur, on ne peut pas beaucoup t'aider... Mais
un
CurrentDb.TableDefs.Refresh
DoEvents

après la création devrait résoudre ton problème.

Dis-nous !

En ce jour mémorable du mardi 27/02/2007, tu as entrepris la lourde tâche
de taper sur ton clavier :
Bien le bonjour,
Pourriez-vous m'indiquer de quelle manière en VBA je peut actualiser la
création d'une nouvelle table
car cela me produit une erreur,
je crée la table en DAO, je ferme proprement
si je tente de l'ouvrir directement , l'erreur se produit


est-ce par la propriété CONNECT de la collection tableDef ?

merci de m'aider
Pascal


-- Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Eric
Le #6179861
Bonjour,

Tu n'aurais pas oublié, après avoir créé ta table de l'ajouter à la
collection des tables de la bd ?
Manquerait pas un CurrentDb.Tabledefs.Append "NomDeLaTable"
ou Db.Tabledefs.Append "NomDeLaTable" si tu utilises une variable Database

hello ze titi,
merci je vais tenter cela, je pense que cela devrait fonctionner, je
cherchai plus compliqué, sais pas pourquoi!
l'erreur en question:
je crée la table en DAO, je ferme et tente de l'ouvrir pour la remplir
à ce moment le message apparaît indiquant que la table n'a pas été trouvée
merci de ton aide
A > Pascal



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Pascal
Le #6198811
Hello Eric,
non je n'ai pas oublié d'ajouter la table par APPEND
l'erreur en question se produit UNIQUEMENT a l'ouverture APRES CREATIONde
cette table
elle ne se produit plus si
1) je ferme la base et l'ouvre à nouveau (la table est créée, on passe le
test ExistTable)
2) si je clique sur FIN dans le msgbox d'erreur qui propose FIN ou Débogage

l'erreur ne viendrait t'elle pas du fait que je fais le test d'existence de
la table dans la form_activate
et que le temps d'ouverture entre le load et activate est trop rapide? donc
tentative d'ouverture avant fin de création

A la Demande de Ze titi voici le code
je ne joint pas le module Imprimante utilisé pour la fonction
fChargementImprimantes
l'erreur ne se trouve pas là
'---------------------------------------------------------
Private Sub Form_Activate() 'Form_Load()
'vérification de l'existence de la table d'imprimante
If Not ExistTable("tbPrtList") Then
'créer table
CréerTableDAO
'remplissage de la table imprimante
fChargementImprimantes
End If
----------------------------------------------------------
Private Sub Form_Load()
Dim NomRécupérer As String
Dim NomPrt As String
Dim rs As DAO.Recordset

'On Error GoTo Sortie
'rechercher l'imprimante qui est mise par défaut dans la table tbPrtList
'*********ERREUR SE PRODUIT ICI sur la clause
SELECT*********************************************************
Set rs = CurrentDb().OpenRecordset("SELECT * FROM tbPrtList WHERE
ts_selection = true")
If Not rs.EOF And Not rs.BOF Then
NomRécupérer = rs.Fields("tx_PrtNom")
End If
'ajoute les guillemets puisque un String
NomPrt = """" & NomRécupérer & """"

'aficher dans le combo
Me.cboImprimante.DefaultValue = NomPrt
'met a jour la table tbPrtList
CocherCaseImprimante (NomPrt)
Sortie:

Set rs = Nothing

End Sub
-------------------------------------------------------------------------
Public Function CréerTableDAO()
Dim Db As DAO.Database
Dim Tbl As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
Dim Prp As DAO.Property
Const NomTable As String = "tbPrtList"


Set Db = CurrentDb() ' Ouverture base de données
Set Tbl = Db.CreateTableDef(NomTable) 'Création d'une table

Set fld = Tbl.CreateField("no_Prt", dbInteger) 'création du premier
champ
fld.OrdinalPosition = 1 'champ position 1
Tbl.Fields.Append fld 'ajout du champ dans la
table


Set fld = Tbl.CreateField("tx_PrtNom", dbText) 'création du deuxième
champ
fld.OrdinalPosition = 2 'champ position 2
fld.Size = 255 'taille 255 caractères
fld.Required = True 'valeur nulle interdite
fld.AllowZeroLength = False 'chaine vide autorisée
Tbl.Fields.Append fld 'ajout du champ dans la
table

Set fld = Tbl.CreateField("tx_PrtPort", dbText) 'création du troisième
champ
fld.OrdinalPosition = 3 'champ position 3
fld.Size = 255 'taille 255 caractères
fld.Required = True 'valeur nulle interdite
fld.AllowZeroLength = False 'chaine vide autorisée
Tbl.Fields.Append fld 'ajout du champ dans la
table

Set fld = Tbl.CreateField("tx_PrtDriver", dbText) 'création du quatrième
champ
fld.OrdinalPosition = 4 'champ position 4
fld.Size = 255 'taille 255 caractères
fld.Required = True 'valeur nulle interdite
fld.AllowZeroLength = False 'chaine vide autorisée
Tbl.Fields.Append fld 'ajout du champ dans la
table



Set fld = Tbl.CreateField("ts_Selection", dbBoolean) 'création du
cinquième champ
fld.OrdinalPosition = 5 'champ position 5
'fld.Type = dbBoolean
Tbl.Fields.Append fld 'ajout du champ dans la
table
Db.TableDefs.Append Tbl 'ajoute la table à la
base

RefreshDatabaseWindow 'rafraichissement de la
fenêtre base de données

'les propriétés
Set Tbl = Db.TableDefs(NomTable)
Set fld = Tbl.Fields("ts_Selection")
Set Prp = fld.CreateProperty("Format", dbText, "Yes/No")
fld.Properties.Append Prp
Set Prp = fld.CreateProperty("DisplayControl", dbInteger, 106)
fld.Properties.Append Prp

'Fermeture
Db.Close
Set tdf = Nothing
Set fld = Nothing
Set Db = Nothing
Set Tbl = Nothing

End Function
-------------------------------------------------------------------------

Function fChargementImprimantes()
' Fonction permettant de remplir la table des imprimantes
' A lancer si nouvelle imprimante créée ou nouveau driver installé

Dim tampon
Dim i As Integer
Dim itNbPrt As Integer
Dim rs As DAO.Recordset
Static atagDevices() As aht_tagDeviceRec

On Error GoTo GestErr

Set rs = CurrentDb().OpenRecordset("tbPrtList", dbOpenDynaset)

' Suppression des enregistrements de la table
DoCmd.RunSQL "DELETE * FROM tbPrtList"

' Détermine le nombre d'imprimantes en cours sur le poste
itNbPrt = ahtGetPrinterList(atagDevices())

' Ajoute les imprimantes dans la table
For i = 1 To itNbPrt
rs.AddNew
rs![no_Prt].Value = i
rs![tx_prtNom].Value = atagDevices(i).drDeviceName
tampon = atagDevices(i).drDeviceName
rs![tx_Prtport].Value = atagDevices(i).drPort
rs![tx_prtdriver].Value = atagDevices(i).drDriverName
rs.Update
Next i

' coche la dernière imprimante selectionnée contenue dans Tampon pour
initialisation
CurrentDb.Execute "UPDATE tbPrtList SET ts_Selection = True " & "WHERE
tx_PrtNom = '" & tampon & "';"

FinLoad:
' Fermeture des objets
rs.Close

Set rs = Nothing
Exit Function
' Gestion des erreurs
GestErr:

MsgBox "Erreur dans fChargementImprimantes : " & Error & " (" & Err &
")"

Resume FinLoad

End Function
-----------------------------------------------------------------

"Eric"
Bonjour,

Tu n'aurais pas oublié, après avoir créé ta table de l'ajouter à la
collection des tables de la bd ?
Manquerait pas un CurrentDb.Tabledefs.Append "NomDeLaTable"
ou Db.Tabledefs.Append "NomDeLaTable" si tu utilises une variable Database


Eric
Le #6198791
Bonsoir,

L'évènement Activate (sur Activé) intervient après l'évènement Load (sur
Chargement)
Extrait de l'aide:
"Lorsque vous ouvrez un formulaire pour la première fois, les événements
suivants se produisent dans cet ordre :
Ouverture -> Chargement -> Redimensionnement -> Activé -> Activation"

Donc ta création de table a lieu trop tard. Je mettrai tout sur le Load.
La creation, le remplissage puis après ta recherche. A tester

Hello Eric,
non je n'ai pas oublié d'ajouter la table par APPEND
l'erreur en question se produit UNIQUEMENT a l'ouverture APRES
CREATIONde cette table
elle ne se produit plus si
1) je ferme la base et l'ouvre à nouveau (la table est créée, on passe
le test ExistTable)
2) si je clique sur FIN dans le msgbox d'erreur qui propose FIN ou Débogage

l'erreur ne viendrait t'elle pas du fait que je fais le test d'existence
de la table dans la form_activate
et que le temps d'ouverture entre le load et activate est trop rapide?
donc tentative d'ouverture avant fin de création



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Pascal
Le #6198721
bonsoir Eric,
,j'étais pas loin!
je pensais que activate primai sur le load
j'ai préféré mettre le test sur OPEN et cela fonctionne très bien
merci
Pascal

"Eric" uvp%
Bonsoir,

L'évènement Activate (sur Activé) intervient après l'évènement Load (sur
Chargement)
Extrait de l'aide:
"Lorsque vous ouvrez un formulaire pour la première fois, les événements
suivants se produisent dans cet ordre :
Ouverture -> Chargement -> Redimensionnement -> Activé -> Activation"

Donc ta création de table a lieu trop tard. Je mettrai tout sur le Load.
La creation, le remplissage puis après ta recherche. A tester

Hello Eric,
non je n'ai pas oublié d'ajouter la table par APPEND
l'erreur en question se produit UNIQUEMENT a l'ouverture APRES
CREATIONde cette table
elle ne se produit plus si
1) je ferme la base et l'ouvre à nouveau (la table est créée, on passe
le test ExistTable)
2) si je clique sur FIN dans le msgbox d'erreur qui propose FIN ou
Débogage

l'erreur ne viendrait t'elle pas du fait que je fais le test d'existence
de la table dans la form_activate
et que le temps d'ouverture entre le load et activate est trop rapide?
donc tentative d'ouverture avant fin de création



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Publicité
Poster une réponse
Anonyme