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 :

[BDE][Access] utilisation de BDDs sans passer par ODBC


Sujet :

Bases de données Delphi

  1. #1
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut [BDE][Access] utilisation de BDDs sans passer par ODBC
    Voilà, j'ai une application qui a été développé avec une base Access et des composants BDE.
    Cependant je dois pouvoir maintenant être capable de charger d'autres bases (Access) qui n'auront pas été préalablement enregistré dans le ODBC.
    Donc est-il possible connaissant simplement le chemin d'accès de la base de se connecter à celle-ci à l'aide des composants BDE ? (il me semble avoir lu un post qui disait que "non mais peut-être")

    Si non, j'envisage de faire ceci (j'ai lu quelques trucs dans la FAQ qui peut-être me permettront de me faciliter la tâche)
    - sélection par l'utilisateur de la base de données à charger:
    - création automatique d'un alias et enregistrement dans l'ODBC
    - utilisation de l'appli avec cette base
    - à la fermeture de l'application, destruction de l'alias.

    Cela vous semble-t-il facile à réaliser ?. Mon but est de pouvoir le développer assez rapidement. Ce n'est qu'une rustine avant de redévelopper l'application (avec à priori passage par une BDD PostGreSQL et des composants zeoslib).

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Bon pour ma petite appli avec l'odbc, j'ai déjà trouvé comment créer l'alias (grâce à l'appli de Bloon de la FAQ qui m'a généré le code à copier-coller).
    Il me reste plus qu'à savoir comment supprimer l'alias.

    Je continue la-dedans à moins qu'il y ait une solution en passant directement par le chemin d'accès des BDDs

  3. #3
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    Salut
    J'ai fais une appli qui permet de sélectionné une base access sur le disque et qui fait ensuite des traitements dessus. J'ai l'impression que c'est ce que tu cherches à faire non ?
    Dans BDE j'ai déclaré une base de type access sans donné de nom à DATABASE NAME.
    J'utilise ensuite ce morceau de code (accessb est un composant Database)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if OpenDialog1.Execute then EditBDD.Text:=OpenDialog1.FileName;
        if CreeDSN(EditDriver.Text,EditNomDSN.Text,EditDescription.Text,EditBDD.Text)
        <>0 then {rien} Else Showmessage('Echec de la connexion');
          AliasName         := EditNomDSN.Text;
          Accessb.AliasName := AliasName;
          Accessb.LoginPrompt := False;
          Accessb.Databasename := 'Accessb';
          Accessb.connected := true;
    avec dans les déclarations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const
      ODBC_ADD_SYS_DSN         =           4;
      ODBC_REMOVE_DSN          =           3;
      ODBC_CONFIG_DSN          =           2;
      ODBC_ADD_DSN             =           1;
      vbAPINull      :  hwnd   =           0;
    dans les edits :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    object EditBDD: TEdit
        Left = 833
        Top = 23
        Width = 25
        Height = 20
        Font.Charset = ANSI_CHARSET
        Font.Color = clWindowText
        Font.Height = -9
        Font.Name = 'Arial'
        Font.Style = []
        ParentColor = True
        ParentFont = False
        ReadOnly = True
        TabOrder = 0
        Text = 'c:\'
        Visible = False
      end
      object EditDescription: TEdit
        Left = 833
        Top = 3
        Width = 25
        Height = 20
        Font.Charset = ANSI_CHARSET
        Font.Color = clWindowText
        Font.Height = -9
        Font.Name = 'Arial'
        Font.Style = []
        ParentColor = True
        ParentFont = False
        ReadOnly = True
        TabOrder = 1
        Text = 'Base Access'
        Visible = False
      end
      object EditDriver: TEdit
        Left = 833
        Top = 43
        Width = 25
        Height = 20
        Font.Charset = ANSI_CHARSET
        Font.Color = clWindowText
        Font.Height = -9
        Font.Name = 'Arial'
        Font.Style = []
        ParentColor = True
        ParentFont = False
        ReadOnly = True
        TabOrder = 2
        Text = 'Microsoft Access Driver (*.mdb)'
        Visible = False
      end
      object EditNomDSN: TEdit
        Left = 833
        Top = 63
        Width = 25
        Height = 20
        Font.Charset = ANSI_CHARSET
        Font.Color = clWindowText
        Font.Height = -9
        Font.Name = 'Arial'
        Font.Style = []
        ParentColor = True
        ParentFont = False
        ReadOnly = True
        TabOrder = 3
        Text = 'accessadr01'
        Visible = False
      end
    et comme fonction

    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
    function SQLConfigDataSource (hwndParent : hwnd; fRequest : Longint;  lpszDriver : AnsiString; lpszAttributes : AnsiString)  : Longint; stdcall;  external 'ODBCCP32.DLL' name  'SQLConfigDataSource';
    //                                                                            //
    function TForm1.CreeDSN(Driver,NomDSN,Description,FichierBaseDeDonnees:string):integer;
    var
      strDriver : AnsiString;
      strAttributes: AnsiString;
    begin
      strDriver := Driver;
      strAttributes := 'DSN='+NomDSN+ #0;
      strAttributes := strAttributes + 'DESCRIPTION='+Description + #0;
      strAttributes := strAttributes + 'DBQ='+FichierBaseDeDonnees + #0;
      {Pour visualiser la boite de dialogue, utiliser Form1.Handle au lieu
      de vbAPINull.}
      Result :=SQLConfigDataSource(vbAPINull  , ODBC_ADD_SYS_DSN, strDriver, strAttributes);
    end;
    Je ne sais pas si c'est très clair mais tu devrais pouvoir t'en sortir avec ca

  4. #4
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    merci pour le code.
    Par contre, j'ai à chaque fois une erreur à la connection lors du lancement de creerdsn.
    Mes paramètres de lancement de la fonction:
    Driver=Microsoft Access Driver (*.mdb)
    NomDSN=mabaseDSN
    Description=Base Access
    FichierBaseDeDonnees=c:\test\mabase.mdb
    Une question, la fonction CreerDSN, elle fait quoi ? DSN et OBDC, ca a un rapport ?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Re: [BDE][Access] utilisation de BDDs sans passer par ODBC
    Citation Envoyé par Guigui_
    Voilà, j'ai une application qui a été développé avec une base Access et des composants BDE.
    Cependant je dois pouvoir maintenant être capable de charger d'autres bases (Access) qui n'auront pas été préalablement enregistré dans le ODBC.
    Donc est-il possible connaissant simplement le chemin d'accès de la base de se connecter à celle-ci à l'aide des composants BDE ? (il me semble avoir lu un post qui disait que "non mais peut-être")

    Si non, j'envisage de faire ceci (j'ai lu quelques trucs dans la FAQ qui peut-être me permettront de me faciliter la tâche)
    - sélection par l'utilisateur de la base de données à charger:
    - création automatique d'un alias et enregistrement dans l'ODBC
    - utilisation de l'appli avec cette base
    - à la fermeture de l'application, destruction de l'alias.

    Cela vous semble-t-il facile à réaliser ?. Mon but est de pouvoir le développer assez rapidement. Ce n'est qu'une rustine avant de redévelopper l'application (avec à priori passage par une BDD PostGreSQL et des composants zeoslib).

Discussions similaires

  1. Specifier le chemin de BDD dBASE sans passer par odbc
    Par faniette dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/12/2010, 09h03
  2. Utilisation de MSCOMM sans passer par un userform
    Par jeje86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/12/2008, 08h56
  3. Utilisation de MDF sans passer par un backup
    Par AODRENN dans le forum Administration
    Réponses: 5
    Dernier message: 19/10/2005, 12h35
  4. Réponses: 2
    Dernier message: 06/01/2005, 21h09

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