Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai fini une application en pb 6.5
Je voudrais savoir comment pourrai-je créer mon fichier .ini pour le déploiment de mon application.
Quelles sont les fonctions de ce fichier dont j'en ai entendu parler?
Après je vais créer un exécutable (ça je peux le faire). Quelle corrélation existe-t-il entre ce fichier(.ini) et l'exécutable.
Merci de me guider en espérant que ma question cadre avec la rubrique base de données.
Dernière modification par ConanKanem (25-01-2007 09:35:15)
Hors ligne
Salut,
je connais pas PB6.5 (j'ai commencé à la 7), mais je pense que tu fais allusion au fichier qui contient les informations de connexion à la base de données ?
Dans le wizard de création d'une application, PB crée un objet connectservice à la BDD avec 3 possibilités de récupération des infos de connexion : script, base de registre et fichier .ini
Selon ton choix le fichier INI n'est pas forcément nécessaire.
Hors ligne
Bonjour,
J'ai pas trop compris ta question.
Tu peux utiliser un fichier .ini mais tu n'est pas obligé. Certains utilisent la base de registres.
Bon tu utilise un fichier ini ou pas ?
Et Quel installateur utilise tu ? Inno Setup ? NSIS ? InstallShield ?
en espérant que ma question cadre avec la rubrique base de données
pas vraiment, on déplacera ta question quand on l'aura comprise
Dernière modification par shahin (25-01-2007 09:31:56)
Hors ligne
Oui, c'est de cela qu'il s'agit, le fichier qui utilise les informations de connexion à la base. J'utilise un fichier .ini
De quel installeur parlez-vous? Celui de l'installation de l'application conçue ou de pb6.5?
Excusez mes maladresses, svp.
Merci.
Dernière modification par ConanKanem (25-01-2007 09:43:22)
Hors ligne
Si c'est une appli qui n'est pas déployée sur plusieurs sites ou plutôt sur plusieurs bases de données différentes, je te conseillerais de mettre les infos de connexion en dur dans le script = meilleure confidentialité.
Hors ligne
le fichier Ini
contient en general
pour ta connexion
// Profile Gescom Test SQLCA.DBMS = "SYC Adaptive Server Enterprise" SQLCA.Database = "miam a donf" SQLCA.LogPass = <******> SQLCA.ServerName = "BAH" SQLCA.LogId = "toto" SQLCA.AutoCommit = False SQLCA.DBParm = "Release='11.5'"
et d'autres parametres de configurations en plus...
Genre, le nom de la derniere fenetre ouverte,
la palette de couleur pour ton appli,
la derniere date de connexion , ect...
Hors ligne
L'application sera installée sur 6 postes: chacun avec ses interfaces (fonctionnalités) différentes. Mais elle attaquera une seule base. Je voudrais utiliser le fichier ini. J'utilise SQL Anywhere 5, si le detail est necésaire.
Merci à tous. Mais Pick, pour l'avoir, je procède comment?
Dernière modification par ConanKanem (25-01-2007 10:10:35)
Hors ligne
En fait le fichier pb.ini auquel tu fais certainement référence sert entre autre
à initialiser l'objet SQLCA (connexion BDD).
Il peut être utile lors du premier deployement de ton applis, mais il est plus rationnel
d'ecrire dans la base de registre les infos contenues dans ton fichier .ini lors de la première
lecture. Par la suite il peut te permettre de modifier la valeur de ces clés.
La procédure est très bien expliquée dans le "OnLine Book" (Maj F1 sur un mot clé et OnLIne Books)
Désolé Pick, trop long à poster, en doublon avec ta réponse.
Sinon pour trouver les info de connexion, une astuce est de copier les paramètres
ODBC du panneau de config dans le fichier ini.
Ex:
[Database] DBMS=ODBC Database= XXX UserId= XXX DatabasePassword=XXX LogPassword=XXX ServerName= DB2 LogId=XXX Lock= DbParm=ConnectString='DSN= XXX;UID=XXX;PWD=XXX;DBALIAS=XXX;',CursorLib='ODBC_Cur_Lib',CursorLock='ReadOnly',CursorScroll='Dynamic',DelimitIdentifier='Yes',IdentifierQuoteChar='"',FormatArgsAsExp='No',DateTime=' \''yyyy-mm-dd-hh.mm.ss\'' ' Prompt=0 ;Infos Client PasDeVap=False Debug=No CurrPath=C:\ Type_client=XXX TropdArticles=30000 ServeurWeb=http://LocalHost Prefixe=XXX InstallPath=C:\Program Files\XXX CentreWindow=O
Dernière modification par cdtit (25-01-2007 10:15:54)
Hors ligne
il faut juste que tu utilises ces commandes...
SetProfileString
et ProfileString
Regardes le detail dans l'aide en ligne...
Hors ligne
Merci. Je voudrais que tu me passes l'url de l'aide en ligne. Je développe sur une autre machine qui n'est pas connectée au net. Et les liens que j'ai vu sur l'aide de celle-ci ne m'ont pas permis de trouver ce que je cherche sur la machine connectée.
Hors ligne
Je pense que Pick voulait parler des l'aide PB, soit F1 et OnLigne Books
dans ton environnement de dev.
Pour un exemple de fichier ini et de son utilisation regardes l'exemple de la fonction
SetTransObject() =>
"This example has two parts. The first script, for the application's Open event, reads database parameters from an initialization file called MYAPP.INI and stores the values in the default transaction object (SQLCA). The Database section of MYAPP.INI has the same keywords as PowerBuilder's own PB.INI file. The parameters shown are for a SQL Server or Oracle database. The second script, for the window's Open event, establishes a connection and retrieves data from the database.
The application's Open event script populates SQLCA:
SQLCA.DBMS = ProfileString("myapp.ini", & "database", "DBMS", " ") SQLCA.Database = ProfileString("myapp.ini", & "database", "Database", " ") SQLCA.LogId = ProfileString("myapp.ini", & "database", "LogId", " ") SQLCA.LogPass = ProfileString("myapp.ini", & "database", "LogPassword", " ") SQLCA.ServerName = ProfileString("myapp.ini", & "database", "ServerName", " ") SQLCA.UserId = ProfileString("myapp.ini", & "database", "UserId", " ") SQLCA.DBPass = ProfileString("myapp.ini", & "database", "DatabasePassword", " ") SQLCA.lock = ProfileString("myapp.ini", & "database", "lock", " ")
The Open event script for the window that contains the DataWindow control connects to the database, assigns the transaction object to the DataWindow, and retrieves data:
long RowsRetrieved string LastName // Connect to the database. CONNECT USING SQLCA; // Test whether the connect succeeded. IF SQLCA.SQLCode <> 0 THEN MessageBox("Connect Failed", & "Cannot connect to database " & + SQLCA.SQLErrText) RETURN END IF
Dernière modification par cdtit (25-01-2007 14:09:33)
Hors ligne
Salut,
Au fait pour obtenir certains paramètres que tu utiliseras dans ton fichier ini, tu peux aller
au Database Profile Setup et dans l'onglet Preview copié la Database Connection String
qui contient la connectstring a ta base de donnée.
Bon courage.
Hors ligne
Voici comment j'ai procedé:
Les informations de la connecting string étant :
// Profile impots SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=impots;UID=dba;PWD=sql'"
J'ai créé ensuite une wf rattachée à ma window de connexion dont le code est :
string ls_userid, ls_password,ls_database,ls_dbms ls_userid=trim(userid) ls_password=trim(password) sqlca.DBMS = ProfileString & ("impots.ini","Database","DBMS"," ") ls_database=ProfileString & ("impots.ini","Database","Database"," ") sqlca.UserId = ls_userid sqlca.DBPass = ls_password sqlca.LogID = ls_userid sqlca.LogPass = ls_password sqlca.ServerName = ProfileString & ("impots.ini","Database","ServerName"," ") sqlca.dbparm=" ConnectString='DSN=impots; "+ "UID=" + ls_userid +& ";PWD=" + ls_password + "'" connect using sqlca; return sqlca.sqlcode
Sur le click event du bouton ok de la window de connexion:
string L_userid, L_pass, L_base, L_dbms integer li_resultat L_userid=Sle_userid.Text L_pass=Sle_password.Text If ((L_userid='') and (L_pass='')) THEN messagebox("Connexion", 'Veuillez entrer votre compte et votre mot de passe') else sqlca.DBMS = ProfileString & ("impots.ini","Database","DBMS"," ") sqlca.Database = ProfileString & ("impots.ini","Database","Database"," ") sqlca.UserId = L_userid sqlca.DBPass = L_pass sqlca.LogID = L_userid sqlca.LogPass = L_pass sqlca.ServerName = ProfileString & ("impots.ini","Database","ServerName"," ") sqlca.dbParm = ProfileString & ("impots.ini","Database","DBParm"," ") SetPointer(hourglass!) st_message.text = "CONNECTION..." li_resultat = wf_connect(sle_userid.text, sle_password.text) if li_resultat <> -1 THEN close(Parent) open(w_demarre) else close(Parent) end if end if
Voici mon fichier ini:
[database] DBMS=ODBC Database=impots UserId=dba DatabasePassword=sql LogPassword= ServerName=monserver LogId= Lock= DbParm=ConnectString='DSN=impots;UID=dba;PWD=;' Prompt=0 AutoCommit=0
Est-ce que mon fichier ini est effectif, bien que ça marche?
Merci en m'excusant de la longueur des codes.
Dernière modification par ConanKanem (29-01-2007 13:48:17)
Hors ligne