Les Allergies
Alimentaires
Posez votre question Signaler

[Access] Ecrire dans une table SAGE par ODBC

frugierpat 4Messages postés 8 septembre 2005Date d'inscription - Dernière réponse le 16 sept. 2010 à 16:41
Bonjour,

je suis novice dans l'utilisation d'Access.
Je dois ecrire des données d'un formulaire Access dans une table SAGE ligne 100 liée par ODBC.

Je souhaite ecrire des données dans la table DOC_ENTETE.
Je ne sais pas du tout comment faire.

Merci de m'éclairer.

Peut-on utiliser des recordset? DAO?
Lire la suite 

[Access] Ecrire dans une table SAGE par ODBC »

78 réponses
Réponse
+1
moins plus
Ton message ne me rassure pas...

Et un driver ODBC de ligne 500 pourrait-il permettre un acces en ecriture?

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Salut !

Qu'est ce que c'est comme ligne 100 ?

SQL ?

Propriétaire ?

Parce qu'une 100 "proprio" n'a pas d'acces en écriture via leur driver odbc :o((
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

il s'agit d'une base proprio mais je sais qu'on peut ecrire dedans. Notre prestataire informatique nous proposait une solution (trop onereuse). C possible mais je ne sais justement pas comment.

Merci
frugierpat
Ajouter un commentaire
Réponse
+0
moins plus
Hello !

Bein en fait, ce qui n'est pas possible c'est de le faire avec le driver ODBC vendu par sage au client final...
Peut être que les distributeurs, eux, on des outils plus puissant ?!?

Amicalement,
Ajouter un commentaire
Réponse
+0
moins plus
Salut !!

Bein ex'cuz de ne pas de rassurer, mais ... non :o((

Le driver de la ligne 500 est également un driver en lecture seule !

Pas de moyen de remplacer / mettre à jour les données !!

Les dernières version (100, 1000 ...) sont des versions "Sql Serveur" et là (presque) tout est permis...

Quel est ton projet ? y'a peut être une autre piste ...

Amicalement,
frugierpat- 14 sept. 2005 à 15:06
Salut,

J'ai trouve une solution, je ne sais pas si c tres propre sachant que je ne suis pas programmeur de formation :

Dim Connection As Connection
Dim wrkODBC As Workspace
Set wrkODBC = CreateWorkspace("Name", "User", "Password", dbUseODBC)

Set Connection = wrkODBC.OpenConnection("ODBC;DATABASE=name;UID=User;PWD=Password;DSN=Test Connection")
Set rs2 = Connection.OpenRecordset("UPDATE F_DOCENTETE SET DO_COORD04 = '" & Left(TxtRecepisse.Value, 8) & "' WHERE DO_TYPE = 3 and DO_PIECE = '" & Left(TxtBLencours.Value, 8) & "'", dbOpenDynaset)
Do While rs2.StillExecuting
Debug.Print " [en cours d'exécution...]"
Loop

Connection.Close


Meme avec la piece ouverte dans SAGE, je n'ai pas de conflit. Il ne s'agit que d'une ecriture dans des champs libres.

Je teste et reteste mais ca fonctionne pour l'instant.

Amicalement,

Patrick
Ajouter un commentaire
Réponse
+0
moins plus
Salut Frugierpat,

Pour écrire dans les tables de la base de données cBase, donc dite proriétaire, il est indispensable d'utiliser le driver Odbc de Sage.

Ce driver spécifique permet de gérer automatiquement les conflits d'accès simultanés (lock, unlock sur les records et les fichiers) et prend à sa charge les liens entre les tables pour assurer la cohérence des données.

Par exemple, lors de la création d'un mouvement dans F_DOCENTETE et F_DOCLIGNE, le driver fait automatiquement la gestion des stocks qui est particulièrement compliqué dans la ligne 100.

Même sous SQL, alors que l'on pourrait écrire directement dans la base, il est très vivement recommandé d'utiliser ce driver Odbc.

Pour exemple, j'ai réalisé une interface auto qui intègre dans la gescom des commandes reçues au fil de l'eau par un système spécifique pharma.
francois - 9 oct. 2005 à 10:34
j'écris aussi une appli qui ecrit dans la gescom 100 sql v12
pas de problème de code, mais impossible de faire travailler deux postes en même temps sur la meme table sage (docligne) meme en simple lecture avec le drivers odbc.
une idée ?

merci de me répondre par mail

a bientot
paty- 31 juil. 2009 à 09:51
Bonjour PPA !!

Bonjour Forum !


Je suis dans la même difficulté, je travaille avec le Cbase et je voudrai etraire des données de SAGE pour les inserer dans une BD montée sous MySQL (vice versa)

Comme vous le savez cBASE est propriétaire par conséquent j'ai besoin d'un ODBC pour pouvoir manipuler les difféentes tables de SAGE

Merci de me renseigner pour télécharger un odbc compatible à SAGE 100 (version 15)

James .........
ppa- 1 août 2009 à 17:13
Bonjour Paty

Tu as parfaitement raison dans le fait que Sage en base propriétaire nécessite un driver ODBC pour accéder aux données en lecture comme en écriture.

Le driver ODBC de Sage ne se contente pas de faire une interface d'accès, mais il assure également des contrôles de cohérence indispensables à l'intégrité de la base de données Cbase. Par conséquent, le driver ODBC n'est pas en téléchargement libre comme pourrait l'être un MySQL puisqu'il intègre des règles métiers spécifiques aux applications développées par Sage.

Le driver ODBC Sage L100 (compatible aussi L30) est donc commercialisé par les revendeurs agréés Sage au prix public de 300 €HT, prix qui n'a pas bougé depuis plusieurs années malgré l'enrichissement des règles métier.

J'espère avoir apporté une réponse à ta demande.

Cordialement,

Phil
Ajouter un commentaire
Réponse
+0
moins plus
je suis curieux de savoir comment vous vous connectez à la BD de Sage?
j'essaie d'écrire dans SAGE comptabilité 100. je dispose du pilote ODBC fournit par SAGE.
J'arrive à visualiser les tables mais lors de l'importation un message d'erreur m'informe qu'il y a un problème d'argument (Sur Access)(un autre message sur windev9).
Comment réussissez-vous?
arasa007ppa - 11 août 2009 à 11:24
Bonjour,

J'utilise la Compta 100 v12.02 et l'ODBC de Sage, je désire récupérer (de joindre) les écritures analytiques relatives à une écriture générale. Dans quelle table, et quel est le champ de jointure entre une écriture générale (F_ECRITUREC) et les écritures analytiques (F_ECRITUREA ou autre ) associées.

Merci d'avance pour vos réponses et vos conseils.

arasa
ppa- 3 nov. 2009 à 10:40
Bonjour arasa007,

Pour qu'une écriture soit ventilée en analytique, il faut 2 conditions :
-> le compte général est ventilable
-> le journal est ventilable.

Une écriture générale est identifiée par un numéro de pièce (F_ECRITUREC.EC_Piece) et chaque ligne de cette écriture possède un numéro interne unique (F_ECRITUREC.EC_No).

La ventilation analytique se fera pour chaque ligne répondant aux 2 critères cités au dessus.
Le point commun est donc F_ECRITUREC.EC_No = F_ECRITUREA.EC_No.

Le dossier comptable peut comporter plusieurs axes analytiques.
Il faut donc préciser l'axe sur lequel on effectue la ventilation (F_ECRITUREA.N_Analytique).

Le montant peut être éclaté entre une et plusieurs sections analytiques du même axe analytique.
Cette ventilation comportera alors plusieurs lignes dans la table F_ECRITUREC.
Le numéro de ligne (F_ECRITUREA.EA_Ligne) permettra de différencier les éléments de la même ventilation pour cet axe.
Il faudra indiquer la section dans (F_ECRITUREA.A_Num).
Le montant associé au compte général est aussi mémorisé dans F_ECRITUREA.EA_MONTANT.
Attention, le montant est non signé et non affecté d'un sens.

Le critère de ventilation en mode automatique peut être lié à une notion de "quantité". C'est une notion comptable qui peut être assimilée à une unité d'oeuvre.
Cette quantité est stockable dans (F_ECRITUREA.EA_Quantite).

Gardons à l'esprit que :
-> une ventilation analytique comporte une ou plusieurs ligne,
-> la somme des montants ventilés doit être égale au montant du compte général,

Un lien entre les tables F_ECRITUREC et F_ECRITUREA retournera, pour chaque ligne d'écriture générale, 0 ou plusieurs lignes analytiques.

Voici de quoi apporter des éléments de réflexion.

Phil


ppaarasa007 - 3 nov. 2009 à 10:40
Bonjour arasa007,

Pour qu'une écriture soit ventilée en analytique, il faut 2 conditions :
-> le compte général est ventilable
-> le journal est ventilable.

Une écriture générale est identifiée par un numéro de pièce (F_ECRITUREC.EC_Piece) et chaque ligne de cette écriture possède un numéro interne unique (F_ECRITUREC.EC_No).

La ventilation analytique se fera pour chaque ligne répondant aux 2 critères cités au dessus.
Le point commun est donc F_ECRITUREC.EC_No = F_ECRITUREA.EC_No.

Le dossier comptable peut comporter plusieurs axes analytiques.
Il faut donc préciser l'axe sur lequel on effectue la ventilation (F_ECRITUREA.N_Analytique).

Le montant peut être éclaté entre une et plusieurs sections analytiques du même axe analytique.
Cette ventilation comportera alors plusieurs lignes dans la table F_ECRITUREC.
Le numéro de ligne (F_ECRITUREA.EA_Ligne) permettra de différencier les éléments de la même ventilation pour cet axe.
Il faudra indiquer la section dans (F_ECRITUREA.A_Num).
Le montant associé au compte général est aussi mémorisé dans F_ECRITUREA.EA_MONTANT.
Attention, le montant est non signé et non affecté d'un sens.

Le critère de ventilation en mode automatique peut être lié à une notion de "quantité". C'est une notion comptable qui peut être assimilée à une unité d'oeuvre.
Cette quantité est stockable dans (F_ECRITUREA.EA_Quantite).

Gardons à l'esprit que :
-> une ventilation analytique comporte une ou plusieurs ligne,
-> la somme des montants ventilés doit être égale au montant du compte général,

Un lien entre les tables F_ECRITUREC et F_ECRITUREA retournera, pour chaque ligne d'écriture générale, 0 ou plusieurs lignes analytiques.

Voici de quoi apporter des éléments de réflexion.

Phil


Ajouter un commentaire
Réponse
+0
moins plus
salut a tous
bon j'ai plusieurs soucis avec l'asp et l'odbc de sage
d'abord j'ai un message 'mauvaise version de fichier"
je suis en 12.02 pour l'odbc et j'ai des bases en verson 12 et en version 13
faut t'il que je fasse tourner l'odbc sur la machine ou se trouve le serveur sage ou bien puis je ouvrir mes bases sur une autre machine (le temps de faire mon programme qui va bien)
apres j'ai des problemes d'instruction qui ne passe pas en asp
ex: Dim Connection As Connection
ou bien "Set Connection = wrkODBC.OpenConnection"
alors peut etre qu'il me manque un fichier dans le programme pour definir mes dll du style <!--#include virtual="adovbs.inc"-->
donc le programme qui se trouve un peu plus haut de tourne pas chez moi
au secours !!!!!
ppa- 9 mars 2006 à 09:55
Slt Fred,

Je peux te répondre sur Sage mais pas sur asp.

1 - Le driver ODBC doit avoir le niveau de la base que tu attaques. Attention, tu ne peux pas installer des drivers ODBC Sage simultanément en 2 versions différentes. Ton driver doit être installé sur la machine qui exécute l'application.

2 - Le serveur Sage sert à assurer l'accès concurentiel des utilisateurs à la base de données (accès ODBC compris). Si tu ne passes pas par le client/serveur Sage, tu ouvriras les bases en exclusif et tu paralysera l'exploitation. Une solution élégante serait de remonter une copie de tes bases sur le poste de dev et là, tu peux t'affranchir du serveur Sage.

Bon courage, A+

Phil
Ajouter un commentaire
Réponse
+0
moins plus
quelqu'un connaitrait le nom de la table où est stocker toute les informaions sur un client?
unakis77 - 15 févr. 2007 à 16:21
moi je cherche cette dll. Peux tu me l'envoyer à cet email:
adrian.alfan@caramail.com

merci
dans51Marco - 12 juin 2008 à 18:32
Bonjour,
J'ai le même problème de DLL MSJET40 en version 4.0.6xxx
Peux tu me l'envoyer ?
Merci
Marcpandarouge - 9 févr. 2007 à 14:26
Bonjour,

J’ai un petit souci avec la GESCOM de sage en liaison avec ACCESS via le driver ODBC.

Le problème vient de la zone AR_REFCOMPOSE du fichier F_DOCLIGNE. Cette zone signale une erreur dès lors que vous cherchez à modifier l’enregistrement. Elle intervient dans la fabrication d’un article à partir de plusieurs et identifie les articles origines. Dans notre cas nous utilisons la fabrication pour améliorer les qualités du produit, nous ne créons pas d’article composé. Sauf qu’à la saisie sous sage, la zone est renseignée par le logiciel et la référence inscrite correspond à la référence de l’article. Jusque là pas de souci, sauf que si vous cherchez à modifier l’enregistrement il cherche la correspondance article composé, il ne la trouve pas et indique une erreur et empêche toute modification.Impossible d’agir sur le fichier F_docligne en modification.

La solution copier les lignes dans un fichier temp, supprimer ces lignes dans f_docligne et les recopier à partir du fichier temp en renseignant AR_REFCOMPOSE à null. Et cela marche. Ce qui démontre une incohérence dans la GESCOM sage.

Sauf que si vous avez fait des rachats, il a généré des sous lots virtuels (fichier LOTSERIE dlnoin-et dlnoout) et qu’en recopiant il n’identifie pas clairement le sous lot virtuel ce qui entraîne des bugs .

Pouvez vous me renseigner ?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Je possède une version sage Ligne 100 avec des drivers ODBC. J'arrive parfaitement à atteindre les tables du logiciel de Gestion Commerciale, cependant lorsque j'essaye d'ateindre les table pour le logiciel de comptabilité, je n'arrive malheureusement pas à les ouvrir, j'ai un message d'erreur qui m'affiche (Argument non valide) pour n'importe qu'elle table de la Comptabilité.

Pourriez-vous m'aider à ce sujet ?

Merci d'avance a tous
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour à tous
j'utilise la version 14.04 de sage et le driver Odbc qui va avec.
J'ai un petit souci avec ma requête sql. J'essai de transférer des données de Excel vers Sage mais cela ne se passe pas correctement.
il me renvoi le message d'erreur suivant:
[Simba][simba ODBC Driver]Update F_ARTICLE Set AR_CODEEDIED_CODE1 = 3270190218289
AR_POIDSNET<<???>>=100 Where AR_REF='BRAAR10'

Avez vous une idée?

Merci d'avance
Marc
ppa- 1 août 2007 à 12:40
bonjour marcanto65,

Ta requête me semblerai correcte si tu ajoutais une " , " avant AR_POIDSNET.

Le signe <<???>> indique l'élément que la requête ne sait pas interpréter, et dans ce cas, c'est la séparation avec 3270190218289.

Par ailleurs, quel est le type de AR_CODEEDIED_CODE1 ? Ne serait-ca pas de l'alpha ? dans ce cas, il mettre ta valeur entre " ' " (simple cote).

Bon courage,

A+
Phil
marcanto65 - 22 août 2007 à 09:19
Bonjour Phil

Je rentre de vacances, merci pour ta réponse, je viens d'essayer et cela fonctionne

A+

Marcanto
Ajouter un commentaire
Réponse
+0
moins plus
c'est bon tu a deja 48 com arrete de nos casser les pieds stp merci?
ppa- 23 août 2007 à 00:17
Slt mika903,

A qui tu t'en prends dans ton post ?

Les utilisateurs qui rencontrent des problèmes ne me cassent pas le pieds, perso.
Tout le monde ne peut pas être un cador dans tous les domaines.

Bon, d'un autre côté, je suis pas du genre à envoyer 15 posts en 2 jours non plus.

"Tolérance" pourrait être une vertue nécessaire sur un forum d'entraide.

Que la journée te soit agréable et profitable pour ta sérénité ...

A +

Phil
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Excuser mon mauvais français.
Nous developpe une software qui access une database Sage Ligne 100 gestion commerciale pour le driver ODBC de Sage.
Au moment ce ne pas possible de connecter quand le Sage gestion commercial est ouvrir a la meme temps.
Le access avec le driver ODBC marche bon quand le gestion commercial est fermer.
Ce possible ouvrire le database non-exclusivement ?
Nous ne voulons pas ecrir seulement recherche.

Merci beaucoup pour votre aide

Wolfgang
ppa- 24 août 2007 à 12:00
Good morning wolf,
Bonjour wolf,

The software Sage L100 acces to the database directly. So, an handle lock the tables exclusively.
To share the access to the database, you need to use a client/server part called "Server NT Sage". It works with NT, 2K, 2K3. Take care with Vista. The first part (and the second one) are installed on the server, the second part is on each user workstation. The protocol used to communicate is TCP/IP.

The ODBC driver uses the access through the C/S mode and you can share the database with the Sage application (on the same workstation or an other one). Of course, you need to have a multiusers licence for the "gestion commerciale". You can obtain the Sage C/S by a Sage resaler . The cost is about 300 €.

----------

Le logiciel Sage L100 accède à la base de données directement. Un verrou bloque les tables de façon exclusive.
Pour partager l'accès à la base de données, tu dois utiliser un module "client serveur" nommé "Serveur Sage pour NT". cela fonctionne également avec NT, 2000, 2003. Attention avec Vista. La première partie (et la seconde) sont installées sur le serveur, la seconde sur chaque poste utilisateur. Le protocol utilisé est TCP/IP.

Le driver ODBC accède en C/S et tu peux partager ta base de données avec l'appli Sage (sur le même poste ou sur un autre). Bien sûr, tu dois disposer d'une licence multiutilisateurs pour ta gestion commerciale. Tu peux obtenir ce Serveur Sage auprès d'un revendeur au prix d'environ 300 €.

You can email me if you need any further information.
Tu peux m'envoyer un mail si tu as besoin d'autres informations.

Good luck, wolf,
bonne chance,

Phil
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Mozart,

As-tu d'installer sur ton poste le serveur SAGE permettant l'ouveture simultanée d'un même fichier de gestion commrciale ? (Peux tu ouvrir plusieurs gestions commerciale en même temps ?)

David
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Je suis en train de créer une requete qui récuperer le prix d'achat d'un article pour le rajouter dans le cout standard
par defaut la table F_ARTPRIX est vide, du coup je dois faire un insert des valeurs avec le AR_REF correspondant (je select en 1er les valeurs dans la table F_ARTICLE, puis dans ma boucle while je fais l'insert des valeurs retournées si j'ai pas déjà un enregistrement avec la meme ref)

bref je me retrouve avec un message d'erreur que voici :
erreur d'exécution '-2147217913 (80040e07)':
[Simba][Simba ODBC Driver]Error in assignment

et lors du debuggage il pointe sur mon cnx.Execute Sql

je crise parce que je ne vois pas du tout comment résoudre cette histoire
merci à tous ceux qui sauraient y répondre (je sais c'est pas évident)
au besoin je ferais un copier/coller du code mais je crois pas que ce soit nécessaire

merci !!!
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Mike,

Il semble que ton driver ODBC te reproche une erreur du genre à tenter d'affecter une valeur du mauvais type au champ de la table.

Fais donc ton copier/coller de ton code SQL que tu soumet au driver, que l'on jette un oeil sur la syntaxe.

A+

Phil
georges - 29 nov. 2009 à 18:51
bonjour,

J'ai lu les diverses réponses que tu donnes sur ce forum et je pense que tu pourrai entrès peu de temps me faire gagner beaucoup de temps.
J'ai personnellement quelque menu problème en ajout sur SAGE compta et gescom.
Si tu est toujours dans la partie, j'aimerai pouvoir te contacter par tel.
Sincèrement.
ppa- 29 nov. 2009 à 22:59
Bonsoir Georges,

Donnes-moi une adresse en "mail privé" sur ce site et hors forum. Donnes-moi qqes explications.
En retour, je t'enverrai le moyen de me contacter.

@+

Phil
Ajouter un commentaire
Réponse
+0
moins plus
voilà le magot ;) merci d'y jeter un oeil ! :)

Sub teste()

'Déclaration des variables
Dim cnx As ADODB.Connection
Dim rst As ADODB.Recordset
Dim verif As ADODB.Recordset

'Instanciation des variables
Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset
Set verif = New ADODB.Recordset

'Connexion à la base de données
cnx.ConnectionString = "DSN=test;UID=plop;PWD=plop;"
cnx.Open

'Exécution de la requête
rst.Open "SELECT AR_REF, AR_PRIXACH FROM F_ARTICLE", cnx
rst.MoveFirst

While Not (rst.EOF)

Dim Sql As String
Dim value As Variant
Dim ref As String
value = rst("AR_PRIXACH")
ref = rst("AR_REF")


'Exécution de la requête
verif.Open "SELECT AR_REF FROM F_ARTPRIX WHERE AR_REF='" & ref & "'", cnx

Dim nbRst As Variant
nbRst = verif.CacheSize


If nbRst <> 0 Then

Sql = "INSERT INTO F_ARTPRIX (AR_COUTSTD, AR_REF)"
Sql = Sql & " VALUES "
Sql = Sql & "('" & value & "', "
Sql = Sql & "'" & ref & "')"

'On Error Resume Next
' debugger dit que erreur se trouve là ??? est ce mon insert ou les valeurs de mon insert ?
cnx.Execute Sql

Else
MsgBox ref & " already entered "
End If

rst.MoveNext
Wend
End Sub
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Sql = Sql & "('" & value & "', "

A priori, le &value& est entre simples cotes ce qui implique une valeur de type "caractère", alors que AR_COUTSTD est de type "Numérique"

Tente le coup et donnes-nous le résultat de ta correction.


A+

phil
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,


meme si je déclare value en tant que String ça ne fonctionne pas
il faudrait peut être forcer la conversion de rst("AR_PRIXACH") en format String
existe t'il une fonction qui le permette ?
à moins que la base sage 100 n'accepte que certains types particuliers ?

Thx
Ajouter un commentaire
Réponse
+0
moins plus
et comment acceder au table des droits pour en faire une edition
de controle

puisque on as pas acces a celle ci....
Ajouter un commentaire
Ce document intitulé « [Access] Ecrire dans une table SAGE par ODBC » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
[Access] Ecrire dans une table SAGE par ODBC - page 2