Précédent   Forum des professionnels en informatique > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2012, 15h17   #1
Membre du Club
 
Homme
Inscription : juin 2004
Messages : 143
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2004
Messages : 143
Points : 52
Points : 52
Par défaut Sélectionner une ligne d'une table fichier

Bonjour,
J'ai une table liée à un fichier.
J'utilise n=HnumEnr pour obtenir le numéro d'enregistrement dans le fichier.
Je voudrais sélectionner la ligne correspondante de ma table, ce que ne permet pas de faire Hnumenr. Quelle serait la solution ?
Par avance merci
DanielB est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 15h59   #2
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Salut!

Tu peux jeter un coup d'oeil sur les fonctions TableCherche()
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 18h07   #3
Membre du Club
 
Homme
Inscription : juin 2004
Messages : 143
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2004
Messages : 143
Points : 52
Points : 52
Merci mais le problème est que je ne peux pas utiliser TableCherche car cette fonction n'est pas sensible à la casse alors que les rubriques de mon fichier y sont. J'utilise donc HRecherchePremier pour me positionner dans le fichier et j'obtiens ainsi le numéro d'enregistrement avec Hnumenr.
A partir du numéro d'enregistrement je voudrais sélectionner la ligne de la table liée.
DanielB est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h12   #4
Membre chevronné
 
Avatar de wimbish
 
Homme Christophe Vibert
Développeur informatique
Inscription : octobre 2006
Messages : 292
Détails du profil
Informations personnelles :
Nom : Homme Christophe Vibert
Âge : 38
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 292
Points : 632
Points : 632
Bonjour,
Je te déconseille le hnumenr qui peut être modifié par la ré-indexation.
la bonne méthode (selon moi) est d'ajouter une clé unique dans ta table et de faire une recherche sur cette clé dans la table pour te positionner.
wimbish est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 14h35   #5
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
Je plussoie.

Dans ton fichier, utilises l'id automatique. Cela te permettra de faire une recherche dessus (dans la table, tu ajoutes et tu masques la colonne correspondante).
frenchsting est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h15   #6
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Je pensais que HNumEnr() renvoyait justement l'id Auto du Fichier ?
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h38   #7
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
Citation:
Envoyé par zouzoukha Voir le message
Je pensais que HNumEnr() renvoyait justement l'id Auto du Fichier ?
Quelle horreur !!!

Si tu supprimes et ajoutes des enregistrements, l'id n'est pas recalculé. Il s'incrémente à chaque ajout.

Tu peux avoir un id qui vaut 2156125 et un seul enregistrement dans ta table -> hnbenr(MonFichier) = 1...

Attention dans tes programmes, tu risques de gros problèmes...
frenchsting est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 18h04   #8
Membre du Club
 
Homme
Inscription : juin 2004
Messages : 143
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2004
Messages : 143
Points : 52
Points : 52
Merci pour vos réponses
J'ai bien un id automatique dans mon fichier.
Mais je ne vois pas comment je peux sélectionner la ligne correspondante de la table à partir du contenu d'un champ de saisie sachant que, dans le champ de saisie, j'entre le contenu d'une rubrique texte (clé unique, sensible à la casse).
Pour être plus précis, le contenu du champ est un code (par exemple H25j9). Notez que h25j9 est un code différent qui correspond à une autre ligne de la table, donc à un autre enregistrement du fichier.
Je sais me positionner dans le fichier avec Hrecherchepremier mais je ne sais pas me positionner sur la ligne qui correspond.

Par avance merci
DanielB est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 19h30   #9
Membre habitué
 
Homme
Inscription : octobre 2007
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 78
Points : 105
Points : 105
Bonsoir

Concernant TableNumEnr, l'aide dit ceci :
Citation:
<Résultat> = TableNumEnr(<Nom de la table>)
--------------------------------------------------------------------------------
<Résultat> : Entier
Numéro de l'enregistrement en cours dans le fichier lié à la table ou 0 s'il n'y a pas de ligne en cours ou si la ligne en cours n'est pas encore enregistrée dans le fichier lié à la table.
Concernant votre souci, la seule solution est une petite routine avec
- une boucle TableCherche qui va sortir successivement toutes les lignes correspondant à la valeur recherchée, indépendamment de la casse ;
- comparer pour chaque ligne trouvée, la chaine figurant dans la colonne ad-hoc au code saisi dans le champ.
Si les codes ne font que 5 positions, ce ne sera pas très lourd.

En espérant avoir aidé,

Hemgé
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 22h24   #10
Membre du Club
 
Homme
Inscription : juin 2004
Messages : 143
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2004
Messages : 143
Points : 52
Points : 52
Merci pour la réponse Hemgé
Je suis bien d'accord que, pour un ligne sélectionnée, dans le code ci-dessous, n sera égal = m
Code :
1
2
3
4
5
6
HRecherchePremier(MonFichier,ColonneCode,MaRecherche)
n est un entier
n=HNumEnr(MonFichier)
m est un entier
m=TableNumEnr(MaTable)
Info(n,m)
Ceci étant, je veux sélectionner la ligne qui correspond au numéro d'enregistrement.
Effectivement, je peux comparer le contenu de mon champ de saisie avec le résultat de TableCherche.
Je pense qu'il n'y a pas d'autre solution, je vais adopter cette solution MERCI
DanielB est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h13.


 
 
 
 
Partenaires

Hébergement Web