Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Incrémentation identifiant sql!!! [ Base de données / SQL ] (js8bleu)

mercredi 20 février 2008 à 21:07:11 | Incrémentation identifiant sql!!!

js8bleu

Bonjour à tous,

 

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.

 

 

Dim rsenregistrervoiture As New Recordset

rsenregistrervoiture.Open "select * from Tablevoiture", cn, 1, 2

 

    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

            Dim maximum As Integer

            maximum = rsnumvoiture1.Fields(0)

            rsenregistrer!idvoiture = maximum + 1

        End If

 

 

Cordialement


mercredi 20 février 2008 à 21:23:19 | Re : Incrémentation identifiant sql!!!

LIBRE_MAX

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



... Y'en a même qui disent qu'ils l'ont vu voler.



/PRE>

mercredi 20 février 2008 à 21:27:01 | Re : Incrémentation identifiant sql!!!

LIBRE_MAX

Ah , j' ai oublié !
Dim maximum As Integer

            maximum = CInt(rsnumvoiture1.Fields(0) )

            rsenregistrer!idvoiture = maximum + 1


et remplaces par la même occasion
rsnumvoiture1.Open "select Last(idvoiture) as Dernier from tablevoiture", cn, 1, 2



... Y'en a même qui disent qu'ils l'ont vu voler.



/PRE>

jeudi 21 février 2008 à 06:01:47 | Re : Incrémentation identifiant sql!!!

laridak


C'est simple pour que  garder le type texte tu peux utiliser la fonction
 CTYP(rsnumvoiture1.Fields(0) ,INTEGER)  et commca tu peux garder ton type text

here i'am again evreywhere

vendredi 22 février 2008 à 09:27:54 | Re : Incrémentation identifiant sql!!!

js8bleu

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.

vendredi 22 février 2008 à 13:07:30 | Re : Incrémentation identifiant sql!!!

LIBRE_MAX

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.
 

                        



... Y'en a même qui disent qu'ils l'ont vu voler.



/P>

vendredi 22 février 2008 à 14:53:30 | Re : Incrémentation identifiant sql!!!

js8bleu

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.

vendredi 22 février 2008 à 15:03:57 | Re : Incrémentation identifiant sql!!!

LIBRE_MAX

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.

				
				
				
						
								

... Y'en a même qui disent qu'ils l'ont vu voler.



/PRE>

vendredi 22 février 2008 à 15:06:12 | Re : Incrémentation identifiant sql!!!

LIBRE_MAX

mais tu peux aussi tester avec recordcount
If rsvoiture.recordcount=0 Then
'==> aucun enregistrement





... Y'en a même qui disent qu'ils l'ont vu voler.



/PRE>



Cette discussion est classé dans : texte, type, maximum, identifiant, idvoiture


Répondre à ce message

Sujets en rapport avec ce message

Access et champ type Memo ?? [ par barth707 ] Bjrs, J'utilise un champ type memo sous access pour faire des test parce que je ne savais pas que cela existait, avant pour mettre un grand texte j'ut Convertion de type en vba [ par gegen ] SalutJ'ai besoin de convertir un champs texte sur excel en champs numérique.ex : j'ai -45,15 en texte il me le faut en numérique Convertir un fichier ASCII [ par darkbol ] Bonjour, j'aimerais savoir comment d'un fichier ascii type : !Coordinate System: ! Projection System ID: 0 Initialized Quick: 0! Secondary Horizonta Problème d'apostrophe [ par schoubz ] Bonjour à tous.J'ai un petit souci avec une application liée à une base de données.Je veux ajouter du texte à un champs type "Memo" sur une base ACCES ACCESS 97 [ par beepmaster ] Un bug dans Acces 97 fait que les requêtes peuvent retourner des valeur de type texte > 255 caractères, lorsque l'on demande le type de la colonne la [vb.net] Problème de conversion de types (String ==> Double) [ par steppenwolf ] Salut !J'ai un problème dans mon programme avec une conversion de type. J'extrais des données d'un fichier texte, puis je les affecte à des variables comment mettre une condition sur une donnée de type texte sur Excel [ par vbdebut ] Bounjour à tous,Je cherche à faire une condition en fonction d' un texte (si nom de fournisseur est .... alors on fait...) dans une colonne EXCEL. Je Champ type OLE [ par dam94 ] Bonjour,J'ai un fichier texte que je voudrai stocker dans un champ access. Le fichier fais plus de 255 caractères donc je ne peut pas utiliser le cham Récupérer le contenu d'un "input type=texte" form pour un programme cgi [ par Ayorosmage ] Salut à tous, j'aimerai savoir comment on peut transmettre le contenu d'une fenêtre input de type texte (html) et les envoyer à un programme ***.cgi Problème bizarre de récupération d'une chaîne... [ par Titoudoun ] Bonjour à tous !J'ai à nouveau un problème sur ma base de données. En effet, j'ai une requête qui doit renvoyer un texte, mais le programme génère une


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,640 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.