Problème d'insertion dans f_docentete

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

Problème d'insertion dans f_docentete

de babia82 » Mar 21 Juin 2016 15:30

Bonjour, je suis nouveau sur le forum. j'utilise la version I7 de Sage Gestion commerciale,
J'utilise une interface pour faire des insertions dans la table f_docentete. Mais je reçois ce message d'erreur:
Violation de la contrainte UNIQUE KEY « IDO_TPIECE ». Impossible d'insérer une clé en double dans l'objet « dbo.F_DOCENTETE ». Valeur de clé dupliquée : (1, 0x204243433333393930).L'instruction a été arrêtée.
Comment résoudre ce problème?
Ps: j'utilise une base sql server .
Merci d'avance

Cordialement
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Mar 21 Juin 2016 15:21

Re: Problème d'insertion dans f_docentete

de OokieDookie » Mer 22 Juin 2016 11:55

Bonjour,

En utilisant une autre valeur :wink:
Vous essayer de créer un document avec un numéro de pièce qui existe déjà dans la base.

Par ailleurs, on ne le répètera jamais assez, l'injection SQL dans une base L100 c'est mal : c'est à vous de contrôler l'intégrité, et à chaque montée de version votre développement peut être remis en cause.
Orientez-vous vers les Objets métiers idéalement.

HTH;
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
Et si on gagnait TOUS du temps ? Menu "?", A propos de :wink:
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 1481
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: Problème d'insertion dans f_docentete

de babia82 » Mer 22 Juin 2016 15:41

Bonjour,
J'ai compris qu'il utilise une qui existe déjà, mais l'auto-incrémentation ne fonctionne pas et je n'ai aucun moyen de mettre à jour la table F_DOCCURRENTPIECE car elle en lecture seule. J'ai essayé de faire bouger le numéro de pièce. Mais comme au départ je récupère le dernier ensuite j'incrémente, mais la nouvelle valeur ne remplace pas la dernière après insertion. Donc actuellement j'insère quasiment le même numéro de pièce à chaque, puisse j'ai enlevé l'option ignore_dup key.
Merci d'avance
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Mar 21 Juin 2016 15:21

Re: Problème d'insertion dans f_docentete

de asr31 » Jeu 23 Juin 2016 00:00

Bonjour,

Comme le dit OokieDookie, pas d'insertion directe en SQL, en plus, si vous commencez à faire sauter des contraintes de l'application, la base ne sera plus cohérente et l'application SAGE n'est pas faite pour ce genre de manip.
Passer idéalement par les Objets Métiers, sinon par l'ODBC SAGE (et non pas SQL).
A la réflexion, c'est peut-être l'ODBC SAGE que vous utilisez car en SQL, les tables ne sont pas 'en lecture seule'.

Si ODBC SAGE, il y a dans la dll ODBC une fonction pour obtenir un nouveau n° de pièce.

Faudrait que je me re penche sur la doc, mais ça fait un moment que je n'utilise plus l'ODBC SAGE.
fonction CIALDocNouvPiece () à chercher sur ce forum ...

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: Problème d'insertion dans f_docentete

de babia82 » Jeu 23 Juin 2016 11:59

Bonjour
Merci pour vos retours, le problème est que mes nouveaux bon de commande utilisent toujours le même numéro ce qui fait , la clef ne s'incrémente pas d'où l'erreur de duplication.
J'ai l'impression que l'auto incrémentation ne se fait plus. Comme je l'avais dit la table F_DoccurentPiece est bien en lecture seule.
Je n'utilise que très peu d'insert sql dans mon web service, le driver sql avec sqlconnection et sqlcommand m'arrange bien.y a t il un moyen de gérer l'évolution des clefs(autoincrémentation) et update du dernier numéro de piece. Je ne connais pas bien la librairie de objets métiers Sage et pas suffisamment le temps de me repencher sur toute la doc sur les objets métiers.
S'il n'y a pas d'autres solutions ben tant pis je me tape la doc.
Ps:je manipule la table f_docentete, f_docligne et f_doccurentpiece.
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Mar 21 Juin 2016 15:21

Re: Problème d'insertion dans f_docentete

de asr31 » Jeu 23 Juin 2016 22:20

Bonsoir,

J'insiste :
Toutes les contraintes ne sont pas coté SQL, SQL ne va pas 'tout seul' vous générer un nouveau n° de pièce, vous alimenter les champs obligatoires, etc.
Sincèrement, si vous ne voulez pas tout casser, revoyez votre méthode.
Si vous travaillez avec des Web Services, appuyez-vous sur les Objets Métiers, qui, eux, respectent les règles métier (d'où leur nom)
Vous n'êtes pas avec une base Acces ou un tableur !!!! C'est une base de données gérée par les applications SAGE.
De plus, l'éditeur refusera de réparer la base si vous l'attaquez (la base, pas l'éditeur) directement en insert ou update....

Connaissant tout de même depuis quelques années la structure et le fonctionnement de la base SQL, je me suis résolu à passer par des méthodes (douces) en conformité avec les ouvertures proposées par l'éditeur.

Le SQL me sert principalement à faire des vues (donc en mode lecture), à faire des triggers rejetant ou affichant une alerte lors d'un évènement (et encore, il faut savoir gérer la transformation de pièce en masse), ou à aller renseigner quelques informations libres....

Connaissez-vous le fonctionnement de la gestion commerciale ou avez-vous juste repéré la ou les tables SQL nécessaire à la gestion de documents de gestion ?

Je remets donc une couche :
* Pas d'insert/update direct en SQL à moins que vous soyez plus compétent que les meilleurs connaissants de ce forum
* Passez par ODBC SAGE et/ou Objets Métiers pour ce type d'opération
*Si vous ne dominez pas ces techniques, adressez-vous à votre revendeur qui, soit connait, soit vous redirigera vers un prestataire connaissant.

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: Problème d'insertion dans f_docentete

de romulus001 » Lun 27 Juin 2016 09:44

N'ayant pas pratiqué les objets métiers depuis que j'ai suivi la formation en février dernier, j'ai pas mal perdu le fil concernant le mode de fonctionnement (et quand je vais devoir m'y remettre, ce sera en windev, ce qui ne me rassure pas tant que ça), je peux néanmoins faire quelques remarques par rapport à un développement en ODBC.
Pour rechercher le prochain numéro d'un document, je me sers du fichier ASD100Lib.dll, de la fonction DocNouvPiece2, qui a pour paramètres la valeur de DO_TYPE, DO_SOUCHE et DO_PROVENANCE (la fonction DocNouvPiece peut également servir mais je n'ai jamais fait appel).
Dans votre développement, tout se dont vous aurez à faire, c'est dans un premier temps de récupérer ce numéro, puis vous faites la requête INSERT dans F_DOCENTETE, et/ou dans F_DOCLIGNE, et c'est tout, pas besoin dans ce cas de connaitre la table F_DoccurentPiece.
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité