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

Signaler
-
Messages postés
3
Date d'inscription
vendredi 19 janvier 2018
Statut
Membre
Dernière intervention
23 janvier 2018
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
1
Date d'inscription
mardi 8 octobre 2013
Statut
Membre
Dernière intervention
8 octobre 2013

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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
Repose ta question dans un nouveau message et non par un post existant
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()
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
"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.
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 ;)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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.
hahaha j'ai déduit que c'était lors de copier/coller parce qu'elle n'existe pas dans mon code ;)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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.
Messages postés
3
Date d'inscription
vendredi 19 janvier 2018
Statut
Membre
Dernière intervention
23 janvier 2018

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