[Objet métier 2.0] Infos libre sur une ligne de document.

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

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

[Objet métier 2.0] Infos libre sur une ligne de document.

de ricil78 » Mer 22 Aoû 2007 14:13

Bonjour,

Est ce quelqu'un sait comment faire pour renseigner une infos libre d'une ligne de document.

j'ai bien tenté ça
Ligne.InfoLibre.Item("NumPost") = Article.NumeroDuPoste

mais manque de chance la propriété Ligne.InfoLibre est en lecture seul donc pas d'affectation possible.


Si ça peut aider voici le bout de code en question :
Code: Tout sélectionner


Merci pour votre aide
Ligne = BonDeCommande.FactoryDocumentLigne.Create
Ligne.SetDefaultArticle(BaseCommercial.FactoryArticle.ReadReference(Article._AR_REF), Article._DL_QTE)

'Le problème est ici
Ligne.InfoLibre.Item("NumPost") = Article.NumeroDuPoste

Ligne.Write() 'Ecriture des lignes
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

de ricil78 » Mer 22 Aoû 2007 15:46

C'est bon j'ai trouvé comme un grand

Si ça intéresse quelqu'un

Code: Tout sélectionner
Ligne.Write() 'Ecriture des lignes
Ligne.InfoLibre("NumPost") = Article.NumeroDuPoste
Ligne.Write()


Si j'ai bien compris pour accéder aux informations libres il faut que l'objet en question soit persistant et non en mémoire.
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

de enigmatiqk » Lun 26 Nov 2007 17:42

Bonjour,

j'ai vu que tu a reussi à résoudre ton problème.

J'ai le même problème que toi, mais je n'arrive pas a le résoudre, en effet le code que tu a cité ne marche pas.

en quel language est tu?
moi je suis en access 97

l'initialisation:
Code: Tout sélectionner
Dim four As IBOFournisseur2
    Set four = BaseCpta.FactoryFournisseur.ReadNumero("TEST")


j'ai essayé plusieurs methodes:
Code: Tout sélectionner
.InfoLibre("CFAM")

Code: Tout sélectionner
.InfoLibre(1)


rien ne marche, si je place un espion sur infolibre, il contient toujours 2 valeurs, item1 (variant/int) et item2(variant/string)

je suis perdu ...
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: Mer 7 Nov 2007 15:19

de ricil78 » Mar 27 Nov 2007 10:43

Je suis en VB.NET 2005

Es-tu sure d'être sur le bon objet

Ton info libre est elle bien sur les fournisseurs dans la base ?
Si oui, quel est ton message d'erreur ?
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

de enigmatiqk » Mar 27 Nov 2007 10:53

ricil78 a écrit:Je suis en VB.NET 2005

Es-tu sure d'être sur le bon objet

Ton info libre est elle bien sur les fournisseurs dans la base ?
Si oui, quel est ton message d'erreur ?


effectivement ce n'est pas le cas pour CFAM, j'avais juste rajouté le champ en base.
Cependant j'ai essayé de le rajouter à partir de l'interface Sage, est je me retrouve avec une erreur "impossible d'executer sp_executesql"...

par contre, l'infolibre(1) et (2) existent déjà , si je leurs met une valeurs, il n'y a aucun problèmes, mais au moment de faire le write..ereur, pourtant j'ai essayer de faire comme toi...
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: Mer 7 Nov 2007 15:19

de ricil78 » Mar 27 Nov 2007 10:58

par contre, l'infolibre(1) et (2) existent déjà , si je leurs met une valeurs, il n'y a aucun problèmes, mais au moment de faire le write..ereur, pourtant j'ai essayer de faire comme toi...


A ce moment là c'est quoi ton message d'erreur ?

PS : tu as pas droit à la hotline sage spécialisé objet métier ?
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

de enigmatiqk » Mar 27 Nov 2007 11:58

ricil78 a écrit:
par contre, l'infolibre(1) et (2) existent déjà , si je leurs met une valeurs, il n'y a aucun problèmes, mais au moment de faire le write..ereur, pourtant j'ai essayer de faire comme toi...


A ce moment là c'est quoi ton message d'erreur ?

PS : tu as pas droit à la hotline sage spécialisé objet métier ?


l'erreur exacte:
erreur d'execution -2621 (fffff5c3):
erreur de cohérence


sauf que bon, il n'y a rien sur le champ en question

ma boite n'a pas de partenariat avec Sage, nous travaillons avec un partenaire Sage, qui n'est pas tout le temps disponible.

En attendant, on se débrouille comme on peut :)
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: Mer 7 Nov 2007 15:19

de ricil78 » Mar 27 Nov 2007 12:05

Si tu peux mets un peu plus de code,

histoire que je voie ce que tu fais avec les valeurs et comment tu les traites.
pouvoir t'aider un peu plus car là j'ai pas beaucoup d'information sur ton code pour te donner des pistes
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

de enigmatiqk » Mar 27 Nov 2007 12:22

ricil78 a écrit:Si tu peux mets un peu plus de code,

histoire que je voie ce que tu fais avec les valeurs et comment tu les traites.
pouvoir t'aider un peu plus car là j'ai pas beaucoup d'information sur ton code pour te donner des pistes


fconnexionsage:
Code: Tout sélectionner
        strFile = "c:\PAMSAGE"
        strLoginSage = "<Administrateur>"
        strPasswordSage = ""

        BaseCpta.Name = strFile & ".mae"
        BaseCpta.Loggable.UserName = strLoginSage
        BaseCpta.Loggable.UserPwd = strPasswordSage
        BaseCial.CptaApplication = BaseCpta
        BaseCial.Name = strFile & ".gcm"
        BaseCial.Loggable.UserName = strLoginSage
        BaseCial.Loggable.UserPwd = strPasswordSage
        If Not BaseCial.IsOpen Then
            BaseCial.Open
        End If


fonction:

Code: Tout sélectionner
    fConnexionSage

    Dim four As IBOFournisseur2
   
    Set four = BaseCpta.FactoryFournisseur.ReadNumero("TEST")
   
    With four
        .Write
        .InfoLibre(2) = "test"
        .Write
    End With


j'ai vraiment faire le strict minimum pour mes tests ...
j'ai verifier dans sage entreprise et dans l'espionneur vba, infolibre(2) correspond à un champ string
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: Mer 7 Nov 2007 15:19

de ricil78 » Mar 27 Nov 2007 13:00

Essaye comme ça :

Code: Tout sélectionner
  fConnexionSage

    Dim four As IBOFournisseur2
   
    Set four = BaseCpta.FactoryFournisseur.ReadNumero("TEST")
   
    With four
        .InfoLibre(2) = "test"
        .Write
    End With


Ce qui change avec ton code :
ton 1er Write pour moi n'est pas utile dans ton cas.

Explication :
Etant donné que tu récupères un enregistrement dans la base la partie .InfoLibre(2) existe déjà dans l'objet que tu répères.

Alors que dans le cas d'une création d'objet les parties infoslibre n'existent pas dans l'objet et donc tu es obligé de faire un write pour créer l'infos libre dans l'objet afin de pouvoir l'utiliser.
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

de enigmatiqk » Mar 27 Nov 2007 13:05

ricil78 a écrit:Essaye comme ça :

Code: Tout sélectionner
  fConnexionSage

    Dim four As IBOFournisseur2
   
    Set four = BaseCpta.FactoryFournisseur.ReadNumero("TEST")
   
    With four
        .InfoLibre(2) = "test"
        .Write
    End With


Ce qui change avec ton code :
ton 1er Write pour moi n'est pas utile dans ton cas.

Explication :
Etant donné que tu récupères un enregistrement dans la base la partie .InfoLibre(2) existe déjà dans l'objet que tu répères.

Alors que dans le cas d'une création d'objet les parties infoslibre n'existent pas dans l'objet et donc tu es obligé de faire un write pour créer l'infos libre dans l'objet afin de pouvoir l'utiliser.


c'était mon code de depart (le 1er write avait été mit car j'était desesperé), on est en cours de migration en 2003, je ferais l'essai en début d'aprem.

merci d'avance, je ferais un +1 apres tests
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: Mer 7 Nov 2007 15:19

de Le_Maraudeur » Mar 1 Juil 2008 11:48

Bonjour,

je rencontre un petit problème urgent sur l'enregistrement d'une information libre à la ligne de document de type Table (liste de valeurs d'info libre).

Comment gère-t-on ce cas de figure (aucun exemple dans la doc, c'est la première fois que j'ai ce cas de figure à gérer).

Si quelqu'un a un exemple de code en .NET, je suis preneur, à défaut, dans n'importe quel langage ça ira.

Merci d'avance
Super Contributeur
Super Contributeur
 
Messages: 129
Inscription: Jeu 12 Juil 2007 10:39


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