Bonjour à tous,
Il y a quelques temps j'avais fait appel à vous (avec succès!) pour créer une liaison ODBC entre une base HyperFileSQL et une base Access.
Pour rappeler l'historique, j'ai une appli développée sous Windev (je ne suis pas le développeur et je n'ai pas de licence Windev et je n'ai jamais développé sous Windev). J'ai accès, via un centre de controle HyperfileSQL, à toutes les tables de mon projet (droit d'ecriture, de suppression, etc..).
Pour traiter mes données (et aller au-delà des traitements qui avaient été imaginés dans le projet Windev), j'ai créé une liaison ODBC pour "jouer" avec les données des tables.fic
Le sens HyperfileSQL -> Access se passe très bien et j'importe tout ce que je veux.
Par contre, j'ai des soucis lorsque, à partir d'une requete Access, je souhaite mettre à jour des enregistrements.
Prenons un exemple concret:
Dans access, j'ai une table "Engagement" qui comporte les champs suivants: "IDEngagement" et "RefEngagement".
Le champ IDEngagement est un champ numérique, le champ "RefEngagement", un champ texte.
Dans HyperfileSQL, j'ai une table "INFO" qui comporte les champs "IDINFO" (numérique) et "Libelle" (texte).
J'ai 500 nouveaux enregistrements à créer dans la table INFO.fic, correspondants à mes 500 différents engagements.
Comme je n'arrivais pas à faire une requete-ajout directe (depusi Access), j'ai créé 500 nouveaux enregistrements. J'ai récupéré les IDInfo des nouveaux enregistrements (numéro d'ordre allant de 1200 à 1700, par exemple) et j'ai imposé cette suite de numéros d'ordre à mes enregistrements de la table "Engagement", sur le champ "IDEngagement".
J'ai donc ensuite cherché à effectuer une requete mise à jour sous access, permettant, à chaque fois que Engagement.IDEngagement = Info.IdInfo, de mettre à jour le champ INfo.Libelle et disant Info.Libelle = Engagement.RefEngagement.
Cette requête n'aboutit pas et l'erreur renvoyée par le serveur estSi je fixe une valeur unique dans ma requete mise à jour, la mise à jour fonctionne, par contre ce qui est bizarre, c'est que :initialisation de la requete impossible.
Rubrique AEBP1119 [mot correspondant à la valeur de RefEngagement de la première ligne de ma table Engagement] inconnue dans le fichier. Vérifiez que la requête est en phase avec la description des fichiers.
Informations de débogage:
IEWDSQLSrv=1.12
Module =<WDSQLSrv>
Version=<16.0.21.0>.
Code SQL de la requete:
UPDATE "INFO" SET "LIBELLE"=AEBP1119 WHERE "IDINFO"=1200 (#0)
- si j'impose que tous les champs "libelle" de ma table INFO prennent la valeur "toto", ça ne fonctionne pas (or mon champ est bien un champ texte)
- si j'impose que tous les champs "libelle" de ma table INFO prennent la valeur "1", ça fonctionne...
Auriez-vous des billes pour m'aider à avancer?
Ce que je veux faire, c'est bien créer 500 nouveaux enregistrements, à la suite des enregistrements déjà existants de ma table INFO, prenant les valeurs Libelle, du type AEBP1119, AEBP1120, AEBP1121, ...
NB: j'ai aussi essayé de faire la requete UPDATE a partir du centre de controle Hyperfile SQL, mais je n'arrive pas à lui dire d'aller chercher ma table access ou un tableau excel situé à une adresse précise de mon ordi...
Je vous remercie infiniment pour votre aide !
Céline
Partager