VB: récupérer le max d'un champ, lui ajouter 1 et.. [RESOLU]
Dernière réponse : dans Programmation
bonjour, Dans le cadre d'unr création de formulaire, je cherche a récupérer la valeur max d'un champ, lui ajouter 1 et l'attribuer à une variable:
un de mes cas:
Private Sub btn_ajoutclient_click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into client values('" & Me.txt_num & "','" & Me.txt_nom & "' , '" & Me.txt_adresse & "','" & Me.txt_ville & "' , '" & Me.txt_cp & "' , '" & Me.txt_mail & "');"
End Sub
Dans ce cas là je voudrais récuperer la valeur maximum du champ CLIENT.NumCli, lui rajouter 1 et l'afficher dans le champ Me.txt_num
quelqu'un pourrait-il m'aider???
un de mes cas:
Private Sub btn_ajoutclient_click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into client values('" & Me.txt_num & "','" & Me.txt_nom & "' , '" & Me.txt_adresse & "','" & Me.txt_ville & "' , '" & Me.txt_cp & "' , '" & Me.txt_mail & "');"
End Sub
Dans ce cas là je voudrais récuperer la valeur maximum du champ CLIENT.NumCli, lui rajouter 1 et l'afficher dans le champ Me.txt_num
quelqu'un pourrait-il m'aider???
Autres pages sur : recuperer max champ ajouter resolu
Lassé par la pub ? Créez un compte
ton idée n'est pas claire tu veux faire quoi au juste la valeur max num elle se trouve dans la base de donnée?? n'est ce pas? si oui alors tu doit à chaque evenement click de ajout client fair une requettel sql qui retourne le max puis cette valeur elle sera affecter dans le champ num client dans ton interface
déja merci amen_1919 pour ta réponse
oui c'est tout à fait ça mais ça ne marche pas
j'ai fait ça:
Dim nbmax As Integer (pour declarer la varable en tant qu'entier)
DoCmd.RunSQL "select MAX (NumCli) from CLIENT;" = nbmax (pour récuperer le max du champs NumCli de la table CLIENT et l'affecter à la variable nbmax)
Me.txt_num = nbmax (pour afficher la variable dans le champs txt_num)
mais ça ne marche pas, ce qui n'est pas étonnant vu mon niveau en VB
oui c'est tout à fait ça mais ça ne marche pas
j'ai fait ça:
Dim nbmax As Integer (pour declarer la varable en tant qu'entier)
DoCmd.RunSQL "select MAX (NumCli) from CLIENT;" = nbmax (pour récuperer le max du champs NumCli de la table CLIENT et l'affecter à la variable nbmax)
Me.txt_num = nbmax (pour afficher la variable dans le champs txt_num)
mais ça ne marche pas, ce qui n'est pas étonnant vu mon niveau en VB
c pas un erreur juste pour verifier est ce que ca marche ou pas !!!! et puis comment t'a pas un champs me.txt.text!!!!!!!!!!!! me.txt c'est à dire que c'est un textbox!!!!!!!!comment l'utilisateur va mettre les données!!!num,nom...!!!!!!!!! ça doit être des textbox!!! n'est ce pas??? c quoi ce programme au juste!!!!!!!
L'objet RecordSet que je te propose d'ouvrir contient des jeux [Set]d'enregistrements [Record], pour l'occasion issus de la requête SELECT.
Il faut mettre avant, si tu ne l'a pas déjà trouvé :
Dim MaDb as DataBase
Dim TableRechercheMax as RecordSet
Set MaDb = CurrentDb
Telle qu'est la requête, il ne contient qu'un seul jeu : pas la peine de chercher la bonne ligne dedans vu qu'il n'y en a qu'une. Il n'y a plus qu'à ajouter 1.
Tu pourrais aussi aller fouiller toi-même dans la table CLIENT pour trouver le jeu qui contient le max, sans faire de requête. Mais c'est bien plus compliqué.
Il faut mettre avant, si tu ne l'a pas déjà trouvé :
Dim MaDb as DataBase
Dim TableRechercheMax as RecordSet
Set MaDb = CurrentDb
Telle qu'est la requête, il ne contient qu'un seul jeu : pas la peine de chercher la bonne ligne dedans vu qu'il n'y en a qu'une. Il n'y a plus qu'à ajouter 1.
Tu pourrais aussi aller fouiller toi-même dans la table CLIENT pour trouver le jeu qui contient le max, sans faire de requête. Mais c'est bien plus compliqué.
ça ne marche pas mais access ne me propose pas son cher debogeur donc je pense que ça doit être une petite connerie du style un caractère invisible (par ex un espace ) qui m'a déja fait perdre un dimanche complet
j'ai donc supprimer les espaces pour voir si c'était bien ce problème mais non
je met le vb de mon formulaire:
Private Sub btn_ajoutclient_click()
DoCmd.SetWarnings False
Dim MaDb As Database
Dim TableRechercheMax As Recordset
Set MaDb = CurrentDb
Set TableRechercheMax = MaDb.OpenRecordset("select MAX (NumCli) AS MaxTrouve from CLIENT;")
Me.txt_num = TableRechercheMax!MaxTrouve + 1
DoCmd.RunSQL "insert into client values('" & Me.txt_num & "','" & Me.txt_nom & "' , '" & Me.txt_adresse & "','" & Me.txt_ville & "' , '" & Me.txt_cp & "' , '" & Me.txt_mail & "');"
Me.txt_num = ""
Me.txt_nom = ""
Me.txt_adresse = ""
Me.txt_ville = ""
Me.txt_cp = ""
Me.txt_mail = ""
If Me.txt_mail = "" Then MsgBox " Félicitation! L' ajout du client a été effectué avec succès." Else MsgBox " Attention! L' ajout du client n'a pas été effectué."
End Sub
Si une âme charitable pourrait me dire où est le problème sa serait vachement sympa
EDIT: je sais que ma partie de VB pour les erreures n'est pas correcte mais je bosse dessus en paralèle
j'ai donc supprimer les espaces pour voir si c'était bien ce problème mais non
je met le vb de mon formulaire:
Private Sub btn_ajoutclient_click()
DoCmd.SetWarnings False
Dim MaDb As Database
Dim TableRechercheMax As Recordset
Set MaDb = CurrentDb
Set TableRechercheMax = MaDb.OpenRecordset("select MAX (NumCli) AS MaxTrouve from CLIENT;")
Me.txt_num = TableRechercheMax!MaxTrouve + 1
DoCmd.RunSQL "insert into client values('" & Me.txt_num & "','" & Me.txt_nom & "' , '" & Me.txt_adresse & "','" & Me.txt_ville & "' , '" & Me.txt_cp & "' , '" & Me.txt_mail & "');"
Me.txt_num = ""
Me.txt_nom = ""
Me.txt_adresse = ""
Me.txt_ville = ""
Me.txt_cp = ""
Me.txt_mail = ""
If Me.txt_mail = "" Then MsgBox " Félicitation! L' ajout du client a été effectué avec succès." Else MsgBox " Attention! L' ajout du client n'a pas été effectué."
End Sub
Si une âme charitable pourrait me dire où est le problème sa serait vachement sympa
EDIT: je sais que ma partie de VB pour les erreures n'est pas correcte mais je bosse dessus en paralèle
Bien reçu.
Apparamment Access ne comprends pas la clause value. Comme ça, ça marche:
Dim Req As String
Req = "INSERT INTO CLIENT ( NumCli, Nom, AdresseRue, "
Req = Req & "AdresseVille, AdresseCP, Email ) "
Req = Req & "SELECT '" & Me.txt_num & "','" & Me.txt_nom
Req = Req & "' , '" & Me.txt_adresse & "','" & Me.txt_ville
Req = Req & "' , '" & Me.txt_cp & "' , '" & Me.txt_mail & "';"
DoCmd.RunSQL Req
Si tu veux, je peux éplucher ta BD, mais il faut m'en donner le but. Ce qui m'a sauté aux yeux :
* La clef de la table client est Txt et pas Integer
* Ton formulaire "ajouter un client" est basé sur la table "devis"
* L'arrangement de tes tables "devis" et "prestation" sont un peu étonnants.
* Accessoirement : chaine vide interdite. Et si ton client n'a pas d'Email ?
Si on continue, ce sera par Email perso, il n'y a que l'info sur la clause insert qui a sa place sur ce site, tout le reste est hors sujet.
Topic à fermer.
:-)
Apparamment Access ne comprends pas la clause value. Comme ça, ça marche:
Dim Req As String
Req = "INSERT INTO CLIENT ( NumCli, Nom, AdresseRue, "
Req = Req & "AdresseVille, AdresseCP, Email ) "
Req = Req & "SELECT '" & Me.txt_num & "','" & Me.txt_nom
Req = Req & "' , '" & Me.txt_adresse & "','" & Me.txt_ville
Req = Req & "' , '" & Me.txt_cp & "' , '" & Me.txt_mail & "';"
DoCmd.RunSQL Req
Si tu veux, je peux éplucher ta BD, mais il faut m'en donner le but. Ce qui m'a sauté aux yeux :
* La clef de la table client est Txt et pas Integer
* Ton formulaire "ajouter un client" est basé sur la table "devis"
* L'arrangement de tes tables "devis" et "prestation" sont un peu étonnants.
* Accessoirement : chaine vide interdite. Et si ton client n'a pas d'Email ?
Si on continue, ce sera par Email perso, il n'y a que l'info sur la clause insert qui a sa place sur ce site, tout le reste est hors sujet.
Topic à fermer.
:-)
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- solutionsRecherche valeur max d un champ php
- solutionsResolu merge vertex 3ds max
- ForumAccess vb recuperer champ de sousformulaire
- ForumSupprmer champ ds une listbox en vb
- ForumMax vb
- ForumAccess vb reference a champ de formulaire
- ForumAccess 2007 vb renommer un champ
- ForumExcel vb nom de champ introuvable
- ForumAjout d'un champ a une table
- ForumSql max d'un champs
- Voir plus