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

Requêtes et SQL. Discussion :

Requête SQL Server comme source d'un état


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut Requête SQL Server comme source d'un état
    Bonjour,
    Je sais affecter comme source d'un formulaire une requête qui attaque une base SQL Server dans Access avec :
    Set MyForm.Recordset = rst (ou rst est le recordset sur une requête sur ma base SQL server).
    Cela marche trés bien.
    Je voudrais faire la même chose pour un état.
    J'ai essayé pleins de choses et rien ne marche.

    Merci de vos éclaircissements.

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Si tu es bien dans un mdb ou mde,
    crée une requête 'SQL Direct' et utilise la comme source de l'état.

    Chaîne de connexion ODBC pour la requête :
    ODBC;Driver={SQL Server};Server=NomDuServeur;Database=nombd; Uid=NomUtilisateur;Pwd=MotDePasse;

    La requête sera du style :
    SELECT * FROM NomView

    où NomView est une vue du serveur SQL Serveur.

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut Merci pour cette réponse
    Merci LedZeppII pour ta réponse rapide.
    Je vais préciser le contexte d'utilisation.
    La base utilisée est une base SAGE gestion commerciale.
    La base peut-êtr e une base propriétaire ou sql server.
    Dans les deux cas j'utilise dans mon code vba une connection sur un lien ODBC.
    J'ai pas de pbl. de connection, je ne peux pas utiliser une vue puisque cela n'existe pas pour les bases propriétaires.
    Donc je fais une requête du style "Select * from Nom_Table".

    Voici un exemple de code que j'utilise pour définir la source d'un formulaire et cela marche trés bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
         Dim SQL$
     
        SQL$ = "SELECT * FROM TABLE"
     
     
            Set Me.Recordset = rst
            If Not (rst.EOF) Then
                Me.CHAMP1.ControlSource = "DO_PIECE"
                Me.DO_DATE.ControlSource = "DO_DATE"
                Me.DO_DOMAINE.ControlSource = "DO_DOMAINE"
                Me.DO_TYPE.ControlSource = "DO_TYPE"
                Me.RE_NO.ControlSource = "RE_NO"
                Me.DO_EXPEDIT.ControlSource = "DO_EXPEDIT"
                Me.LI_NO.ControlSource = "LI_NO"
            End If

  4. #4
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut Merci LedZeppII
    Je vais préciser le contexte d'utilisation.
    La base utilisée est une base SAGE gestion commerciale.
    La base peut-être une base propriétaire ou sql server.
    Dans les deux cas j'utilise dans mon code vba une connection sur un lien ODBC.
    J'ai pas de pbl. de connection, je ne peux pas utiliser une vue puisque cela n'existe pas pour les bases propriétaires.
    Donc je fais une requête du style "Select * from Nom_Table".

    Voici un exemple de code que j'utilise pour définir la source d'un formulaire et cela marche trés bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         Dim SQL$, rst as new adodb.recordset
     
        SQL$ = "SELECT DO_PIECE FROM TABLE"
        ' Ici je fais la connection et j'affecte mon recordset que je nomme rst
     
            Set Me.Recordset = rst ' ici j'affecte le résultat à mon formulaire.
                 Me.Texte1.ControlSource = "DO_PIECE"
                ' .... Reste du code
    J'essaye de faire la même chose pour un état.
    Set MyRpt.recordset = rst ' plante
    Donc j'utilise MyRpt.recordsource = rst ' plante
    j'ai aussi essayé myrp.SourceObject = rst ' plante
    Dans tous les cas j'ai l'erreur :
    "Erreur définie par l'application ou par l'objet"

    Si j'utilise la chaine sql comme source de l'état, j'ai la réponse "la table x n'existe pas". Bien sûr il cherche la table dans la base mdb.

    Je suis sur Access 2000.

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Pour les Etats il n'y a pas de membre RecordSet disponible, contrairement aux formulaires.
    On ne peut utiliser que RecordSource qui est de type String.
    On peut lui affecter un nom de table, un nom de requête, ou une instruction SQL SELECT.

    La seule solution que je vois, à par lier les tables par ODBC, est une requête 'SQL Direct'.
    C'est une requête pour laquelle on définit une chaîne de connection ODBC (un peu comme pour la connexion ADODB).
    La requête se définit en créant une nouvelle requête à laquelle on n'ajoute aucun table, puis
    Menu principal->Requête->Spécifique SQL->SQL Direct.
    Là, tu peux reprendre exactement le même SELECT ... FROM ... que tu utilises avec le recordset ADODB.
    Reste à définir dans les propriétés de la requête la bonne chaîne de connexion ODBC.

    Bon courage.

  6. #6
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Ok j'essaye merci !

  7. #7
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Pourquoi ne pas créer un projet adp plutot qu'une base de données mdb ? Les projets ADP sont conçus pour SQL Server

  8. #8
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Merci Tofalu pour ta réponse
    Je ne peux utiliser un projet adp. Les programmes SAGE se déclinent en deux versions, une version propriétaire et une version sql server.
    Je ne sais pas à l'avance dans mon projet de quel type est la base utilisée. Il me faut donc une solution qui fonctionne que les données à attaquer soit au format propriétaire ou sql server.
    Donc pour faire ma connection je n'utilise pas un driver sql mais le driver SAGE gestion commerciale ou compta. Je précise que ce lien odbc est créé par mon prog à la première utilisation.
    S'il n'est pas possible de donner comme source d'un état un recordset vers une ressource externe, je pense que le mieux est de remplir une table temporaire ave le résultat de mon recordset et donner cette table comme source de l'état (j'aime pas trop mais bon...).
    Dans ce cas j'ai un autre pbl. Je peux parcourir le recordset et faire un insert into vers ma table temp. Cela peut être couteux en temps s'il y a beaucoup de lignes retournées par le recordset.
    Donc autre question dans ce cas comment remplir ma table temp avec le résultat du recordset d'un jet (sans parcourir le recordset) ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Par défaut
    pour avoir pas mal bosser à faire des interfaces et des compléménts avec les produits sage (proprio et sql server), il y a des différences de tables (plutot de champ).
    donc fais gaffe, c'est pas dit que tout soit générique.

  10. #10
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Bonjour LostIN
    Quelles différences ?
    J'ai pleins de prog qui tournent sous Access, Excel et Delphi et chez pleins de clients, ils attaquent indifféremment des bases sql ou proprio et parfois sur des traitements trés complexes.

    Les seuls différences sont sur des champs virtuels et certains verrous mais ils ne faut pas les utiliser.
    Si tu lis la doc et notamment structfic.pdf tu verras que les champs et requêtes sont les mêmes dans les deux cas.

  11. #11
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    De toute façon, à priori sur l'évenement open de l'état, tu peux avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Me.Recordset= tonrst

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Par défaut
    si ma mémoire est bonne c'est surtout au niveau des tables de paramètres (ex unité d'acaht, de vente, de stockage)
    ca m'ait arrivé en triturant les lignes et entetes de factures
    en version proprio la requete est différente de sql server car sous sage sql server, les paramètres sont stockées ailleurs et proprement

  13. #13
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Merci a vous tous de vous interresser de mon pbl.

    ben justement non sur un état on ne peut pas utiliser cette syntaxe. Sinon j'aurais pas eu besoin de votre aide.
    A la compilation access affiche le message "Membre de données ou de méthode introuvable"
    Pour ce qui est des tables paramètres c'est possible, jusqu'à présent j'ai jamais eu d'erreurs dans mes requêtes. Mais je retiens l'information si un jour cela m'arrive.

  14. #14
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Et pourquoi pas affecter le SQL qui sert à l'ouverture du recordset à la propriété Recordsource du formulaire ?

  15. #15
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Je ne comprend pas.
    Sur les formulaires je n'ai pas de pbl. La propriété recordset fonctionne trés bien.
    C'est avec les états.
    Si je fais une requete du style comme source de l'état, j'ai une erreur puisque Access cherche une table dans la base en cours et qu'il ne la trouve pas puisque c'est une table externe.

Discussions similaires

  1. Utilisation de SQL-Server comme Windev
    Par willsonlebig dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/06/2011, 11h52
  2. SQL server comme service windows
    Par legide dans le forum Administration
    Réponses: 3
    Dernier message: 17/09/2009, 15h08
  3. [SQL Server 2000] Source ODBC - Droits utilisateurs
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/04/2008, 09h41
  4. auto increment avec sql server comme avec mysql
    Par skystef dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2007, 08h22
  5. Réponses: 7
    Dernier message: 10/01/2007, 18h41

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