Requête prenant en compte 6 des 8 chiffres d'un formulaire

Résolu/Fermé
maxime 25 Messages postés 19 Date d'inscription vendredi 12 juillet 2013 Statut Membre Dernière intervention 1 août 2013 - 29 juil. 2013 à 08:02
gloutonbargeot Messages postés 348 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 15 novembre 2016 - 30 juil. 2013 à 09:56
Bonjour,

Je travail sur une base de données qui comprend le nom de tous les salariés de mon entreprise et tous les pointages qu'ils effectuent aux postes.

Dans l'entreprise les matricules du personnel sont composé de 8 chiffres.
Le souci est que dans le logiciel de gestion de la production, nous ne pouvons excèder les 6 chiffres.

Le logiciel de production va donc prendre les 6 chiffres de droite.

Exemple :

- Matricule entreprise = 12345678
- Le même matricule dans le logiciel de production = 345678

Ils me faut donc une solution pour que ma première requête ne lisent que les 6 chiffres de droite de mes matricules entreprise afin d'associer les personnes aux pointages.

Avant, je procèdais sur excel avant d'importer mes pointages je copiais tous les matricules employées et je fesais un " =RECHERCHEV(L2;Matricule!A$2:B$281;2;FAUX) ".

J'aimerais trouver une méthode plus simple car maintenant une maccro me permet de supprimer toutes les lignes de pointage inutiles et d'importer mon fichier texte dans ma base.

Dans l'attente de vos réponse.

Je vous remercie d'avance et reste à votre disposition pour toutes questions.


A voir également:

4 réponses

gloutonbargeot Messages postés 348 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 15 novembre 2016 123
29 juil. 2013 à 09:38
Bonjour,

Tu peux découper le matricule directement dans le SQL avec la fonction SUBSTRING. il y a des différences de fonctionnement entre les types de bases de données (MySQL, SQL Server, Oracle).

Regarde ce lien: http://www.1keydata.com/fr/sql/sql-substring.php

Concrètement tu peux dire : je veux découper mon matricule du caractère 3 au caratère 8 en faisant :

SELECT SUBSTR (matricuel, 3, 8) FROM employes;

et tu récupèreras les 6 chiffres de droite :)

J'espère que c'est ce que tu cherches à faire! Tiens moi au courant
1
Heikro Messages postés 40 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 5 mars 2019 8
29 juil. 2013 à 10:48
Salut,

si tu es bien sur Access, utilise la fonction RIGHT() :
SELECT RIGHT(Personnels.Mat_Pe, 6), Personnels.Nom_Pe, Personnels.Prenom_Pe, [Nom_Pe] & " " & [Prenom_Pe] AS NomPrenom, Personnels.Naissance_Pe, Personnels.Section_Pe, Personnels.Contrat_Pe, Personnels.Entree_Pe, Personnels.Sortie_Pe, Personnels.CentreCharge_Pe
FROM Personnels
ORDER BY [Nom_Pe] & " " & [Prenom_Pe];
1
maxime 25 Messages postés 19 Date d'inscription vendredi 12 juillet 2013 Statut Membre Dernière intervention 1 août 2013
29 juil. 2013 à 10:33
SELECT SUBSTR(Personnels.Mat_Pe, 3, 8), Personnels.Nom_Pe, Personnels.Prenom_Pe, [Nom_Pe] & " " & [Prenom_Pe] AS NomPrenom, Personnels.Naissance_Pe, Personnels.Section_Pe, Personnels.Contrat_Pe, Personnels.Entree_Pe, Personnels.Sortie_Pe, Personnels.CentreCharge_Pe
FROM Personnels
ORDER BY [Nom_Pe] & " " & [Prenom_Pe];

Quand je met ca dans mon SQL il m'affiche :

Fonction "SUBSTR" non définie dans l'expression.

Ai-je-omis quelques choses ?

PS : Je ne maitrîse pas du tout SQL.

Merci d'avance
0
maxime 25 Messages postés 19 Date d'inscription vendredi 12 juillet 2013 Statut Membre Dernière intervention 1 août 2013
29 juil. 2013 à 11:27
Nickel ! Ca fonctionne super bien c'est exactement ce que je voulais :)

Merci beaucoup Heikro, merci gloutonbargeot !
0
gloutonbargeot Messages postés 348 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 15 novembre 2016 123
30 juil. 2013 à 09:56
Bonjour,

Je n'avais pas compris que tu travaillais sur Access :) La réponse de Heikro est donc plus adaptée :)
0