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 :

comment ajouter un source ODBC pour SQLServer par code


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut comment ajouter un source ODBC pour SQLServer par code
    salut à tous.
    Apres quelque temps de recherche , j'ai trouvé comment créer un source ODBC pour des base local tel que access que j'utilise, mais malheureusement j'ai pas trouvé comment l'ajouter pour une base SQL surtout ou bien n'importe base distante , ca veut dire avec les champ d'@ ip et tous cas .

    je vous attend les amis ,
    et merci d'avance

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut


    as-tu essayé comme indiqué dans la FAQ ?

  3. #3
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    Merci pour la réponse, j'ai vu la fac , mais dans cette tuto y a pas d'@ de serveur , en plus il me semble un peut compliqué , apparamant il y des compostant à declarer avant et je ne sais pas comment , apparamant chui encore débutant , lol, alors pouvez vous m'expliquer un peut ce code , et surtout , comment insérer l'@ IP de serveur , et merci bien .
    Pour ne pas vous déranger , voici 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
    17
    18
    with TRegistry.Create do
      try
        { Recensement de la source de données (1) }
        RootKey := HKEY_LOCAL_MACHINE;
        OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',false);
        WriteString('MaSourceSQLServer','SQL Server');
        { Ecriture des paramètres (2) }
        if not OpenKey('\Software\ODBC\ODBC.INI\MaSourceSQLServer',true) then
          raise Exception.Create('impossible de créer la clé : '+
                                   '<\Software\ODBC\ODBC.INI\MaSourceSQLServer>');
        WriteString('Driver','C:\WINNT\System32\sqlsrv32.dll');
        WriteString('Description','Source créée par programme');
        WriteString('Server','SRVSQL');
        WriteString('LastUser','SA');
        WriteString('Trusted_Connection','Yes');
      finally
        Free;
      end;


  4. #4
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    un autre choses svp, dans la fac il ya un zip que j'ai pa pu le télécharger:
    ODBC Reg, je croit que ce zip va resoudre mon probleme .
    et merci.

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    je prends le relai dans le code que tu a posté j'ai pris la peine de le commenter.

    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
    with TRegistry.Create do
    //si l'opération échoue notre code est protégé, c'est ce qu'on appel gestion des exceptions   
    try
        { Recensement de la source de données (1) }
       // clé principale
        RootKey := HKEY_LOCAL_MACHINE;
       // on ouvre la clé du catalogue ODBC
        OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',false);
       // on ajoute la notre en l'occurrence SQL Serve  
        WriteString('MaSourceSQLServer','SQL Server');
        { Ecriture des paramètres (2) }
      // si ya erreur lors de l'ouverture on affiche un message
        if not OpenKey('\Software\ODBC\ODBC.INI\MaSourceSQLServer',true) then
          raise Exception.Create('impossible de créer la clé : '+
                                   '<\Software\ODBC\ODBC.INI\MaSourceSQLServer>');
       // sinon on écrit les autres paramètres relatif à notre ODBC
        WriteString('Driver','C:\WINNT\System32\sqlsrv32.dll');
        WriteString('Description','Source créée par programme');
        WriteString('Server','SRVSQL');
        WriteString('LastUser','SA');
        WriteString('Trusted_Connection','Yes');
      finally
       // enfin on libère les ressources
        Free;
      end;
    en fait tout se passe au niveau de la base de registre windows !

    simple copier/coller est ton ODBC est dans la liste de windows, magique non?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #6
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    merci bien, maos lorsque je compile , un erreur est survenue, apres savoir utiliser l'outil de Showmessage avant et apres chaque ligne , j'ai pu savoir la ligne ou il ya l'erreur : WriteString('MaSourceSQLServer','SQL Server');

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par tomy_libre Voir le message
    merci bien, maos lorsque je compile , un erreur est survenue, apres savoir utiliser l'outil de Showmessage avant et apres chaque ligne , j'ai pu savoir la ligne ou il ya l'erreur : WriteString('MaSourceSQLServer','SQL Server');
    ce qui veut dire que la clé '\Software\ODBC\ODBC.INI\ODBC Data Sources' est inexistante sur ton système, donc va falloir la créer.

    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
     
    with TRegistry.Create do
    //si l'opération échoue notre code est protégé, c'est ce qu'on appel gestion des exceptions   
    try
        { Recensement de la source de données (1) }
       // clé principale
        RootKey := HKEY_LOCAL_MACHINE;
       // si la clé n'est pas disponible faut la créer
       if  Registre.KeyExists('\Software\ODBC\ODBC.INI\ODBC Data Sources') then
       // on ouvre la clé du catalogue ODBC
          OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',false);
       // création de la clé
      else Registre.CreateKey('\Software\ODBC\ODBC.INI\ODBC Data Sources');
       // on ajoute la notre en l'occurrence SQL Serve  
        WriteString('MaSourceSQLServer','SQL Server');
        { Ecriture des paramètres (2) }
      // si ya erreur lors de l'ouverture on affiche un message
        if not OpenKey('\Software\ODBC\ODBC.INI\MaSourceSQLServer',true) then
          raise Exception.Create('impossible de créer la clé : '+
                                   '<\Software\ODBC\ODBC.INI\MaSourceSQLServer>');
       // sinon on écrit les autres paramètres relatif à notre ODBC
        WriteString('Driver','C:\WINNT\System32\sqlsrv32.dll');
        WriteString('Description','Source créée par programme');
        WriteString('Server','SRVSQL');
        WriteString('LastUser','SA');
        WriteString('Trusted_Connection','Yes');
      finally
       // enfin on libère les ressources
        Free;
      end;
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  8. #8
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    merci bien mais lorsque je compile :
    [Error] Unit1.pas(35): Undeclared identifier: 'Registre'

    je le remplace par Registry et TRegistry mais toujours existe des erreurs

  9. #9
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    lorsque je remplace Registre par TRegistry :
    [Error] Unit1.pas(35): This form of method call only allowed for class methods
    [Error] Unit1.pas(39): This form of method call only allowed for class methods

    , je ne sais pas quoi faire,

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    faut rien changer, tu n'as qu'à ajouter Registry (à toi de vérifier la syntaxe; F1 recherche : Registry) dans la partie uses.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  11. #11
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    J'ai fait un copier coller, et j'ai ajouter Registry dans uses , !!!!!!!!

  12. #12
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par tomy_libre Voir le message
    g fait un copier coller , et j'ai ajouter Registry dans uses , !!!!!!!!
    et ça a donné quoi comme résultat après compilation ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  13. #13
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    va donnée le premier erreur que je t donné :
    [Error] Unit1.pas(35): Undeclared identifier: 'Registre'
    il n'a pas fait erreur au niveau uses , donc Registry est bien écrite.

  14. #14
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Salut;

    je prends le relai
    pas de souci

    @ tomy_libre : poste le code actuel que tu utilises pour qu'on puisse y voir plus clair.

  15. #15
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    c'est le meme code, je l'ai mis dans un bouton pour tester d'abord, en tous cas voici tout le code de Unit :

    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,Registry, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        with TRegistry.Create do
    //si l'opération échoue notre code est protégé, c'est ce qu'on appel gestion des exceptions   
    try
        { Recensement de la source de données (1) }
       // clé principale
        RootKey := HKEY_LOCAL_MACHINE;
       // si la clé n'est pas disponible faut la créer
       if  Registre.KeyExists('\Software\ODBC\ODBC.INI\ODBC Data Sources') then
       // on ouvre la clé du catalogue ODBC
          OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',false);
       // création de la clé
      else Registre.CreateKey('\Software\ODBC\ODBC.INI\ODBC Data Sources');
       // on ajoute la notre en l'occurrence SQL Serve
        WriteString('MaSourceSQLServer','SQL Server');
        { Ecriture des paramètres (2) }
      // si ya erreur lors de l'ouverture on affiche un message
        if not OpenKey('\Software\ODBC\ODBC.INI\MaSourceSQLServer',true) then
          raise Exception.Create('impossible de créer la clé : '+
                                   '<\Software\ODBC\ODBC.INI\MaSourceSQLServer>');
       // sinon on écrit les autres paramètres relatif à notre ODBC
        WriteString('Driver','C:\WINNT\System32\sqlsrv32.dll');
        WriteString('Description','Source créée par programme');
        WriteString('Server','SRVSQL');
        WriteString('LastUser','SA');
        WriteString('Trusted_Connection','Yes');
      finally
       // enfin on libère les ressources
        Free;
      end;
    end;
     
    end.

  16. #16
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Supprime les deux Registre. Il faut aussi supprimer le ";" sur la ligne du OpenKey.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if KeyExists('\Software\ODBC\ODBC.INI\ODBC Data Sources')
    then OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',false)
    else CreateKey('\Software\ODBC\ODBC.INI\ODBC Data Sources');
    Mais ces trois lignes pourraient être remplacées par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', TRUE);

  17. #17
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    et bain , j'ai ajouter un variable Registre : TRegistry; et la compilation ce fait , mais lorsque je clique sur le bouton pour créer le source , une exeption s'affiche et me dit qu'il n'a pu créer le clé .....

    je me coince à nouveau ....

  18. #18
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    erreur : failed to create key \Software\ODBC\ODBC.INI\ODBC Data Sources



  19. #19
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    dsl Andnotor , mes 2msg sont avant le tien , ok cher ami, je test et je re

  20. #20
    Membre du Club Avatar de tomy_libre
    Enseignant
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 48
    Points
    48
    Par défaut
    , c'est résolu ,
    Tres bien merci pour tous le monde
    developpez.com toujours le meilleur

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

Discussions similaires

  1. [C# 2.0][SQLserver 2000] Comment ajouter ma source de données ?
    Par Sodangbe dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2007, 09h34
  2. Comment créer une source DSN pour un fichier text
    Par ahouba dans le forum Access
    Réponses: 3
    Dernier message: 08/01/2007, 11h51
  3. source ODBC pour connexion MS SQL Server
    Par grinder59 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/05/2006, 09h17
  4. [Interbase]Comment créer une source ODBC par programme ?
    Par touhami dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/03/2006, 16h40

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