Après windows pour les nuls, voici PB pour les bons (ou presque).

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 17: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 16:53:58)

Hors ligne

 

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

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

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 17: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,775,808

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 
//      
//      
//              par '#' ou '(' ou ')'
//      
//              - 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
//      
//      2 / Recherche dans le dossier oracle d'un sous-dossier 'net*'
//      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*'
    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
                        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
                                    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