Accueil > Forum > > > > Probleme d'incrementation par code
Probleme d'incrementation par code
mercredi 23 avril 2008 à 21:01:23 |
Probleme d'incrementation par code

bruce207
|
Bonjour, mon probleme est le suivant : j'ai tapé le code suivant qui va dans ma base dans le dernier enregistrement le trouve (ici des matricules ex REC1, REC2, . . .RECn), si le recorset n'est pas vide, renvoie sa longueur et en fonction de la longueur donné lui attribue (incremente) un nouveau numéro et l'affiche dans le textbox à l'ouverture de la feuille. Form Activate() 'Instanciation de variable Set rst = New ADODB.Recordset Set cnx = New ADODB.Connection 'Procédure de connection Call Connexion(cnx) rst.Open"SELECT * FROM recu", cnx, adOpenKeyset, adLockOptimistic, adCmdText If rst.RecordCount <> 0Then rst.MoveLast Num = Len(rst!mat_rec) SelectCase Num Case4 i = Right(rst!mat_rec, 1) i = i + 1 txtrec(0).Text = "REC" & i i = rst!num_rec + 1 txtrec(1).Text = i Case5 i = Right(rst!mat_rec, 2) i = i + 1 txtrec(0).Text = "REC" & i i = rst!num_rec + 1 txtrec(1).Text = i . . . . Case14 i = Right(rst!mat_rec, 11) i = i + 1 txtrec(0).Text = "REC" & i i = rst!num_rec + 1 txtrec(1).Text = i EndSelect . . Le truc c'est que ça marche jusqu'au N°9 et s'arrete au N°10. J'ai regardé dans la base et je me suis rendu compte que le matricule REC10 se trouve juste apres REC1 (en 2eme position). J'utilise access 2003 et j'aimerais savoir comment faire pour que REC10 revienne en dernier position pour que mon code s'execute correctement ou sinon comment faire pour continuer d'incrementer mes matricules et resoudre ce probleme. Merci d'avance
|
|
mercredi 23 avril 2008 à 21:35:41 |
Re : Probleme d'incrementation par code

casy
|
Dans la mesure ou ton champ dans la base est de type alphanumérique tu ne pourras le trier que dans l'ordre alphabétique, c'est à dire caractère par caractère. Ainsi tous les REC1xxxxxxxxxxxxxxxxxxxxxxxx se trouveront toujours avant les REC2, parce que sur le 4eme caractère 1 est avant 2 dans l'ordre alphabétique. Regarde si une requette de ce style ne passerait pas chez toi : SELECT * FROM recu ORDER BY CONVERT(int,SUBSTRING(mat_rec,4,999999999))Ensuite tu peux largement simplifer ton code. Pourquoi faire un select case avec tous les cas imaginables : Form Activate() 'Instanciation de variable Set rst = New ADODB.Recordset Set cnx = New ADODB.Connection 'Procédure de connection Call Connexion(cnx) rst.Open"SELECT * FROM recu ORDER BY CONVERT(int,SUBSTRING(mat_rec,4,999999999))", cnx, adOpenKeyset, adLockOptimistic, adCmdText If rst.RecordCount <> 0Then rst.MoveLast i = Mid(rst!mat_rec,4) ' Remplace tout ton Select Case i = i + 1 txtrec(0).Text = "REC" & i i = rst!num_rec + 1 txtrec(1).Text = i end if ......---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
vendredi 25 avril 2008 à 18:59:23 |
Re : Probleme d'incrementation par code

bruce207
|
Bonjour, j'ai essayé le code que tu m'as donné mais le debogeur s'arrete sur la ligne : rst.Open"SELECT * FROM recu ORDER BY CONVERT(int,SUBSTRING(mat_rec,4,999999999))", cnx, adOpenKeyset, adLockOptimistic, adCmdText et m'affiche le message suivant : Erreur d'exécution'-2147467259(80004005)': la méthode 'Open' de l'objet'_Recordset'a échoué Que faire ?
|
|
vendredi 25 avril 2008 à 21:02:30 |
Re : Probleme d'incrementation par code
|
samedi 26 avril 2008 à 15:48:29 |
Re : Probleme d'incrementation par code

bruce207
|
Bonjour, J'utilise une base de donnée access (2003).
|
|
samedi 26 avril 2008 à 16:43:20 |
Re : Probleme d'incrementation par code

casy
|
Réponse acceptée !
Ok, si tu es sous Access2003 il vaudrait peut-etre mieux utiliser la syntaxe VBA alors plutot que la syntaxe TRANSACT/SQL Essaye avec cette requette : SELECT * FROM recu ORDER BY CINT(MID(mat_rec,4))c'est la même que l'autre mais avec des noms de fonctions VBA ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
mardi 5 août 2008 à 15:15:41 |
Re : Probleme d'incrementation par code

bruce207
|
Bonjour, vu que mon application va gerer un grand nombre d'information, j'ai changé de bdd, maintenant j'utilise une bdd MySQL et le probleme d'incrementation se pose egalement avec la nouvelle bdd. Quand je met le code suivant : 'Instanciation de variable Set rst = New ADODB.Recordset Set cnx = New ADODB.Connection 'Procédure de connection Call Connexion(cnx) rst.Open"SELECT * FROM recu ORDER BY CONVERT(int,SUBSTRING(mat_rec,4,999999999))", cnx, adOpenKeyset, adLockOptimistic, adCmdText If rst.RecordCount <> 0Then rst.MoveLast i = Mid(rst!mat_rec,4) ' Remplace tout ton Select Case i = i + 1 txtrec(0).Text = "REC" & i i = rst!num_rec + 1 txtrec(1).Text = i end if ......
j'ai le message d'erreur suivant qui pointe toujours sur la meme ligne: Erreur d'exécution '-2147217900 ....for the right syntax to use near 'int, SUBSTRING(mat_rec,4,9999999))' at line 1
je voudrais savoir comment faire pour y remedier Merci d'avance
|
|
mercredi 6 août 2008 à 20:50:53 |
Re : Probleme d'incrementation par code

casy
|
Il semblerait apparement que avec MySQL, l'instruction Convert s'utilise un peu différemment Essaye avec la requette suivante : SELECT * FROM recu ORDER BY CONVERT(SUBSTRING(mat_rec,4,999999999), SIGNED) ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
jeudi 7 août 2008 à 14:49:37 |
Re : Probleme d'incrementation par code

bruce207
|
Bonjour, la requete marche mais elle s'arrete à la ligne en bleue 'Instanciation de variable Set rst = New ADODB.Recordset Set cnx = New ADODB.Connection 'Procédure de connection Call Connexion(cnx) rst.Open"SELECT * FROM recu ORDER BY CONVERT(SUBSTRING(mat_rec,4,999999999), SIGNED)", cnx, adOpenKeyset, adLockOptimistic, adCmdText If rst.RecordCount <> 0Then rst.MoveLast i = Mid(rst!mat_rec,4) i = i + 1 txtrec(0).Text = "REC" & i i = rst!num_rec + 1 txtrec(1).Text = i end if ...... Et j'ai le message d'erreur suivant :
Erreur d'exécution '458': La variable utilise un type Automation non géré par Visual Basic
et je signale que le type de num_rec est définie par mediumint(8) unsigned.
|
|
jeudi 7 août 2008 à 17:54:40 |
Re : Probleme d'incrementation par code

casy
|
Effectivement, c'est probablement le type mediumint qui n'est pas compris. Il faudrait probablement faire une convertion mais je ne sais pas où. Je n'ai pas MySQL sous la main pour faire des tests. Essaye, voir si ça marche, ceci : i = CInt(rst!num_rec) + 1
Sinon, il faudrait peut-etre faire la conversion dans le select. SELECT CAST(num_rec AS SIGNED), mat_rec FROM recu ORDER BY CONVERT(SUBSTRING(mat_rec,4,999999999), SIGNED)J'avoue ne pas pouvoir t'aider plus à ce niveau. ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
Cette discussion est classée dans : text, num, rst, rec, txtrec
Répondre à ce message
Sujets en rapport avec ce message
PB affichage des champs NULL de ma BD [ par monsnow ]
Je veux afficher dans des Textbox des attributs d'une table de ma base de données...Mais pour les attributs NULL, VB me dit qu'il y a une erreur: inva
Comment faire une jointure entre deux tables [ par laurent207 ]
je dévoloppe un prog qui sauvegarde une table access ds un fichier texte. Dans un souci de perfectionnement, je souhaite inscrire dans le fichier le t
pb dans un datagrid [ par oufben ]
SaluuuuuuuutBon, c'est pas tout ca, mais les datagrid, ca commence a me #@~'#@J'arrive a afficher des donné dedans, la y a pas de probleme... Le truc,
Inserer avec VB dans table access ! [ par YabLeo ]
Salut alors voilà g un gros probleme qui m'empeche de continuer mon projet (en stage).Dans mon projet je créé une base access comme ceci :Set dbLbv =
answer to reset et mscomm [ par akai ]
bonjour debutant en vb je but sur un probléme quant à la réception de l atr de divers carte a puce.a chaque fois msComm1.InBufferCount me donne une va
:: Prob d'enregistrement :: [ par alias666 ]
Lu j'ai une table clients avec comme champs (N°Client,Nom,adresse,cp,ville,tel et fax) et une table contact(IdContact, nomContact,Fonction,Telcontact)
ERF trouve pas :s [ par alias666 ]
Kikoo tout le monde j'ai une table clients avec comme champs (N°Client,Nom,adresse,cp,ville,tel et fax) et une table contact(IdContact, nomContact,Fon
API sax (XML) [ par zame ]
Voilà je cherche comment lire des elements dans un fichier xml.J'arrive à le lire avec DOM,mais le probleme c'est qu'il fait 10mo et prend 3min a tou
sql aide SVP!!!!!!! [ par KOMZY ]
voici ma requete:qry = "select distinct[echantillon.Num_rde] from echantillon,rde where echantillon.num_rde=rde.num_rde" qry = qry & " and nu
pb d'insertion dans sql server6.5 sous vb6 [ par obrosky ]
Private Sub Command1_Click()Dim Answer, Msg ' Déclare la variable. Unload Form13 ' Décharge la feuille. Msg = "La feuille Roulement a été déch
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|