Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD14] Problème avec Hmodifie()

4 réponses
Avatar
Gilles le nouveau
Bonjour,
J'ai besoin de faire un "import" de MySql vers HF .
Pour cela je créée une requête d'extraction de ma base MySQL.
J'integre enregistrement par enregistrement dans ma base HF (sous
condition)
Cela fonctionne trés bien.
Par contre quand je fais à nouveau un "import", je teste la présence de
l'enregistrement dans la base cible auquel cas je fais un Hmodifie() au
lieu d'un HAjoute()
Quand je débugge, HModifie() renvoie vrai pourtant les enregistrement
ne sont pas mis à jour.
Si quelqu'un à une idée ?
Merci d'avance.
Gilles Le Nouveau (qui ne l'ai plus vraiment d'ailleurs)

4 réponses

Avatar
yannick.rusch
On 16 fév, 15:54, Gilles le nouveau wrote:
Bonjour,
J'ai besoin de faire un "import" de MySql vers HF .
Pour cela je créée une requête d'extraction de ma base MySQL.
J'integre enregistrement par enregistrement dans ma base HF (sous
condition)
Cela fonctionne trés bien.
Par contre quand je fais à nouveau un "import", je teste la présence de
l'enregistrement dans la base cible auquel cas je fais un Hmodifie() au
lieu d'un HAjoute()
Quand je débugge, HModifie() renvoie vrai pourtant les enregistrement
ne sont pas mis à jour.
Si quelqu'un à une idée ?
Merci d'avance.
Gilles Le Nouveau (qui ne l'ai plus vraiment d'ailleurs)



Bonjour

Un bout de code pourrait être utile.

Yannick
Avatar
Gilles le nouveau
Après mûre réflexion, a écrit :
On 16 fév, 15:54, Gilles le nouveau wrote:
Bonjour,
J'ai besoin de faire un "import" de MySql vers HF .
Pour cela je créée une requête d'extraction de ma base MySQL.
J'integre enregistrement par enregistrement dans ma base HF (sous
condition)
Cela fonctionne trés bien.
Par contre quand je fais à nouveau un "import", je teste la présence de
l'enregistrement dans la base cible auquel cas je fais un Hmodifie() au
lieu d'un HAjoute()
Quand je débugge, HModifie() renvoie vrai pourtant les enregistrement
ne sont pas mis à jour.
Si quelqu'un à une idée ?
Merci d'avance.
Gilles Le Nouveau (qui ne l'ai plus vraiment d'ailleurs)



Bonjour

Un bout de code pourrait être utile.

Yannick



Pas de problème , c'était pour pas ennuyez le monde avec mon
programmation de nain ;)
//////code //
HExécuteRequête(REQ_AccountInfo_Hardware,hModifieFichier)
HLitPremier(REQ_AccountInfo_Hardware)
TANTQUE HEnDehors(REQ_AccountInfo_Hardware) = Faux
//A FAIRE Gérer les Ordinateur Déjà Présent par Hardware_id et
Ordinateur.IDSite
SI
HLitRecherchePremier(Site,NuméroInterneSite,REQ_AccountInfo_Hardware.TAG)
ALORS

Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME
Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
// Retourne 0 si le mot server est absent 1 si le mot server est
présent
Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY
Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS
// Si le PC existe déjà dans la base , on le met à jour.

SI
HLitRecherchePremier(Ordinateur,NuméroInterneOrdinateur,Ordinateur.NuméroInterneOrdinateur)
ALORS
HModifie(Ordinateur)
SINON
HAjoute(Ordinateur)
FIN

SINON
// On trace les Ordinateurs qui n'ont pas été intégrés fautes de site
présent.
UneLigne="Numéro OCS :
"+REQ_AccountInfo_Hardware.HARDWARE_ID+TAB+"Numéro du site :
"+REQ_AccountInfo_Hardware.TAG+TAB+" Serveur :
"+ChaîneOccurrence(REQ_AccountInfo_Hardware.OSNAME,"Server")
sResþcritLigne(nResOuverture,&UneLigne,Taille(UneLigne))

FIN
// Passe à l'enregistrement suivant
HLitSuivant(REQ_AccountInfo_Hardware)

FIN
fFerme(nResOuverture)
Avatar
Pascal ROY
Gilles le nouveau a écrit :
Après mûre réflexion, a écrit :
On 16 fév, 15:54, Gilles le nouveau wrote:
Bonjour,
J'ai besoin de faire un "import" de MySql vers HF .
Pour cela je créée une requête d'extraction de ma base MySQL.
J'integre enregistrement par enregistrement dans ma base HF (sous
condition)
Cela fonctionne trés bien.
Par contre quand je fais à nouveau un "import", je teste la présence de
l'enregistrement dans la base cible auquel cas je fais un Hmodifie() au
lieu d'un HAjoute()
Quand je débugge, HModifie() renvoie vrai pourtant les enregistrement
ne sont pas mis à jour.
Si quelqu'un à une idée ?
Merci d'avance.
Gilles Le Nouveau (qui ne l'ai plus vraiment d'ailleurs)



Bonjour

Un bout de code pourrait être utile.

Yannick



Pas de problème , c'était pour pas ennuyez le monde avec mon
programmation de nain ;)
//////code //
HExécuteRequête(REQ_AccountInfo_Hardware,hModifieFichier)
HLitPremier(REQ_AccountInfo_Hardware)
TANTQUE HEnDehors(REQ_AccountInfo_Hardware) = Faux
//A FAIRE Gérer les Ordinateur Déjà Présent par Hardware_id et
Ordinateur.IDSite
SI
HLitRecherchePremier(Site,NuméroInterneSite,REQ_AccountInfo_Hardware.TAG)
ALORS

Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME

Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
// Retourne 0 si le mot server est absent 1 si le mot server est présent
Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY

Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS

// Si le PC existe déjà dans la base , on le met à jour.

SI
HLitRecherchePremier(Ordinateur,NuméroInterneOrdinateur,Ordinateur.NuméroInterneOrdinateur)
ALORS
HModifie(Ordinateur)
SINON
HAjoute(Ordinateur)
FIN

SINON
// On trace les Ordinateurs qui n'ont pas été intégrés fautes de
site présent.
UneLigne="Numéro OCS :
"+REQ_AccountInfo_Hardware.HARDWARE_ID+TAB+"Numéro du site :
"+REQ_AccountInfo_Hardware.TAG+TAB+" Serveur :
"+ChaîneOccurrence(REQ_AccountInfo_Hardware.OSNAME,"Server")
sResþcritLigne(nResOuverture,&UneLigne,Taille(UneLigne))

FIN
// Passe à l'enregistrement suivant
HLitSuivant(REQ_AccountInfo_Hardware)

FIN
fFerme(nResOuverture)




C'est normal, quand tu fais ton hlitrecherche (Ordinateur) tu écrases les
données avec celles que tu viens de lire.

Fais plutot ainsi

> //////code //
> HExécuteRequête(REQ_AccountInfo_Hardware,hModifieFichier)
> HLitPremier(REQ_AccountInfo_Hardware)
> TANTQUE HEnDehors(REQ_AccountInfo_Hardware) = Faux
> //A FAIRE Gérer les Ordinateur Déjà Présent par Hardware_id et
> Ordinateur.IDSite
> SI
> HLitRecherchePremier(Site,NuméroInterneSite,REQ_AccountInfo_Hardware.TAG)
> ALORS
> SI >HLitRecherchePremier(Ordinateur,
NuméroInterneOrdinateur,Ordinateur.NuméroInterneOrdinateur)
> ALORS
> Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
> Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
> Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
> Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
> Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME
>
> Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
> // Retourne 0 si le mot server est absent 1 si le mot server est présent
> Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
> Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
> Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY
>
>
Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS

>
> // Si le PC existe déjà dans la base , on le met à jour.
>
>
HModifie(Ordinateur)
> SINON
> Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
> Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
> Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
> Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
> Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME
>
>
Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
> // Retourne 0 si le mot server est absent 1 si le mot server est présent
> Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
> Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
> Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY
>
>
Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS

>
> HAjoute(Ordinateur)
> FIN
>
> SINON
> // On trace les Ordinateurs qui n'ont pas été intégrés fautes de
> site présent.
> UneLigne="Numéro OCS :
> "+REQ_AccountInfo_Hardware.HARDWARE_ID+TAB+"Numéro du site :
> "+REQ_AccountInfo_Hardware.TAG+TAB+" Serveur :
> "+ChaîneOccurrence(REQ_AccountInfo_Hardware.OSNAME,"Server")
> sResþcritLigne(nResOuverture,&UneLigne,Taille(UneLigne))
>
> FIN
> // Passe à l'enregistrement suivant
> HLitSuivant(REQ_AccountInfo_Hardware)
>
> FIN
> fFerme(nResOuverture)
>


--
Pascal ROY
(Service Informatique - SODALEC)
Avatar
Gilles le nouveau
Pascal ROY avait écrit le 17/02/2009 :
Gilles le nouveau a écrit :
Après mûre réflexion, a écrit :
On 16 fév, 15:54, Gilles le nouveau wrote:
Bonjour,
J'ai besoin de faire un "import" de MySql vers HF .
Pour cela je créée une requête d'extraction de ma base MySQL.
J'integre enregistrement par enregistrement dans ma base HF (sous
condition)
Cela fonctionne trés bien.
Par contre quand je fais à nouveau un "import", je teste la présence de
l'enregistrement dans la base cible auquel cas je fais un Hmodifie() au
lieu d'un HAjoute()
Quand je débugge, HModifie() renvoie vrai pourtant les enregistrement
ne sont pas mis à jour.
Si quelqu'un à une idée ?
Merci d'avance.
Gilles Le Nouveau (qui ne l'ai plus vraiment d'ailleurs)



Bonjour

Un bout de code pourrait être utile.

Yannick



Pas de problème , c'était pour pas ennuyez le monde avec mon programmation
de nain ;)
//////code //
HExécuteRequête(REQ_AccountInfo_Hardware,hModifieFichier)
HLitPremier(REQ_AccountInfo_Hardware)
TANTQUE HEnDehors(REQ_AccountInfo_Hardware) = Faux
//A FAIRE Gérer les Ordinateur Déjà Présent par Hardware_id et
Ordinateur.IDSite
SI
HLitRecherchePremier(Site,NuméroInterneSite,REQ_AccountInfo_Hardware.TAG)
ALORS

Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME

Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
// Retourne 0 si le mot server est absent 1 si le mot server est présent
Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY

Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS

// Si le PC existe déjà dans la base , on le met à jour.

SI
HLitRecherchePremier(Ordinateur,NuméroInterneOrdinateur,Ordinateur.NuméroInterneOrdinateur)
ALORS
HModifie(Ordinateur)
SINON
HAjoute(Ordinateur)
FIN

SINON
// On trace les Ordinateurs qui n'ont pas été intégrés fautes de
site présent.
UneLigne="Numéro OCS :
"+REQ_AccountInfo_Hardware.HARDWARE_ID+TAB+"Numéro du site :
"+REQ_AccountInfo_Hardware.TAG+TAB+" Serveur :
"+ChaîneOccurrence(REQ_AccountInfo_Hardware.OSNAME,"Server")
sResþcritLigne(nResOuverture,&UneLigne,Taille(UneLigne))

FIN
// Passe à l'enregistrement suivant
HLitSuivant(REQ_AccountInfo_Hardware)

FIN
fFerme(nResOuverture)




C'est normal, quand tu fais ton hlitrecherche (Ordinateur) tu écrases les
données avec celles que tu viens de lire.

Fais plutot ainsi

> //////code //
> HExécuteRequête(REQ_AccountInfo_Hardware,hModifieFichier)
> HLitPremier(REQ_AccountInfo_Hardware)
> TANTQUE HEnDehors(REQ_AccountInfo_Hardware) = Faux
> //A FAIRE Gérer les Ordinateur Déjà Présent par Hardware_id et
> Ordinateur.IDSite
> SI
> HLitRecherchePremier(Site,NuméroInterneSite,REQ_AccountInfo_Hardware.TAG)
> ALORS
> SI >HLitRecherchePremier(Ordinateur,
NuméroInterneOrdinateur,Ordinateur.NuméroInterneOrdinateur)
> ALORS
> Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
> Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
> Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
> Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
> Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME
>
>
Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
> // Retourne 0 si le mot server est absent 1 si le mot server est présent
> Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
> Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
> Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY
>
>
Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS

>
> // Si le PC existe déjà dans la base , on le met à jour.
>
>
HModifie(Ordinateur)
> SINON
> Ordinateur.Nom_PC=REQ_AccountInfo_Hardware.NAME
> Ordinateur.Nom_Du_Reseau=REQ_AccountInfo_Hardware.WORKGROUP
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.ID
> Ordinateur.NuméroInterneSite=REQ_AccountInfo_Hardware.TAG
> Ordinateur.NuméroExterneOCS=REQ_AccountInfo_Hardware.HARDWARE_ID
> Ordinateur.AdresseIP=REQ_AccountInfo_Hardware.IPADDR
> Ordinateur.SytemeExploitation=REQ_AccountInfo_Hardware.OSNAME
>
>
Ordinateur.Serveur=ChaîneOccurrence(Ordinateur.SytemeExploitation,"Server")
> // Retourne 0 si le mot server est absent 1 si le mot server est présent
> Ordinateur.CommentaireOS=REQ_AccountInfo_Hardware.OSCOMMENTS
> Ordinateur.Processeur=REQ_AccountInfo_Hardware.PROCESSORT
> Ordinateur.RAM=REQ_AccountInfo_Hardware.MEMORY
>
>
Ordinateur.NuméroInterneOrdinateur=Ordinateur.NuméroInterneSite+"-"+Ordinateur.NuméroExterneOCS

>
> HAjoute(Ordinateur)
> FIN
>
> SINON
> // On trace les Ordinateurs qui n'ont pas été intégrés fautes de
> site présent.
> UneLigne="Numéro OCS :
> "+REQ_AccountInfo_Hardware.HARDWARE_ID+TAB+"Numéro du site :
> "+REQ_AccountInfo_Hardware.TAG+TAB+" Serveur :
> "+ChaîneOccurrence(REQ_AccountInfo_Hardware.OSNAME,"Server")
> sResþcritLigne(nResOuverture,&UneLigne,Taille(UneLigne))
>
> FIN
> // Passe à l'enregistrement suivant
> HLitSuivant(REQ_AccountInfo_Hardware)
>
> FIN
> fFerme(nResOuverture)



Quand c'est bien expliquer , c'est évident !!
Je suis un abr... :-(
Merci beaucoup .
Bon dév . Gilles