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 :

Probleme de code dans recordset


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Par défaut Probleme de code dans recordset
    bonsoir à tous,

    sur mon appli j'ai placé un code afin de filtrer les postes pouvant accéder à la base de données.
    J'ai une dizaine de postes sensés pouvoir accéder, sur 7 d'entre eux le code fonctionne très bien mais malheureusement sur 3 autres ça "coince" et je n'arrive pas à trouver pourquoi.
    J'ai vérifié les références vba elles sont identiques. J'ai épuré le code au maximum afin de limiter les sources d'erreurs.
    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
     
    Dim oDb As DAO.Database
    Dim rst As DAO.Recordset
    Dim Sql As String
     
    Set oDb = CurrentDb
    MsgBox "1"
    Sql = "SELECT * FROM Machines WHERE Machine = Environ(""computername"") "
    MsgBox "2"
    Set rst = oDb.OpenRecordset(Sql, dbOpenSnapshot)
    MsgBox "3"
    If rst.EOF Then
    MsgBox "4"
    MsgBox "VOTRE MACHINE " & Environ("computername") & Chr(13) & Chr(13) & "N'EST PAS AUTORISEE A ACCEDER A CETTE APPLICATION", , "AVERTISSEMENT"
    Sql = "INSERT INTO JournalIntrusions ( DateHeure, Machine) SELECT Now() AS Expr1, Environ(""computername"") AS  Expr2;"
    DoCmd.RunSQL Sql
    MsgBox "5"
    Else
    Sql = "INSERT INTO JournalAcces ( DateHeure, Machine) SELECT Now() AS Expr1, Environ(""computername"") AS  Expr2;"
    DoCmd.RunSQL Sql
    MsgBox "6"
    J'ai placé des msgbox pour voir jusqu'ou ça fonctionne et ça plante à la 2eme msgbox.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je ne comprends pas ta chaine SQL, elle ne devrait pas marcher du tout.*

    J'écrirais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql = "SELECT * FROM Machines WHERE Machine ='" & Environ("computername") & "'"
    De même pour la suite.

    De plus, je ne vois pas l'utilité d'un recordset dans ton cas, mais une fonction de domaine (DLookup) serait plus appropriée ici pour une seule valeur (pour les fonctions de domaines il y a un tuto, voir mes tutos).

    De plus pense à indenter ton texte.

    Philippe
    Dernière modification par Invité ; 18/11/2011 à 20h20.

  3. #3
    Membre éclairé Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Par défaut
    bonsoir Philippe

    effectivement au depart la requete est ecrite de façon académique comme tu l'as écrite, néanmoins le problème était identique, disons que j'ai voulu tester....

    De même pour le recordset, javais un code sous le coude, je l'ai adapté pour le fun, pour comprendre comment ça marchait, je fonctionne comme ça....

    Alors puisque tu en parles, je vais tester avec un DLookup auquel je n'avais pas pensé.

    Il n'en reste pas moins que j'aimerais bien comprendre

  4. #4
    Membre éclairé Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Par défaut
    re....

    bon ben voilà, je gère ça avec un Dlookup comme tu le suggérais et ça marche. (à tester au bureau sur les postes posant problème)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim OrdiLocal As String
     
    OrdiLocal = Nz(DLookup("Machine", "Machines", "Machine = Environ(""computername"") "), 0)
     
    If OrdiLocal <> Environ("computername") Then
    MsgBox "VOTRE MACHINE " & Environ("computername") & Chr(13) & Chr(13) & "N'EST PAS AUTORISEE A ACCEDER A CETTE APPLICATION", , "AVERTISSEMENT"
    Sql = "INSERT INTO JournalIntrusions ( DateHeure, Machine) SELECT Now() AS Expr1, Environ(""computername"") AS  Expr2;"
    DoCmd.RunSQL Sql
    Else
    Sql = "INSERT INTO JournalAcces ( DateHeure, Machine) SELECT Now() AS Expr1, Environ(""computername"") AS  Expr2;"
    DoCmd.RunSQL Sql
    End If
    Mais comme je le disais précédemment, j'aimerais bien savoir d'où ça vient ce dysfonctionnement partiel, si tu as une idée elle sera la bienvenue.

  5. #5
    Membre éclairé Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Par défaut Environ("computer") qui pose probleme
    je crois que j'ai cerné le problème, en fait les 3 ou 4 PC concernés buttent sur la variable d'environnement (je crois que c'est comme ça que ça s'appelle )

    Environ("computer")

    Ils ne veulent absolument pas la reconnaitre que ce soit par exemple pour donner la valeur à une variable , style : OrdiLocal = Environ("computer")
    Ou que ce soit au sein d'une requete en tant que critere avec cette synthaxe Environ(""computer"").

    Quelqu'un saurait-il me dire ce que je dois modifier ou ajouter sur les postes concernés pour franchir cet écueil ?

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 619
    Billets dans le blog
    67
    Par défaut
    Salut,

    Tu as testé sur ces 3 postes, dans la fenêtre d'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? Environ("computername")
    Et verifié ce qu'elle te renvoie et si ça correspond au nom de machine sauvegardé dans ta table ?

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de code dans NotPad
    Par JCMANSION dans le forum Android
    Réponses: 16
    Dernier message: 01/12/2010, 11h30
  2. probleme selection max dans recordset
    Par marcuscircus dans le forum VBA Access
    Réponses: 8
    Dernier message: 04/08/2008, 17h10
  3. Probleme bouton flash dans un code javascript
    Par caroen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/11/2006, 12h46
  4. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 09h33
  5. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 20
    Dernier message: 12/01/2006, 13h41

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