IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Erreur Bizarre SQL pour SAGE 100V15


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut Erreur Bizarre SQL pour SAGE 100V15
    Bonjour,
    Je programme un interface EDI <-> SAGE sur une gestion 100V15 SQL en OLE DB avec WINDEV14.

    Je fais un INSERT F_DOCENTE d'un bon de commande : OK
    Je fais un INSERT F_DOCLIGNE sur cette entete, et j'ai un message (voir ci-après) stipulante une erreur de contrainte F_DOCLIGNE (DE_No) <--> F_DEPOT(DE_No). J'ai verifié avec des traces de debug, j'utilise bien un DE_No existant dans le fichier dépot, que j'ai récupéré dans le F_COMPTET du client concerné.
    J'ai essayé en forçant le dépot principal (1), et c'est pareil.

    L'erreur est bizarre, car il n'y a pas de contrainte entre les fichiers F_DOCLIGNE et F_DEPOT, car pour beaucoup de ligne, il n'y a pas de dépot, et dans le fichier existant, un bonne partie des F_DOCLIGNE à DE_No = 0, cas de facturation du port par exemple.

    Que dois-je faire, ?
    Merci.

    Gérard.

    [Erreur]
    - Message d'erreur système :
    Description = Conflit entre l'instruction INSERT et la contrainte COLUMN FOREIGN KEY 'FKA_F_DOCLIGNE_DE_No'. Le conflit est survenu dans la base de données 'CDC', table 'F_DEPOT', column 'DE_No'.
    Source = Microsoft OLE DB Provider for SQL Server
    SQL State = 23000
    Error Number = -2147217873
    Native Error Number = 547
    [/Erreur]

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Si ton document est un document d'achat ou de vente (DO_Domaine =0 ou 1), si ton article est suivi en stock, le DE_No doit être le même que sur l'entete.
    Si ton article n'est pas suivi en stock DE_No=0

    Si ton document n'est pas un document d'achat ou de vente, DE_No=1

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Bonjour et merci de ta contribution,

    C'est un document de vente (BL), et dans l'entete j'ai bien le meme numéro de dépot que je compte mettre dans mes lignes. Ce numéro de dépot je l'ai pris dans le F_COMPTET du client, et il correspond bien à un dépot valide.

    Quand j'importe l'analyse, il n'y a pas de contreinte décrite dans SQL entre f_dépot et f_docligne. Je comprend pas pourquoi OLE DB me renvoi une erreur sur une liaison non décrite, et qui de plus serait de toute façon respoectée!

    Si tu d'autre idée...

    Gérard

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Vérification faite, lorsque j'importe des documents de ventes, je renseigne le DE_No sur l'entête avec le n° de dépôt, mais je ne le renseigne pas sur la ligne (il n'est pas dans la requête insert).

    Par contre je passe systématiquement par le driver ODBC SAGE pour faire de l'import, je n'écrit pas directement dans les tables SQL.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Ha ok!
    Quand on utilise le driver ODBC proprio, celui-ci rajoute des données, ce qui n'est pas le cas avec un acces direct SQL. J'ai pls autres client ou j'utilise je driver ODBC de SAGE. Mais c'est possible que sur des petits dossiers, car le driver rame en 'INSERT' sur les gros dossiers.
    Pour ce client, qui est un gros dossier, SQL en direct est impératif.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    De plus en plus fou, mais qui peut peut être donner une idée à quelqu'un :

    Sur un Serveur 2003 SQL 2000, cette erreur se rpoduisait sur les INSERT des F_DOCLIGNE. Mes F_DOCENTE passaient sans pb.

    Aujourd'hui, j'ai fais des tests sur un serveur 2008, SQL 2005, et c'est sur le INSERT du F_DOCENTETE que j'ai la meme erreur ou tout du moins le meme libellé d'erreur.

    Pourquoi, avec la meme requete je passe sur une config Serveur2003 + SQL 2000, et que je passe plus sur la config Serveur2008+SQL2005!

    Voici la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO F_DOCENTETE ( DO_Domaine, DO_Type, DO_Piece, DO_Date, DO_Ref, 
    DO_BLFact, DO_Tiers, AB_No, CA_No, CA_Num, CG_Num, 
    CT_NumPayeur, DE_No, DO_Cloture, DO_Colisage, DO_Condition, 
    DO_Devise, DO_Expedit, DO_Langue, DO_NbFacture, DO_Period,  
    DO_TxEscompte, N_CatCompta, RE_No, DO_Ecart, DO_Imprim, DO_Reliquat, 
    DO_Souche, DO_Statut, DO_Transfere, DO_TypeColis, DO_Ventile, 
    LI_No, RE_NoCaissier, DO_Attente, DO_NoWeb, DO_Regime, DO_Transaction,DO_Tarif  ) VALUES ( 
    0,1,'01076617A','20090716 17:50','01076617',1,'AUCHAN6',0,0,'','411000','AUCHANP',
    14, 0, 1, 1,0,1, 0,1,1,0,1,2, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0, 0, '' , 21, 11,5 )
    Bien sur, le depot No 14 existe bien dans le fichier depot.

    -------- l'erreur --------
    Description = L'instruction UPDATE est en conflit avec la contrainte FOREIGN KEY 'FKA_F_DOCENTETE_DE_No'.
    Le conflit s'est produit dans la base de données 'CDC', table 'dbo.F_DEPOT', column 'DE_No'.
    Source = Microsoft OLE DB Provider for SQL Server
    SQL State = 23000
    Error Number = -2147217873
    Native Error Number = 547


    Description = L'instruction a été arrêtée.
    Source = Microsoft OLE DB Provider for SQL Server
    SQL State = 01000
    Error Number = -2147217873
    Native Error Number = 3621

    - Que s'est-il passé ?
    Erreur de l'accès OLE DB.
    Numéro d'erreur = 170129

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/05/2011, 14h51
  2. Erreur ORA-21000 en PL/SQL pour un trigger
    Par keuhlu dans le forum PL/SQL
    Réponses: 3
    Dernier message: 12/03/2006, 08h47
  3. [MySQL] Erreur sql pour inserer des checkbox
    Par digger dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/11/2005, 11h06
  4. [CE10 Pro] Erreur Connexion SQL pour etats publiés
    Par L.nico dans le forum Connectivité
    Réponses: 1
    Dernier message: 09/12/2004, 17h16
  5. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/11/2003, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo