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

melaniiiee - 13 avril 2013 à 20:32 - Dernière réponse : andymelo 3 Messages postés vendredi 19 janvier 2018Date d'inscription 23 janvier 2018 Dernière intervention
- 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 :)
Afficher la suite 

Votre réponse

11 réponses

cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 13 avril 2013 à 21:23
0
Utile
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)
tousaidonsnous 1 Messages postés mardi 8 octobre 2013Date d'inscription 8 octobre 2013 Dernière intervention - 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
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 8 oct. 2013 à 09:12
Salut
Repose ta question dans un nouveau message et non par un post existant
Commenter la réponse de cs_Jack
melaniiiee - 13 avril 2013 à 22:02
0
Utile
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()
Commenter la réponse de melaniiiee
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 avril 2013 à 07:49
0
Utile
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.
Commenter la réponse de ucfoutu
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 14 avril 2013 à 11:13
0
Utile
"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.
Commenter la réponse de cs_Jack
melaniiiee - 14 avril 2013 à 12:20
0
Utile
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 ;)
Commenter la réponse de melaniiiee
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 avril 2013 à 13:46
0
Utile
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.
Commenter la réponse de ucfoutu
melaniiiee - 14 avril 2013 à 14:36
0
Utile
hahaha j'ai déduit que c'était lors de copier/coller parce qu'elle n'existe pas dans mon code ;)
Commenter la réponse de melaniiiee
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 14 avril 2013 à 14:58
0
Utile
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.
andymelo 3 Messages postés vendredi 19 janvier 2018Date d'inscription 23 janvier 2018 Dernière intervention - 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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.