PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Requete INSERT fonctionnant sous W19 mais plus sous W20 ?
Requete INSERT fonctionnant sous W19 mais plus sous W20 ?
Débuté par Denis, 27 mar. 2015 15:20 - 5 réponses
Posté le 27 mars 2015 - 15:20
Bonjour,

J'ai une erreur sur une requete SQL d'insertion depuis que je suis passé en Windev 20 ?

Voici l'erreur :
Impossible de transformer la donnée dans le type de la rubrique <WSYNC.Code>
code erreur : 70500
code erreur wd55 : 500
module wd200hf.dll
WDHF version 20.0.85.0

Voici le code qui pose problème :

SI HExécuteRequêteSQL(MaRequete,hRequêteSansCorrectionHF,"INSERT INTO Synchro_Temp "+MonSQL+"") ALORS
HAnnuleAlias("wSYNC")
MonSQL="SELECT Synchro_Temp.Code FROM Synchro_Temp WHERE Utilisateur='"+wUser+"' AND Synchro_Temp.Code>0"
////FICHIER CLIENTS_PROSPECTS
HAlias(Clients_Prospects,"wSYNC")
HChangeConnexion("wSYNC",CnxLocale)
HChangeNom("wSYNC","Clients_Prospects")
HSupprimeTout(wSYNC)
SI PAS HExécuteRequêteSQL(MaRequeteSYNC,hRequêteSansCorrectionHF,"INSERT INTO WSYNC SELECT * FROM Clients_Prospects WHERE Clients_Prospects.Code IN ("+MonSQL+")") ALORS
Erreur(ErreurInfo(errComplet))
RETOUR
FIN
HAnnuleAlias("WSYNC")


c'est cette requete qui génére l'erreur :

HExécuteRequêteSQL(MaRequeteSYNC,hRequêteSansCorrectionHF,"INSERT INTO WSYNC SELECT * FROM Clients_Prospects WHERE Clients_Prospects.Code IN ("+MonSQL+")")

mais j'ai mis le code avant pour que vous compreniez avec les alias etc ...
En fait je synchronise un poste distant avec des fichiers HF classique et mon serveur HFSQL

Si qq'un à une idée, merci d'avance,
Denis.
Posté le 27 mars 2015 - 16:24
Bonjour,
Tu avais de la chance que ces requêtes fonctionnent avec la version 19...
Dans un Insert il faut toujours préciser les colonnes de la table.
De plus je te déconseilles fortement un SELECT * ici.
Si jamais le schéma d'une des tables change (ajout d'une colonne, changement
d'ordre des colonnes), soit la requête plante (si tu as de la chance), soit
les données vont dans les mauvaises colonnes.

Bref si tu corriges ces requêtes en spécifiant les colonnes dans la section
INSERT et dans la section SELECT tu ne devrais plus avoir d'erreur.

Frédéric.

"Denis" a écrit dans le message de groupe de discussion :
2015a2bc7c62751a6f1e73e4b6d249cbd14d@news.pcsoft.fr...

Bonjour,

J'ai une erreur sur une requete SQL d'insertion depuis que je suis passé en
Windev 20 ?

Voici l'erreur :
Impossible de transformer la donnée dans le type de la rubrique <WSYNC.Code>
code erreur : 70500
code erreur wd55 : 500
module wd200hf.dll
WDHF version 20.0.85.0

Voici le code qui pose problème :

SI HExécuteRequêteSQL(MaRequete,hRequêteSansCorrectionHF,"INSERT INTO
Synchro_Temp "+MonSQL+"") ALORS
HAnnuleAlias("wSYNC")
MonSQL="SELECT Synchro_Temp.Code FROM Synchro_Temp WHERE
Utilisateur='"+wUser+"' AND Synchro_Temp.Code>0"
////FICHIER CLIENTS_PROSPECTS
HAlias(Clients_Prospects,"wSYNC")
HChangeConnexion("wSYNC",CnxLocale)
HChangeNom("wSYNC","Clients_Prospects")
HSupprimeTout(wSYNC)
SI PAS HExécuteRequêteSQL(MaRequeteSYNC,hRequêteSansCorrectionHF,"INSERT
INTO WSYNC SELECT * FROM Clients_Prospects WHERE Clients_Prospects.Code IN
("+MonSQL+")") ALORS
Erreur(ErreurInfo(errComplet))
RETOUR
FIN
HAnnuleAlias("WSYNC")


c'est cette requete qui génére l'erreur :

HExécuteRequêteSQL(MaRequeteSYNC,hRequêteSansCorrectionHF,"INSERT INTO WSYNC
SELECT * FROM Clients_Prospects WHERE Clients_Prospects.Code IN
("+MonSQL+")")

mais j'ai mis le code avant pour que vous compreniez avec les alias etc ...
En fait je synchronise un poste distant avec des fichiers HF classique et
mon serveur HFSQL

Si qq'un à une idée, merci d'avance,
Denis.
Posté le 27 mars 2015 - 17:26
Merci beaucoup, je vais tester cela !!!
Posté le 30 mars 2015 - 09:54
Bon et bien cela ne fonctionne pas mieux ...
J'ai revérifier mon analyse et mes alias et tout est ok alors là je ne comprends pas ...
Cela pourrait-il être lié à mon installation de windev 20 ?

Voici la requete modifiée mais qui ne passe toujours pas :

MonSQL=[
INSERT INTO CLP
(Code,
DateCreation,
Societe,
Adresse1,
CP,
Ville,
Pays,
Tel,
Fax,
Email,
Zone,
Groupe,
Activité1,
Activité2,
Intérêt,
Intensité_Com,
Représentant,
NatureLib,
Suspendu,
Assistante,
Observation,
DateModif,
Etat,
Langue,
SaisiePar,
NomPC,
Origine,
TxtOrigine,
SiteWeb,
Enseigne,
Règlement,
RemiseEXPO,
BFA,
BFR,
Escompte,
FrancoPort,
ForfaitFrais,
Interdit,
CodePayeur,
Flag,
FlagTHG,
EMailInterdit,
WebRevendeur,
HAM1,
HAM2,
HPM1,
HPM2,
HNonStop,
HObservations)

SELECT
Code,
DateCreation,
Societe,
Adresse1,
CP,
Ville,
Pays,
Tel,
Fax,
Email,
Zone,
Groupe,
Activité1,
Activité2,
Intérêt,
Intensité_Com,
Représentant,
NatureLib,
Suspendu,
Assistante,
Observation,
DateModif,
Etat,
Langue,
SaisiePar,
NomPC,
Origine,
TxtOrigine,
SiteWeb,
Enseigne,
Règlement,
RemiseEXPO,
BFA,
BFR,
Escompte,
FrancoPort,
ForfaitFrais,
Interdit,
CodePayeur,
Flag,
FlagTHG,
EMailInterdit,
WebRevendeur,
HAM1,
HAM2,
HPM1,
HPM2,
HNonStop,
HObservations
FROM Clients_Prospects WHERE Clients_Prospects.Code IN (SELECT Synchro_Temp.Code FROM Synchro_Temp WHERE Utilisateur='%1' AND Synchro_Temp.Code>0)
]
Posté le 30 mars 2015 - 09:57
Bon et bien j'ai testé mais cela ne passe pas mieux, même erreur ...
Cela serait-il dû à mon install de windev 20 (mal installé ?)

Voici la requete modifiée qui ne passe toujours pas :

MonSQL=[
INSERT INTO CLP
(Code,
DateCreation,
Societe,
Adresse1,
CP,
Ville,
Pays,
Tel,
Fax,
Email,
Zone,
Groupe,
Activité1,
Activité2,
Intérêt,
Intensité_Com,
Représentant,
NatureLib,
Suspendu,
Assistante,
Observation,
DateModif,
Etat,
Langue,
SaisiePar,
NomPC,
Origine,
TxtOrigine,
SiteWeb,
Enseigne,
Règlement,
RemiseEXPO,
BFA,
BFR,
Escompte,
FrancoPort,
ForfaitFrais,
Interdit,
CodePayeur,
Flag,
FlagTHG,
EMailInterdit,
WebRevendeur,
HAM1,
HAM2,
HPM1,
HPM2,
HNonStop,
HObservations)

SELECT
Code,
DateCreation,
Societe,
Adresse1,
CP,
Ville,
Pays,
Tel,
Fax,
Email,
Zone,
Groupe,
Activité1,
Activité2,
Intérêt,
Intensité_Com,
Représentant,
NatureLib,
Suspendu,
Assistante,
Observation,
DateModif,
Etat,
Langue,
SaisiePar,
NomPC,
Origine,
TxtOrigine,
SiteWeb,
Enseigne,
Règlement,
RemiseEXPO,
BFA,
BFR,
Escompte,
FrancoPort,
ForfaitFrais,
Interdit,
CodePayeur,
Flag,
FlagTHG,
EMailInterdit,
WebRevendeur,
HAM1,
HAM2,
HPM1,
HPM2,
HNonStop,
HObservations
FROM Clients_Prospects WHERE Clients_Prospects.Code IN (SELECT Synchro_Temp.Code FROM Synchro_Temp WHERE Utilisateur='%1' AND Synchro_Temp.Code>0)
]
Posté le 31 mars 2015 - 07:39
"Qui ne passe pas"...
Mais quel est donc le message d'erreur ?

Frédéric.

"Denis" a écrit dans le message de groupe de discussion :
2015b7dcb24307d24baf0af59bedfe09b8a1@news.pcsoft.fr...

Bon et bien cela ne fonctionne pas mieux ...
J'ai revérifier mon analyse et mes alias et tout est ok alors là je ne
comprends pas ...
Cela pourrait-il être lié à mon installation de windev 20 ?

Voici la requete modifiée mais qui ne passe toujours pas :

MonSQL=[
INSERT INTO CLP
(Code,
DateCreation,
Societe,
Adresse1,
CP,
Ville,
Pays,
Tel,
Fax,
Email,
Zone,
Groupe,
Activité1,
Activité2,
Intérêt,
Intensité_Com,
Représentant,
NatureLib,
Suspendu,
Assistante,
Observation,
DateModif,
Etat,
Langue,
SaisiePar,
NomPC,
Origine,
TxtOrigine,
SiteWeb,
Enseigne,
Règlement,
RemiseEXPO,
BFA,
BFR,
Escompte,
FrancoPort,
ForfaitFrais,
Interdit,
CodePayeur,
Flag,
FlagTHG,
EMailInterdit,
WebRevendeur,
HAM1,
HAM2,
HPM1,
HPM2,
HNonStop,
HObservations)

SELECT
Code,
DateCreation,
Societe,
Adresse1,
CP,
Ville,
Pays,
Tel,
Fax,
Email,
Zone,
Groupe,
Activité1,
Activité2,
Intérêt,
Intensité_Com,
Représentant,
NatureLib,
Suspendu,
Assistante,
Observation,
DateModif,
Etat,
Langue,
SaisiePar,
NomPC,
Origine,
TxtOrigine,
SiteWeb,
Enseigne,
Règlement,
RemiseEXPO,
BFA,
BFR,
Escompte,
FrancoPort,
ForfaitFrais,
Interdit,
CodePayeur,
Flag,
FlagTHG,
EMailInterdit,
WebRevendeur,
HAM1,
HAM2,
HPM1,
HPM2,
HNonStop,
HObservations
FROM Clients_Prospects WHERE Clients_Prospects.Code IN (SELECT
Synchro_Temp.Code FROM Synchro_Temp WHERE Utilisateur='%1' AND
Synchro_Temp.Code>0)
]