Sauvegarder saisie TextBox dans access

Bonjour,

J'aimerais enregistrer la saisie d'une TextBox dans la 3ème colonne d'une table Access quand j'appuie sur le bouton '"sauvegarde"

Pouvez-vous m'aider s'il vous plait ?

Je vous remercie d'avance

Bonjour eLOo_17,

Ta question est quelque peu évasive pour te donner une réponse précise mais, en gros :

Code de l'évènement clic sur bouton "Sauvegarde" :

Private Sub CommandButton1_Click()
    Const cCnxString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 'Si la base est au format ms access 2007 ou +
    Const cDBName = "C:\Users\Gér\Documents\Base de données1.accdb" 'A modifier pour indiquer ta base ms access

    Dim oCnx As ADODB.Connection
    Dim sSQL As String

    Set oCnx = CreateObject("ADODB.Connection")
    oCnx.Open cCnxString & cDBName

    sSQL = "INSERT INTO Mytable (Champ3) VALUES('" & TextBox1.Value & "');" 'A modifier en indiquant la bonne table, le bon nom de champ3 et le bon nom de la textbox présente sur le userform EXCEL.

    oCnx.Execute sSQL

    oCnx.Close
    Set oCnx = Nothing

    MsgBox "Sauvegardé!", vbExclamation
End Sub

NB: Modifie le code pour qu'il corresponde à ton contexte.

Bonjour,

Merci pour votre aide mais cela ne fonctionne pas et bloque au niveau de la ligne de code : oCnx.Execute sSQL

Si je ne mets pas cette ligne, cela ne fonctionne pas non plus

Bonjour eLOo_17,

Quel est le nom et le chemin complet de ta base ACCESS?

Quel est le nom de la table à mettre à jour?

Quel est le nom du champ de la table à mettre à jour?

De plus, peux-tu joindre une capture écran du message d'erreur que tu reçois?

Bonjour,

Je viens de réussir j'avais mal écrit quelque chose

Je vous remercie beaucoup pour votre aide.

Bonsoir, je dispose du même souci qu'Elo27, mais ça ne marche pas de mon côté.

L'erreur affichée est : type de données incompatibles dans l'expression du caractère.

Mon code est le suivant :

Private Sub SAVE_Click()
    Const cCnxString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 'Si la base est au format ms access 2007 ou +
    Const cDBName = "D:\VBA Projets\VBA Projets\Projet 2 outil de valorisation\2017_ProjectAppleDataBase.accdb" 'A modifier pour indiquer ta base ms access

    Dim oCnx As ADODB.connection
    Dim sSQL As String

    Set oCnx = CreateObject("ADODB.Connection")
    oCnx.Open cCnxString & cDBName
    Dim Revenues1 As Variant
Revenues1 = [B3]
    sSQL = "INSERT INTO inputParametersSaved (parameterValue) VALUES('" & TextBoxRevenues1.Value & "');" 'A modifier en indiquant la bonne table, le bon nom de champ3 et le bon nom de la textbox présente sur le userform EXCEL.

    oCnx.Execute sSQL

    oCnx.Close
    Set oCnx = Nothing

    MsgBox "Sauvegardé!", vbExclamation
    End Sub]

Ma base Access est la suivante :

capture1

Je souhaite insérer les données de mes différentes TextBox dans les cases qui y correspondent TextBoxRevenues1 dans le champs parameterValue, ligne Revenues.

Auriez-vous une solution pour moi? c'est pour un projet et c'est très urgent...

Merci d'avance pour votre aide,

Max

Up please

@ Max,

Visiblement, le champ à mettre à jour dans la base ACCESS est de type numérique. Dans ce cas, tu dois remplacer la requête SQL d'INPUT de la façon suivante :

sSQL = "INSERT INTO inputParametersSaved (parameterValue) VALUES(" & TextBoxRevenues1.Value & ");"

Tu supprimes le caractère quote (') dans l'expression de VALUE...

Bonjour Gvialles,

merci beaucoup pour ta réponse rapide.

Malheureusement, après avoir suivi tes instructions, une nouvelle erreur s'affiche :

"erreur de syntaxe dans l'instruction INSERT TO".

Sais tu également comment indiquer à une TextBox du formulaire de remplacer la valeur 52285 de la ligne Income par exemple? (voir photo de ma base Access dans mon message précédent)

Cordialement,

Max

Up please

Dis moi ce que tu as introduit dans la textbox lorsque tu as obtenu l'erreur STP.

Pour le remplacement, la commande SQL sera quelquechose comme "UPDATE inputParametersSaved SET parameterValue = " & TextBoxRevenues1.Value

La donnée saisie dans la textbox doit être de type numérique et s'il y a des décimales, le séparateur de décimales doit être un point (.) et non une virgule (,).

On peut améliorer en testant et/ou convertissant la donnée de la textbox avant de mettre en forme la commande SQL. Par exemple :

    Dim dblValue As Double
    dblValue = CDbl(Replace(TextBoxRevenues1.Value, ",", "."))
    sSQL = "INSERT INTO  InputParametersSaved (parameterValue) VALUES(" & dblValue & ");"
 

Code non testé

Bonsoir à tous,

Il me semble que :

* Pour un Update, il faut spécifier une clause Where, par exemple :

"UPDATE [inputParametersSaved] SET parameterValue = " & TextBoxRevenues1.Value & " WHERE ID=16"

* Pour ajouter une ligne, même si l'ID est en autoincrément dans la base Access, depuis excel il faut fournir un ID valide :

"INSERT INTO [inputParametersSaved] (ID, parameterValue) VALUES (" & ID_valide & ", " & dblValue & ")"

* Et pour récupérer un ID_valide il suffit de requêter en amont sur l'ID :

"SELECT MAX(ID) + 1 FROM [inputParametersSaved]"

l'ID_Valide sera donc le résultat de cette requête

Pierre

Pierre a raison pour la commande SQL UPDATE : il faut bien indiquer le record sur lequel réaliser le remplacement par une clause WHERE.

D'après moi, pour la commande INSERT Pierre n'a pas raison. Lorsque l'ID est en numériqueAuto, nul besoin de préciser sa valeur dans la commande. De plus, la solution proposée me semble dangereuse dans un environnement multiutilisateurs.

Par contre, si des champs de la table ACCESS sont déclarés avec la propriété "Nul interdit' à Oui, alors il faut obligatoirement faire figurer ces champs dans la commande SQL INSERT en indiquant dans la partie VALUES soit un 0 soit une chaine vide '' suivant le type de donnée du champ.

Rechercher des sujets similaires à "sauvegarder saisie textbox access"