PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Modifier un fichier suite a un tri par une requete
Modifier un fichier suite a un tri par une requete
Débuté par D.Duval, 11 jan. 2007 09:35 - 3 réponses
Posté le 11 janvier 2007 - 09:35
Bonsoir

Je tri des enregistrement à l'aide d'un requete selection

HExécuteRequête("Requete_selection1",hModifieFichier,saisie1,Saisie2,Saisie3)
TableAffiche(Table_PURREQ)

je selectionne un enregistrement que je veux modifier dans la table et qui doit modifier la base de donnée.

je sort de l'enregistrement avec

HLit(Requete_selection1.PRIXDEVENTE,hNumEnrEnCours,hBlocageNon)
HModifie(PURREQ.PRIXDEVENTE)

Et la patratra message d'erreur

Erreur à la ligne 1 du traitement Sortie d'une ligne de Table_PURREQ.
Vous avez appelé la fonction HLit.
Fichier <123> inconnu dans l'analyse <X:\Mes Projets\analyse_dnyee.wdd>, ou requête ou vue non initialisée.

Pourquoi fichier <123>?

Comment initialiser la requete ou la vue?

Si la table n'est pas triée par une requéte il n'y a aucun probleme, mais la table fait plusieurs dizaine de millier de ligne, il faut que je tri.

J'ai testé pas mal de solution, lu la doc vraiment mal foutu de Windev, epluché le forum mais je n'avance pas. Alors si vous avez une idée, je vous remercierez en vous exprimant mes voeux les plus sinceres.

D. Duval
Posté le 11 janvier 2007 - 09:56
Salut

En regardant dans l'aide je lis :

HModifie([<Nom du fichier>] [,<Numéro d'enregistrement> [, <Options>]])

donc, comme paramêtre : le nom du fichier.

or tu mets

HModifie(PURREQ.PRIXDEVENTE)

ce qui me semble ne pas être un nom de fichier, mais plutôt le nom d'un champ dans le fichier.

@+, JF
Posté le 11 janvier 2007 - 23:09
En effet en changeant le nom de la table access conte le nom de la requete alimentant la table d'affichage:

EcranVersFichier()
PURREQ.PRIXDEVENTE=Prixdevente
HModifie(Requete_selection1,0,hEcritureDéfaut)

il ne me retourne qu'un message d'erreur du type


Description = Mise à jour impossible. La base de données ou l'objet est en lecture seule.
Source = Microsoft JET Database Engine
Help Context = 5003027
SQL State = 3027
Error Number = -2147217911
Native Error Number = -118490897

Hors, la base n'est pas en lecture seule.
Ca me gonfle de planter sur un truc si basic
Posté le 12 janvier 2007 - 10:09
Salut,

J'ai déjà rencontré ce genre de problème.

Affichage de données résultant d'une requête.
Tentative de modifier un ou plusieurs champs d'un enregistrement
Au rechargement de la table, mes anciennes valeurs étant toujours là, les nouvelles n'ont pas été prises en compte.

Ma solution:

Ma requête récupère un champs qui me permet d'identifier clairement l'enregistrement à modifier dans la table et je fait un

HLitRecherchePremier(<Nom du fichier>, <Nom de la rubrique>, <Valeur recherchée>)
<Nom du fichier>.<Nom de la rubrique>=MaNouvelleValeur
HModifie(<Nom du fichier>)
HExécuteRequête(<Nom requête> [, <Mode> [, <Para1> [, ... <ParaN>]]])
TableAffiche(<Nom de la table>)

et le tour est joué.

Bon à voir si cela fonctionne également avec Access.

@+, JF