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 :

Problème création de tables dans MS 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 Problème création de tables dans MS ACCESS
    Bonjour à tous
    Après avoir créé la BD par le code :
    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
      result:= FileExists(CurDBPath);
      if not result then
      begin
        Screen.Cursor:= crHourGlass;
        chaineCnx :=
        'Provider=Microsoft.Jet.OLEDB.4.0;' +
        'User ID=Admin;' +
        'Data Source=' + CurDBPath + ';' +
        'Mode=Share Deny None;Extended Properties="";' +
        'Jet OLEDB:Engine Type=5;';
        Cat := CreateOleObject('ADOX.Catalog');
        Cat.Create(chaineCnx);
        // Libération
        Cat := Unassigned;
        TablesCreate;
      end;
    je souhaite créer les tables par la fonction TablesCreate :
    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
    // Création des tables
    procedure TBD.TablesCreate;
    var
      req : string;
      PW: Integer;
    begin
      PW:= PassWordToInteger('admin');
      if ADOConnection1.Connected then ADOConnection1.Close;
      ADOConnection1.ConnectionString := Format(_ConnString,[_UserName,_PassWord,CurDBPath]);
      ADOConnection1.LoginPrompt := False;
      ADOConnection1.Connected := True;
      ADOCommand1.Connection := ADOConnection1;
      //************************************************************* table ADMIN
      // Dans cette version l'administrateur est unique
      // 1 ********************************************************** table ADMIN
      req:= 'CREATE TABLE ADMIN (' +
      ' AdNo AUTOINCREMENT, ' +         // Clé primaire autoincrémentée
      ' PRIMARY KEY (AdNo), '+
      ' Pass INTEGER NOT NULL DEFAULT '+IntToStr(PW)+', ' + // "admin" crypté
      ' Rights INTEGER NOT NULL DEFAULT '+IntToStr(DA_All)+', ' + // all rights
      ' UserName VARCHAR(32) NOT NULL, ' +
      ' Used VARCHAR(2) DEFAULT -1 '+
      ')';
      ADOCommand1.CommandText := req;
      ADOCommand1.Execute;
    L'exécutable se plante systématiquement à la ligne 8 en déclenchant une EAccessViolation


    J'ai du sauter un chapitre !!! Lequel ?

  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
    Salut colorid,

    Montre ta chaîne de connection...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(_ConnString,[_UserName,_PassWord,CurDBPath])
    ;

    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ADOConnection1.Connected then ADOConnection1.Close;
    pouquoi ne pas directement fermer ?

    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 Chaîne de connection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      const
      _ConnString =
      'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;' +
      'User ID=%s;Password=%s;Data Source=%s;' +
      'Mode=Share Deny None;Extended Properties="";' +
      'Jet OLEDB:Engine Type=5;';
      _UserName = 'admin';
      _PassWord = '';
    Voici les constantes adressées à Format()

  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
    Re, salut

    Essai de te connecter sans user ni mdp pour voir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      BaseAccess := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'MaBasededonnees.mdb';
      With ADOCnxAA do
      begin
         ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + BaseBaseAccess +
        ';Persist Security Info=False';
        LoginPrompt := False;
        Try
          Connected := True;
    // ...
    a+

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Juste pour voir, mettre avant la ligne 8:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not Assigned(AdoConnection1) then ShowMessage('aïe');

  6. #6
    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 Ok j'ai tout ce qu'il ma faut. Merci
    Je coche résolu

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/05/2014, 19h07
  2. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  3. toujours création de table dans base master
    Par FamiDoo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 13h34
  4. Requete sql pour création de table dans une base access
    Par Ben156 dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/01/2006, 22h12
  5. Problème d'alter table dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/03/2005, 09h19

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