Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 09-10-2007 15:15:50

bdf94  
Membre Power Geek
Date d'inscription: 04-10-2006
Messages: 180
Pépites: 2,231
Banque: 0

[RESOLU] Sybase : sql.ini

Bonjour,

J'ai une application PB avec une base ASE.
ASE fonctionnne avec un fichier sql.ini pour recuperer les differentes bases (par exemple une bdd de prod, une de ecette et une de qualif).

Jevoudrais pouvoir mettre dans une liste deroulante toutes ces bases pour pouvoir choisir sa connexion.

Est ce que quelqu'un a deja fait cela ?

Dernière modification par bdf94 (15-10-2007 14:53:58)

Hors ligne

 

#2 09-10-2007 15:22:09

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Sybase : sql.ini

Bonjour,

Regarde du coté des file functions dans l'aide PB.
Tu devrais pouvoir trouver ton bonheur


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 09-10-2007 15:22:59

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Sybase : sql.ini

voici un bout de code pour les bases oracle (fichier TNSNAMES.ORA)
cela ne doit pas etre si different

Code: pb

//-----------------------------------------------------------------------------------------------
//      Fonction ayant pour but de remplir la ddlistbox de la fenetre de login 
//      avec les instance de base déclaré sur le poste client.
//      
//      Pour cela il est nécessaire de lire les information du fichier: TNSNAMES.ORA
//      Ce fichier se trouve dans un sous-répertoire du dossier oracle 'admin'
//      
//      Remarque :  Pour récupérer les alliaces du fichier TNSNAMES.ORA, on se base sur
//              le fait qu'en oracle 7 et 8, on test si le premier caractère de la ligne 
//              du fichier est un caractère alphabétique car les autre lignes commence
//              par '#' ou '(' ou ')'
//      
//      ATTENTION :  - suivant l'OS la clé du registre change
//              - suivant l'installation le chemin du dossier oracle change
//              - suivant les version d'oracle le chemin change
//              exemple :  chemin pour oracle 7 --> oracle\network\admin
//                      chemin pour oracle 8 --> oracle\net80\admin
//      
//      Procédure de récupe des infos :
//      1 / Récupe dans la base de registre du chemin du dossier oracle
//      2 / Recherche dans le dossier oracle d'un sous-dossier 'net*'
//      3 / Recherche dans le sou-dossier trouvé un répertoire 'admin'
//      4 / Lecture des information du fichier TNSNAMES.ORA
//
//

//-----------------------------------------------------------------------------------------------
String  ls_oracle
String  ls_rep_net
String  ls_rep_admin
String  ls_fichier
String  ls_chemin, ls_read
String  ls_domaine
String  ls_instance

Integer  li_i, li_j, li_k, li_return

Long    ll_read, ll_read_tot, ll_pos, ll_lenfile

Boolean  lb_trouve_net = False
Boolean  lb_trouve_tnsnames = False
Boolean  lb_trouve_tnsname = False
Boolean  lb_trouve_admin = False
Boolean  lb_domaine = False

// Initialisation
ls_chemin = ''
ls_instance = ''
li_i = 1
String ls_string1 =  "HKEY_LOCAL_MACHINE\Software\Oracle"
String ls_string2 = "ORACLE_HOME"

// Recupe du chemin du dossier oracle
RegistryGet( ls_string1, ls_string2, RegString!, ls_oracle)
If IsNull(ls_oracle) or trim(ls_oracle)='' Then 
  ls_oracle = ProfileString(is_ini_file, "Defaut", "ORACLE_HOME", "C:\ORANT")
End if 

// Recupe des sous-repertoire du dossier oracle
lb_oracle.DirList(ls_oracle, 16)

// Recupe du sous-repertoire Net* avec un sous dossier Admnin
Do While lb_trouve_net=False And li_i <= lb_oracle.TotalItems ()
  ls_rep_net = lb_oracle.Text(li_i)
  // Recherche du sous-dossier 'net*'
  // Attention : le premier caractère est '['
  If Upper(LeftA(ls_rep_net,4)) = '[NET' Then
    // on enleve les []
    ls_rep_net = RightA(ls_rep_net,LenA(ls_rep_net) - 1)
    ls_rep_net = LeftA(ls_rep_net,LenA(ls_rep_net) - 1)
    lb_network.DirList(ls_oracle + '\' + ls_rep_net, 16)
    lb_trouve_net = True
    // Recherche du sous-dossier 'admin'
    li_j = 1
    Do While Not lb_trouve_admin And li_j <= lb_network.TotalItems ()
      ls_rep_admin = lb_network.Text(li_j)
      If Upper(ls_rep_admin) = '[ADMIN]' Then
        // Si dossier = Net*\Admin
        lb_trouve_net = True
        lb_trouve_admin = True
        // on enleve les []
        ls_rep_admin = RightA(ls_rep_admin,LenA(ls_rep_admin) - 1)
        ls_rep_admin = LeftA(ls_rep_admin,LenA(ls_rep_admin) - 1)
        lb_rep_admin.DirList(ls_oracle + '\' + ls_rep_net + '\' + ls_rep_admin, 16)
        // Recherche du fichier TNSNAMES.ORA
        li_k = 1
        Do While Not lb_trouve_tnsnames And li_k <= lb_rep_admin.TotalItems ()
          ls_fichier = lb_rep_admin.Text(li_k)
          ls_chemin = ls_oracle + '\' + ls_rep_net + '\' + ls_rep_admin
          If Upper(ls_fichier) = 'TNSNAMES.ORA' Then
            lb_trouve_tnsnames = True
            // Récupe des instances
            li_return = 0
            ll_lenfile = 0
            ll_lenfile = FileLength(ls_chemin + '\' + 'TNSNAMES.ORA')
            li_return = FileOpen(ls_chemin + '\' + 'TNSNAMES.ORA')
            Choose Case li_return
              Case Is > 0
                ll_read = 0
                ll_read_tot = 0
                ls_read=''
                Do While ll_read_tot < ll_lenfile And ll_read >= 0
                  ll_read = FileRead(li_return,ls_read)
                  ls_read = Trim(ls_read)
                  ll_read_tot = ll_read_tot + ll_read
                  // Si le 1er caractère est 1 lettre 
                  If Not IsNull(Match (Upper(LeftA(ls_read,1)),"[A-Z]")) And &
                    Match (Upper(LeftA(ls_read,1)),"[A-Z]") Then
                    ls_instance = ls_read
                    ll_pos = PosA(ls_instance,'=')
                    If ll_pos > 0 And Not IsNull(ll_pos) Then
                      ls_instance = Trim(LeftA (ls_instance,ll_pos - 1))
                    End If
                    // Remplissage de la listbox des alliasses
                    ddlb_alliasse.AddItem(ls_instance)
                  End If
                Loop
                FileClose(li_return)
              Case Else
                MessageBox('Erreur', "Impossible d'ouvrir le fichier" + &
                  ls_chemin + '\' + 'TNSNAMES.ORA',StopSign!)
            End Choose
          Else
            li_k++
            lb_trouve_tnsnames = False
          End If
        Loop        
      Else
        li_j++
        lb_trouve_net = False
        lb_trouve_admin = False
      End If
    Loop
  Else
    li_i++
    lb_trouve_net = False
  End If
Loop













Face à l'agression, la puissance de l'intelligence

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22