js8bleu
Messages postés576Date d'inscriptionsamedi 14 octobre 2006StatutMembreDernière intervention27 janvier 2014
-
20 févr. 2008 à 21:07
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 2012
-
22 févr. 2008 à 15:06
Bonjour à tous,
<!--[if !supportEmptyParas]--> <!--[endif]-->
Je ‘’programme’’ en visual basic et access et je souhaiterai
faire de telle sorte que l’identifiant de ma table ‘’voiture’’ s’incrémente à
chaque fois que j’enregistre une nouvelle voiture, mais je ne sais pas comme le
faire. L’identifiant ‘’idvoiture’’ est de type texte. Le code (ci-après) que
j’avais marchait correctement jusqu’à ce que les enregistrements atteignent le
nombre de 10 en effet, pour les données de type texte 9 est supérieur à 10. Il
me parle donc à chaque fois de doublons. J’ai résolu le problème en utilisant
le type integer mais je souhaiterai vraiment garder le type texte. Quelqu’un
pourrait-il m’aider s’il vous plaît ? Merci d’avance.
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
Dim
rsenregistrervoiture As New Recordset
rsenregistrervoiture.Open
"select * from Tablevoiture", cn, 1, 2
<!--[if !supportEmptyParas]--> <!--[endif]-->
rsenregistrer.AddNew
If rsenregistrervoiture.RecordCount
< 1 Then
rsenregistrer!idvoiture = 1
Else
Dim rsnumvoiture1 As New
ADODB.Recordset
rsnumvoiture1.Open "select
max(idvoiture) as maximum from tablevoiture", cn, 1, 2
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 20 févr. 2008 à 21:23
Salut,
une solution à deux conditions/
1- Formater ton identifiant (sur 6 caractères par exemple)
IdVoiture="000001"
IdVoiture="000002"
IdVoiture="000003"
IdVoiture="000010"
2- Utilises Last au lieu de Max
rsnumvoiture1.Open "select Last(idvoiture) as maximum from tablevoiture", cn, 1, 2<?XML:NAMESPACE PREFIX = O /??>
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
js8bleu
Messages postés576Date d'inscriptionsamedi 14 octobre 2006StatutMembreDernière intervention27 janvier 20142 22 févr. 2008 à 09:27
Salut Messieurs,
j'ai essayé vos codes mais ça ne marche pas.laridak, CTYP(rsnumvoiture1.Fields(0)
,INTEGER) n'existe pas ou n'est pas correct sous VB6.0, je ne sais pas pourquoi? Quant à LIBRE_MAX, je ne sais pas comment formater mon id sur 6 caractères comme tu l'as suggéré, ce serait super si tu pouvais me dire comment faire. De plus de cette manière combien d'enregistrements possibles pourrais-je avoir avant d'avoir ce satané message d'erreur s'il te plaît? J'attends votre aide à tous. Merci d'avance.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 22 févr. 2008 à 13:07
Salut,
Pour le Formatage, c' est presque simple !
Format$(IdVoiture, "000000")
Si tes données sont déjà enregistrées dans un autre format.
dans ta requete tu génère un champ MonIdVoiture
et tu tries sur celui-ci.
rsnumvoiture1.Open "select Format$(tablevoiture.idvoiture,"000000")
As MonIdVoiture from tablevoiture ORDER BY
Format$(tablevoiture.idvoiture,"000000");", cn, 1, 2
Tu récupères ensuite le dernier de MonIdVoiture en allant au dernier.
et tu adoptes ce format à chaque nouvel enregistremet.
MonIdVoitue= Format$(Nouvelidvoiture,"000000").
Tu peux aussi mettre à jour ta table en remplaçant ton idvoitue par le nouveau format.
Genre "UPDATE tablevoiture.idvoiture SET tablevoiture.idvoiture=
Format$(tablevoiture.idvoiture,"000000");"
comme ça tu peut récupèrer le dernier sans devoir formater ton champ.
(voir précédent post)
Pour le nombre d' enregistrement tu peux aller jusqu' à 999999.
Si c' est pas suffisant ,et que tu comptes avoir plus, tu peux choisir le format qui te permettera d' avantage : "00000000000" par exemple.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
js8bleu
Messages postés576Date d'inscriptionsamedi 14 octobre 2006StatutMembreDernière intervention27 janvier 20142 22 févr. 2008 à 14:53
Ok Merci, je vais essayer. Cependant, j'ai un autre problème. je souhaiterai récupérer le résultat nul ou vide d'une requête afin
d'en faire un traitement, mais je ne sais pas comment le faire. J'ai
essayé le rsvoiture.recordcount , le IsNull(rsvoiture). C'est à dire :
si rsvoiture ne donne pas de résultat alors
traitement 1
sinon
traitement 2
end if
Y-a-t-il quelqu'un pour m'aider s'il vous plaît? Merci d'avance.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 22 févr. 2008 à 15:03
perso, je fais le truc suivant:
Après avoir référencé mon recordset je fais ceci:
With rsvoiture
On Error Resume Next
.MoveLast
.MoveFirst
If .Bof And .Eof Then ==> 'aucun enregistrement
<Traitement1>
Else ==> 'recordset plein
<Traitement2>
End With
PS: le On Error Resume Next c' est pour éviter l' erreur
suite à MoveLast si le recordset est vide.