Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour à tous,
Je souhaiterai par le biais d'un système d'ouverture/fermeture/sauvegarde ouvrir/fermer/sauvegarder une base de
données de mon application (celle alimentant cette application en données )
Comment puis-je m'y prendre ?
Par avance, merci.
PS: Je suis sous PB9 et ASA8
Doctor Z.
Hors ligne
Salut,
Si c'est une base locale ASA tu peut la sauvegarder par un simple copy de fichier ( sauvegarde du fichier.db et fichier.log éventuel)
Pour faire celà il ne faut pas que ta base soit ouverte.
Sinon tu peut également par code réaliser ton opération de la manière suivant sous PB :
string ls_mysql ls_mysql = "BACKUP DATABASE DIRECTORY 'C:\\temp\\' WAIT BEFORE START WAIT AFTER END " EXECUTE IMMEDIATE :ls_Mysql USING sqlca ;
Le répertoire de sauvegarde est automatiquement créé même si ce dernier n'existe pas.
La syntaxe complète du BACKUP est la suivante :
BACKUP DATABASE DIRECTORY backup-directory [ WAIT BEFORE START ] [ WAIT AFTER END ] [ DBFILE ONLY ] [ TRANSACTION LOG ONLY ] [ TRANSACTION LOG RENAME [ MATCH ] ] [ TRANSACTION LOG TRUNCATE ] [ ON EXISTING ERROR ] [ HISTORY { ON | OFF } ]
Dans l'aide de ASA fait une recherche sur BACKUP STATEMENT pour avoir toutes les explications.
Hors ligne
Yanis a écrit:
Salut,
Si c'est une base locale ASA tu peut la sauvegarder par un simple copy de fichier ( sauvegarde du fichier.db et fichier.log éventuel)
Pour faire celà il ne faut pas que ta base soit ouverte.
Sinon tu peut également par code réaliser ton opération de la manière suivant sous PB :Code: PB
string ls_mysql ls_mysql = "BACKUP DATABASE DIRECTORY 'C:\\temp\\' WAIT BEFORE START WAIT AFTER END " EXECUTE IMMEDIATE :ls_Mysql USING sqlca ;Le répertoire de sauvegarde est automatiquement créé même si ce dernier n'existe pas.
La syntaxe complète du BACKUP est la suivante :Code: PB
BACKUP DATABASE DIRECTORY backup-directory [ WAIT BEFORE START ] [ WAIT AFTER END ] [ DBFILE ONLY ] [ TRANSACTION LOG ONLY ] [ TRANSACTION LOG RENAME [ MATCH ] ] [ TRANSACTION LOG TRUNCATE ] [ ON EXISTING ERROR ] [ HISTORY { ON | OFF } ]
Dans l'aide de ASA fait une recherche sur BACKUP STATEMENT pour avoir toutes les explications.
Merci Yanis pour ton explication, cependant je souhaiterai avoir un fichier par base de données et donc pouvoir les
sauvegarder directement dans mon application.
Ainsi, lorsque je clique sur le bouton d'ouverture de fichier, je devrai pouvoir avoir la liste des fichiers (= base de
données) que j'ai auparavant sauvegardé.
Comment puis-je faire cela ?
Hors ligne
Salut,
Pourquoi tu me dis 1 fichier par base de donnée, est ce que tu as plusieurs bases ouverte avec le même moteur ASA.
La sauvegarde dans ton application c'est le code que je t'ai mis avec la fonction execute immediate
Si ce qui te gène c'est le nom du fichier de sauvegarde à toi d'utiliser la fonction PB : GetFileSaveName
et de renommer ta sauvegarde à l'aide du nom de fichier récupérer.
Si ce n'est pas çà décrit exactement ce que tu désire faire.
Hors ligne
Yanis a écrit:
Salut,
Pourquoi tu me dis 1 fichier par base de donnée, est ce que tu as plusieurs bases ouverte avec le même moteur ASA.
La sauvegarde dans ton application c'est le code que je t'ai mis avec la fonctionexecute immediate
S'il ce qui te gène c'est le nom du fichier de sauvegarde à toi d'utiliser la fonction PB :GetFileSaveName
et de renommer ta sauvegarde à l'aide du nom de fichier récupérer.
Si ce n'est pas çà décrit exactement ce que tu désire faire.
OK, je me suis mal exprimé, je vais faire simple.
Imaginons que j'ai une application qui tourne sur 3 clients A, B, C, ayant chacun sa base A, B et C.
Je souhaiterai dans mon application pouvoir ouvrir chacun de leur fichier de base de données.
Merci.
Doctor Z.
Hors ligne
Salut,
Tu démarre un engine avec le start et tu spécifie ton nom de fichier de base de donnée avec dbf le tout dans le dbparm de l'objet transaction.
SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='Driver=Adaptive Server Anywhere 9.0;" + & "DBF=C:\TEMP\easdemo105.db;UID=dba;PWD=sql;" + & "Start=C:\Program Files\Sybase\SQL Anywhere 9\win32\dbeng9.exe -d -c8m'" CONNECT USING sqlca ;
Ce code te permet de lancer n'importe quelle base et ou quelle soit sans que celle ci soit définit dans l'ODBC.
Hors ligne
Salut,
Je te relance sur ce message pour savoir ci celà te suffisait ou as tu pris une autre voie ?
Hors ligne
Bonjour Yanis,
Non c'est bon, j'ai effectivement suivi tes préconisations et c'est ce que j'espérais.
Je vais fermer le topic.
Merci encore.
Doctor Z.
Hors ligne
Pages: 1