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

Bases de données Delphi Discussion :

Impossible de dévérrouiler une base access


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Impossible de dévérrouiler une base access
    Bonjour,

    Je développe actuellement une appli qui utilise une base access.

    Malgré la suppression physique de la base *.mdb et un redémarrage du PC, à la première utilisation de cette base (qui a été supprimée), mais que l'appli crée au démarrage si elle est absente, j'obtiens le message : "Impossible de lire l'enregistrement actuellment vérrouillé par un autre utilisateur" et mon appli se bloque !

    Quelqu'un sait-il comment dévérrouiller une base access d'un utilissateur virtuel (Sur mon PC il ne peut y avoir d'autres utilisateurs de cette base qui a été supprimée) ledit utilisateur devant sans doute être conservé dans la base de registre ?

    Ou plus simplement, éviter l'erreur ?

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par colorid Voir le message
    Bonjour,

    Je développe actuellement une appli qui utilise une base access.

    Malgré la suppression physique de la base *.mdb et un redémarrage du PC, à la première utilisation de cette base (qui a été supprimée), mais que l'appli crée au démarrage si elle est absente, j'obtiens le message : "Impossible de lire l'enregistrement actuellment vérrouillé par un autre utilisateur" et mon appli se bloque !

    Quelqu'un sait-il comment dévérrouiller une base access d'un utilissateur virtuel (Sur mon PC il ne peut y avoir d'autres utilisateurs de cette base qui a été supprimée) ledit utilisateur devant sans doute être conservé dans la base de registre ?

    Ou plus simplement, éviter l'erreur ?
    Hmmmm... salut

    Montre ta création dynamique.

    a+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Exemple création 1ere table
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    procedure TFullScreen.TablesCreate;
    var
      req : string;
      PW: Integer;
    begin
      PW:= PeekGraphDLL_PassWordToInteger('admin');
      ADOConnection1.ConnectionString := Format(_ConnString,[_UserName,_PassWord,MDBFile]);
      ADOConnection1.LoginPrompt := False;
      ADOCommand1.Connection := ADOConnection1;
      //************************************************************* table DBUser
      req:= 'CREATE TABLE DBUSER (' +
      ' USER_NO INTEGER NOT NULL DEFAULT 1, '+         // Clé primaire
      ' USER_DBTYPE BYTE NOT NULL DEFAULT '+IntToStr(_BD_LOCALE)+', ' +
      ' USER_PASS INTEGER NOT NULL DEFAULT '+IntToStr(PW)+', ' + // "admin" crypté
      ' USER_RIGHTS INTEGER NOT NULL DEFAULT 2147483647, ' + // all rights
      ' USER_CONVERSION BYTE NOT NULL DEFAULT '+IntToStr(_ADOBE_RGB_1998)+', ' +
      ' USER_ILLUMINANT BYTE NOT NULL DEFAULT '+IntToStr(Cie_Ill_D65)+', ' +
      ' USER_OBSERVER BYTE NOT NULL DEFAULT ' +IntToStr(Cie_Obs1931)+', ' +
      ' USER_NAME VARCHAR(32) NOT NULL DEFAULT "PEEK", ' +
      ' USER_USED BIT DEFAULT -1 '+
      ')';
      ADOCommand1.CommandText := req;
      ADOCommand1.Execute;
      // ==================== Clé primaire
      req := 'ALTER TABLE DBUSER ADD CONSTRAINT PK_OPERATOR PRIMARY KEY (USER_NO);';
      ADOCommand1.CommandText := req;
      ADOCommand1.Execute;
      //===================== Procédure stockée pour ecrire un Utilisatezur
      req:= 'CREATE PROC procUserAddItem(UserNo INTEGER, UserName VARCHAR(32) )'+
      'AS INSERT INTO DBUSER (USER_NO, USER_NAME ) '+
      'Values (UserNo, UserName);';
      ADOCommand1.CommandText := req;
      ADOCommand1.Execute;
    Les autres tables sont créées de même façon

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Avec ta procedure entière on ne sais pas où à réellement lieu tonmessage d'erreur !!! Et puis mettre utiliser le parametre DEFAULT à me souvenir cela n'a aucun effet.
    D'ailleur pourquoi mettre un parametre DEFAULT à 1 sur une clé primaire ????

    Et puis sur quel base access tu travail ? 97, 2000, 2003 ou 2010 peut-être ?

    Ensuite, pourquoi faire un ALTER TABLE juste pour identifier une clé primaire et ne pas le faire avant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    req:= 'CREATE TABLE DBUSER (' +
      ' USER_NO INTEGER NOT NULL UNIQUE PRIMARY KEY, '+   // Clé primaire
      ' USER_DBTYPE BYTE NOT NULL, ' +
      ' USER_PASS INTEGER NOT NULL , ' + // "admin" crypté
      ' USER_RIGHTS INTEGER NOT NULL, ' + // all rights
      ' USER_CONVERSION BYTE NOT NULL, ' +
      ' USER_ILLUMINANT BYTE NOT NULL, ' +
      ' USER_OBSERVER BYTE NOT NULL, ' +
      ' USER_NAME VARCHAR(32) NOT NULL, ' +
      ' USER_USED BIT '+
      ')';
      ADOCommand1.CommandText := req;
      ADOCommand1.Execute;
    Quand penses-tu ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    DBUSER est l'administrateur ce qui justifie la valeur 1, les autre utilisateurs de la base sont OPERATOR et sont administrés par DBUSER. DEFAULT 1 est donc très exeptionnel

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/04/2015, 18h54
  2. [MFC]Impossible d'ouvrir une base access
    Par Sojiro dans le forum MFC
    Réponses: 2
    Dernier message: 13/07/2007, 23h18
  3. Impossible d'ouvrir une base access
    Par bruno77 dans le forum Access
    Réponses: 6
    Dernier message: 09/05/2006, 15h50
  4. Impossible d'ouvrir une base Access depuis Excel
    Par vciofolo dans le forum Access
    Réponses: 8
    Dernier message: 14/12/2005, 12h09
  5. [ODBC] Intranet en PHP : Lister les tables d'une base Access
    Par fblouet dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/10/2003, 14h46

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