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 :

access form et procédure stoquée sqlserver paramétrée comme recordset source


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 12
    Par défaut access form et procédure stoquée sqlserver paramétrée comme recordset source
    BOnjour j'essaie d'appeler une procédure stoquée sur un server sql server pour affecter le recordset à un formulaire mais cela ne marche pas
    j'appelle le code sur l'évenement "FORMLOAD"
    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
    16
    17
    18
    19
    20
    21
     
    'open connection
    CONNECT = "Driver={ODBC Driver 13 for SQL Server};Server=tcp:xxx.database.windows.net,1433;Database=xxx;Uid=xxx;Pwd=xxx;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
    oCx.ConnectionString = CONNECT
    oCx.Open
     
    Set oCmd = New ADODB.Command
    With oCmd
        .ActiveConnection = oCx
        .CommandType = adCmdStoredProc
        .CommandText = "dbo.PS_TIERS_DOSSIER"
        .Parameters("@DS_NID").Value = var_session_dossier
         Set oRst = oCmd.Execute
            If oRst.EOF = False Then                
                    Do While Not orst.EOF
                       Debug.Print oRst![TI_NID]
                       oRst.MoveNext
                    Loop
             end if
    End With
    set Forms("FL_AF_TI001").Form.Recordset = oRst
    je récupére bien le bon d'enregistrement (ok en débug.print) et donc la requête fonctionne mais l'affection au formulaire plante
    "l'objet entre n'est une propriété recordset valide"
    Et là je seche, et j'en appelle à votre expertise
    Merci d'avance

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 137
    Par défaut
    Bonjour,

    Je ne pense pas qu'une commande soit l'objet idoine...
    Voici la syntaxe que j'utilise. Le résultat est en lecture seule, si qqn a mieux je suis preneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim reca As ADODB.Recordset, Sr as string
     
    Sr = "SELECT ..."
    Set reca = New ADODB.Recordset
    reca.Open Sr, cnx, adOpenStatic, adLockReadOnly 'coté serveur, lecture seule
    Set Me.Recordset = reca 'ATTENTION cette méthode ne se met pas à jour par requery :(
    Set reca = Nothing
    NB : ma connexion (cnx) est ouverte une fois pour toute en début de programme

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 070
    Par défaut
    Bonjour,

    Tu es visiblement en ADO.
    Nous avons les conditions préalables remplies ? (aide MSDN) :

    A form must meet two general requirements for the form to be updatable when it is bound to an ADO recordset. The general requirements are:
    The underlying ADO recordset must be updatable via ADO.
    The recordset must contain one or more fields that are uniquely indexed, such as a table's primary key.
    Alors, sur l'evet Form_open, ça doit marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    'Set the form's Recordset property to the ADO recordset 
     Set Me.Recordset = rs 
     Set rs = Nothing 
     Set cn = Nothing
    CDLT

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 12
    Par défaut
    bonsoir et merci pour vos contributions
    cela fonctionne en ajoutant
    oCx.CursorLocation = adUseClient
    avant l'ouverture du recordset
    j'ai pu affecter le re corset au formulaire

    par contre les tris et filtres ne fonctionnent plus dans le form
    "Impossible d initialiser le fournisseur de données"

    et lecture seule
    J'ai essayé en ajoutant cela mais pas mieux:
    oCx.Mode = adModeReadWrite

    si quelqu 'un a une idée?

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 137
    Par défaut
    Citation Envoyé par MisterBI Voir le message
    par contre les tris et filtres ne fonctionnent plus dans le form
    Pour cela je modifie le contenu de Sr et régénère le recordsource. En pratique l'affectation du recordset est dans une procédure paramétrée, appelée à l'ouverture et chaque fois que nécessaire.

    Citation Envoyé par MisterBI Voir le message
    et lecture seule
    J'ai essayé les différents paramétrages du curseur sans succès. L'écriture me semble compromise si la source est une procédure et non une simple table, par contre cela marche bien avec des tables liées.

Discussions similaires

  1. [Free Pascal] Appel d'une procédure ayant un fichier comme paramètre
    Par antezi dans le forum Free Pascal
    Réponses: 2
    Dernier message: 04/05/2013, 16h37
  2. Réponses: 11
    Dernier message: 27/07/2012, 09h37
  3. Réponses: 2
    Dernier message: 12/06/2009, 17h56
  4. Réponses: 2
    Dernier message: 29/06/2006, 01h36

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