[WD14] Problème avec Hmodifie()

Le
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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
yannick.rusch
Le #18688381
On 16 fév, 15:54, 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)



Bonjour

Un bout de code pourrait être utile.

Yannick
Gilles le nouveau
Le #18689451
Après mûre réflexion, a écrit :
On 16 fév, 15:54, 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)



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)
Pascal ROY
Le #18690441
Gilles le nouveau a écrit :
Après mûre réflexion, a écrit :
On 16 fév, 15:54, 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)



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)
Gilles le nouveau
Le #18691151
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
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
Publicité
Poster une réponse
Anonyme