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
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|