Insertion d'un champ auto incrément dans une base de donnée access en vb.net

melaniiiee - 13 avril 2013 à 20:32
andymelo Messages postés 3 Date d'inscription vendredi 19 janvier 2018 Statut Membre Dernière intervention 23 janvier 2018 - 23 janv. 2018 à 11:07
salut :) comment faire pour insérer un champ auto incrément dans une base de donnée access en vb.net ?? au fait, il s'agit de créer un compte. La table contient les champs suivants (num_compte,cin_titulaire_compte,nom,prenom ..)
Ma clé primaire est le numero de compte et non pas le cin, je veux que le numero de compte s'incrémente dans la table à chaque création d'un nouveau compte. merci d'avance :)

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 avril 2013 à 21:23
Salut

Question floue ...
Les "numéro auto" ne doivent pas être listés parmi les champs de ta requète d'insertion.
Ils sont générés automatiquement.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
tousaidonsnous Messages postés 1 Date d'inscription mardi 8 octobre 2013 Statut Membre Dernière intervention 8 octobre 2013
8 oct. 2013 à 08:45
Chez moi ça ne marche pas, voici le message qui s'affiche: Le nombre des valeurs de requêtes doit coincider avec le nombre de champs de destination
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 oct. 2013 à 09:12
Salut
Repose ta question dans un nouveau message et non par un post existant
0
merci :) j'ai enlevé le champ num_compte de ma requête d'insertion et j'ai modifier le type en numéroAuto en access. ça a marché
j'ai encore une petite question, il s'agit de la même requête je cherche à insérer la date actuelle dans le champ date de ma table mais ça n'a pas marché
voici le code
Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data source = C:\Users\dell\Desktop\MaBase.accdb")
MyConnexion.Open()
Dim MyCommand As OleDbCommand = MyConnexion.CreateCommand()
MyCommand.CommandText = "insert into Compte (CIN, NOM, PRENOM,SOLDE,DECOUVERT,DATE) values ('" & Form3.TextBox1.Text & "' , '" & Form3.TextBox2.Text & "', '" & Form3.TextBox3.Text & "'," & 0.0 & "," & 0.0 &, "," & DateTime.Now & ")"
MyCommand.ExecuteNonQuery()

MyConnexion.Close()
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 avril 2013 à 07:49
Bonjour,
Montre-nous ce que tu as réellement écrit (par copier/coller) à cette ligne :
Form3.TextBox1.Text & "' , '" & Form3.TextBox2.Text & "', '" & Form3.TextBox3.Text & "'," & 0.0 & "," & 0.0 &,
"," & DateTime.Now & ")"
Car elle ne peut que provoquer une erreur dénoncée dès depuis l'éditeur de VB6, du seul fait de ce que j'ai mis en rouge (incohérence dans la construction d'une chaîne de caractères par concaténation, que cette chaîne soit celle d'une requête ou autre, d'ailleurs !).
Or, tu ne nous parles pas de message d'erreur , mais te contentes de dire ;
mais ça n'a pas marché
qui ne signifie en général rien de précis ni d'utile !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 avril 2013 à 11:13
"mais ça n'a pas marché"
Pas très précis comme indice.
Erreur ? Laquelle ?
Qu'a t-il inséré, pour dire que ça n'a pas marché ?

Le nom de ton champ, DATE, est mal choisi et ressemble trop à un mot du langage.
Soit tu le changes (en ajoutant une lettre) ou tu le laisses comme ça, mais alors il faudra toujours l'encadrer de crochets [ et ] :
insert into Compte (CIN, NOM, PRENOM,SOLDE,DECOUVERT,[DATE]) values ...

De quel type, comment est déclaré ton champ DATE dans ta table ?
Si c'est bien une date, il faudra utiliser les # pour encadrer la date que tu insères :
",#" & DateTime.Now & "#)"
Attention toutefois : il est possible qu'il te faille convertir ta date française en date US où le mois est en premier (voir format et localisation).
A voir.

Dans ta syntaxe, des choses bizarres :
Pourquoi les 0.0 sont-ils sortis de la chaine ?
Après le second 0.0, il y a une virgule qui se balade ( ... &, ...)

Je t'engage à mettre les options Strict en service pour t'obliger à réfléchir aux conversions des types de variables. Je ne pense pas que
..." & 0.0 & "...
puisse être interprété correctement par le compilo.

Affiche le contenu de ton MyCommand.CommandText pour voir à quoi ressemble ta chaine de commande.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
merci beaucoup à vous deux :) la virgule qui se balade c'était juste une faute de frappe lors de copier/coller !! je m'excuse si mon message manquait d'explication précise, je suis encore débutante et je vous remercie de m'avoir accorder de votre temps :)
L'erreur c'était "erreur de syntaxe dans l'instruction insert into"
j'ai remplacé le champ date dans ma table par date_creation et j'ai utilisé les # pour encadrer la date que j'insère comme me le conseillait jack :) et voilà insertion effectuée avec succès avec la date française aussi ;)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 avril 2013 à 13:46
J'adore le
la virgule qui se balade c'était juste une faute de frappe lors de copier/coller

Je me demande à quel moment, lors d'un copier/coller, on pourrait faire une "faute de frappe"..... Hein ? Qui a dit quoi ? ===>> Allez ===>>> ma sieste, au moins, est plus hygiénique !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
hahaha j'ai déduit que c'était lors de copier/coller parce qu'elle n'existe pas dans mon code ;)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 avril 2013 à 14:58
Tu es donc un "champion" parmi tous les champions !
Ou tu as une machine très "spéciale" en matière de copiers/collers
Allons allons ....

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
andymelo Messages postés 3 Date d'inscription vendredi 19 janvier 2018 Statut Membre Dernière intervention 23 janvier 2018
23 janv. 2018 à 11:07
comment créer un matricule du format 2018ABC001 en VB.NET jai le code en VBA mais comment traduire en VB.NET.
voici le code en VBA:
Dim varMat As Integer
Me.MatEtud = LTrim(RTrim(Str(Year(Annee)))) + LTrim(RTrim(Mid(ClasseCode, 1, 3)))
Set RS = CurrentDb.OpenRecordset("NumeroEtudiant", dbOpenDynaset)
If RS.EOF Then
Me.MatEtud = Me.MatEtud + LTrim(RTrim(Str(0))) + LTrim(RTrim(Str(0))) + LTrim(RTrim(Str(1)))
Else
Set RS = CurrentDb.OpenRecordset("NumeroEtudiant", dbOpenDynaset)
RS.MoveLast 'prend le dernier element
varMat = RS!EtuNum + 1
Select Case Len(LTrim(RTrim(varMat)))
Case 1 'si la valeur vaut 1
Me.MatEtud = Me.MatEtud + LTrim(RTrim(Str(0))) + LTrim(RTrim(Str(0))) + LTrim(RTrim(Str(varMat)))
Case 2 'si la valeur vaut 2
Me.MatEtud = Me.MatEtud + LTrim(RTrim(Str(0))) + LTrim(RTrim(Str(varMat)))
Case 3 'si la valeur vaut 3
Me.MatEtud = Me.MatEtud + LTrim(RTrim(Str(varMat)))
End Select
End If
End Sub
0
Rejoignez-nous