Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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
Bonjour,
Regarde du coté des file functions dans l'aide PB.
Tu devrais pouvoir trouver ton bonheur
Hors ligne
voici un bout de code pour les bases oracle (fichier TNSNAMES.ORA)
cela ne doit pas etre si different
//----------------------------------------------------------------------------------------------- // 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
Hors ligne