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

  1. #1
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    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
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    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.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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 à l'essai
    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
    Points : 16
    Points
    16
    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

  7. #7
    Membre à l'essai
    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
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Suite et fin de la Saga!
    Pour réaliser mon appli, j'ai du debrayer les contraines des liens entre F_DEPOT et F_DOCENTETE et entre F_DEPOT et F_DOCLIGNE alors que la description de ces cardinalités tel que je les importe dans mon analyse ne le justifiaient pas!
    Mais l'important c'est que ça marche, et mes BL sont bien créés dans Sage!
    Par contre j'abandonne de chercher pourquoi ça fonctionne avec Windows Server2003 + SQL2000 et que ça ne fonctionne pas avec Windows2008 + SQL2005!

    Gérard.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Ok, j'avais zappé le fait que tu sois sous SQL2005.

    Effectivement, cela ne marche pas aussi simplement sous SQL2005. Il y a plein de petites astuces, surtout à l'installation de SQLServer pour pouvoir faire fonctionner la Ligne 100 sous SQLServer 2005 ou 2008.

    Je viens justement de suivre une formation chez SAGE ce Vendredi sur la migration sous SQLServer 2008 car la prochaine version (16) ne sera officiellement compatible qu'avec SQLServer 2008.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  9. #9
    Membre à l'essai
    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
    Points : 16
    Points
    16
    Par défaut
    Ce serai trés sympa de ta part, si tu pouvais me faire profiter de ces connaissances, car j'aimerais bien avoir une version de test qui fonctionne sur mon serveur de développement, car sinon, chez le client, je dois faire mes test la nuit et les WE.

    Merci,

+ 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