comment ecrire dans une table à partir d'un formulaire? - VB/VBA/VBS - Programmation
Marsh Posté le 01-12-2006 à 17:52:27
Bonsoir,
C'est vrai, on voit que tu as cherché.
En dehors d'autres "erreurs" que l'on peut traiter après, j'insiste sur un point que l'on a vu dans un de tes posts précédents:
lorsque tu écris:
Me.nom = rst!Nom cela signifie que tu veux mettre dans Me.nom le contenu de rst!Nom
si tu veux mettre dans rst!Nom le contenu de Me.Nom, il faut écrire:
rst!Nom = Me.Nom
Quel est le rôle de : Do Until rst.EOF avec le :Loop??
Cordialement
Marsh Posté le 01-12-2006 à 20:10:03
Bonsoir,
j'ai trouvé pour toi une adresse:
http://www.info-3000.com/access/daorecordset.php
une autre:
http://warin.developpez.com/access [...] tie_5#L5.2
Cordialement
Marsh Posté le 03-12-2006 à 23:33:07
Salut,
J'ai également longuement cherché à atteindre une table directement, mais c'est peine perdue !
Tu ne peux pas atteindre directement une table access avec du code VBA. Lorsqu'un formulaire affiche des données, c'est lui qui verrouille la table et en interdit l'accès.
Pour enregistrer les nouvelles valeurs, tu dois absolument passer par le formulaire lui-même en le fermant et autorisant l'enregistrement des données.
A+
Marsh Posté le 04-12-2006 à 09:58:42
Bon Comme vous etes gentil!
voici une solution tres pretique que j'ai trouve si ça peux vous aider.
Ecriture directe dans une table à partir un formulaire.
soit la table Personne :
Private Sub btAjout_Click()
Dim strSql As String
Dim cmd As ADODB.Command
strSql = "INSERT INTO personne ( nom, prenom, Adresse )" _
& "SELECT [NOM] AS Expr1, [PRENOM] AS Expr2, [ADRESSE] AS Expr3"
Set cmd = New Command
cmd.CommandType = adCmdText
cmd.CommandText = strSql
cmd.Parameters.Append cmd.CreateParameter("NOM", adVarChar, adParamInput, 250, Me.txbNom)
cmd.Parameters.Append cmd.CreateParameter("PRENOM", adVarChar, adParamInput, 250, Me.txbPrenom)
cmd.Parameters.Append cmd.CreateParameter("ADRESSE", adVarChar, adParamInput, 50, Me.txbAdresse)
cmd.ActiveConnection = Application.CurrentProject.Connection
cmd.Execute
Set cmd = Nothing
End Sub
Marsh Posté le 04-12-2006 à 14:16:26
J'arrive après la bataille, mais il faut que je corrige le commentaire de Papy Octet.
On peut avoir accès aux valeurs d'une table, même si un formulaire est ouvert et lié à celle-ci.
En VBA cherchez du côté des propriétés de formulaire .RecordsetClone et .Bookmark pour rtavailler sur la table du formulaire et synchroniser l'affichage du formulaire avec le recordset.
Marsh Posté le 06-12-2006 à 12:55:11
Est-ce que papy octet a pigé comment ecrire sur une table?
avec exemple d'execution ici!!!!
http://www.e-rus.net/telecharg/bd1.zip
Marsh Posté le 06-12-2006 à 13:54:48
Si le formulaire est lié à la table, il n'y a aucun besoin de passer par un recordset... Suffit d'ouvrir le formulaire en mode nouveau machin, et ça roule...
Marsh Posté le 06-12-2006 à 13:58:21
bah! la table est vide à la base.le but est de la remplir à partir du formulaire.
Marsh Posté le 06-12-2006 à 14:04:18
Ben justement, access a tout ce qu'il faut sans se faire chier avec du code.
Moi un même formulaire sert pour l'ajout et l'édition, même si la table est vide. Pour ajouter, faut ouvrir le formulaire avec par exemple :
Code :
|
Pour mode édition, par exemple (faut mettre un petite clause qui sélectionne l'enregistrement à modifier par exemple) :
Code :
|
Ensuite deux boutons, un ok et un annuler par exemple...
Marsh Posté le 06-12-2006 à 14:05:02
A moins que tu n'utilises une version traditionnelle Access, où un formulaire fait tout : navigation entre les enregistrements, ajout, édition, etc.
Marsh Posté le 01-12-2006 à 16:45:40
Bon un question de base qui m'a toujours pertubé et mare de triffouiller les forum pour le savoir.
j'ai un formulaire d'inscription avec les champ
nom,prenom,c1,c2
je creer un table Personne qui est vide.
comment ecrire dans une table ou encore comment creer un enregistrement?
voici ce que j'ai fait j'ai quand meme cherché!
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("personne" )
Do Until rst.EOF
rst.AddNew
Me.Nom = rst!Nom
Me.Prenom = rst!Prenom
Me.Adresse = rst!Adresse
Loop
'rst.MoveNext
'rst.Update
rst.Close
Set rst = Nothing
MsgBox "bien"
End Sub