http://sourceforge.net/projects/uib/files/
personnellement j'utilise ceux-ci mais mise à jour via SVN
http://sourceforge.net/projects/uib/files/
personnellement j'utilise ceux-ci mais mise à jour via SVN
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Ça progresse mais...
J'ai réussi à installer les composants UIB
Merci Sergiomaster ;
J'ai créé un tout petit projet qui me permet d'accéder à ma base de données avec:
Merci paradise ,1 TUIBDatabase et ses propriétés DatabaseName (chemin de ta DB) et LibraryName (chemin vers fbclient.dll)
1 TUIBTransaction et sa propriété Database reliée au TUIBDatabase ci-dessus
1 ou plusieurs TUIBDatasetet avec leurs propriétés Transaction (TUIBTransaction ci-dessus) et SQL (la requête)
J'y ai ajouté un Datasource relié à un DBGrid. C'est on ne peut plus simple et ça fonctionne sur mon PC hôte.
Mais... pas moyen de l'exporter.
Dès que je fais passer la propriété Connected du UIBDatabase à true, j'ai
J'arrête là pour ce soir, si quelqu'un peut encore m'aider...unavailable database
Unsuccessful execution caused by an unavailable ressource.
Error Code: 55
tu veux dire le PC ou il y a Delphi ?C'est on ne peut plus simple et ça fonctionne sur mon PC hôte.
Ce que je voudrais savoir c'est si Firebird est correctement installé sur le PC Hôte ? D'ailleurs s'agit-il d'un PC Hôte de l'application et de la base ou d'un PC client , la base étant sur le réseau .
Ensuite , Firebird sur le PC Hôte est il correctement installé ? est-ce de l'embedded ou comme sur le PC de Dev. n'y aurait t-il pas un concurrent genre Interbase sur le PC qui pourrait géner ?
Sur ton PC de développement Firebird est installé comment ? en Client/Serveur/service (installation classique) ou en embedded comme sur ton PC Hôte ?
car attention dans ce cas la bibliothèque à indiquer n'est pas la même .
Peut-voir le source de la partie connexion ce sera plus "parlant"
La Base de Données est correctement transférée sur le PC Hôte
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Petite précision concernant le PC "hôte" et le PC de développement: c'est le même.
Le but de mon appli est de pouvoir fonctionner sur n'importe quel PC, sans y installer trop de choses en plus.
Pour l'instant, sur le PC de développement, j'ai Delphi avec Firebird 2.5.
Firebird est installé (je viens de le ré-installer pour être sûr) en "Composants serveur: Binaires Super serveur" puis "Exécuter le serveur Firebird en tant que service". Le résumé de l'installation de Firebird:
La base de données est un fichier local (c:\Temp\Cahier.fdb).Dossier de destination :
C:\Program Files\Firebird\Firebird_2_5
Type d'installation :
Installation personnalisée
Composants sélectionnés :
Composants serveur
Binaires Super Serveur
Composants outils développeur et administrateur
Composants client
Dossier du menu Démarrer :
Firebird 2.5 (Win32)
Tâches supplémentaires :
Utiliser Guardian pour controler le serveur?
Exécuter le serveur Firebird en tant que:
Exécuter en tant que Service?
Exécuter automatiquement Firebird à chaque démarrage?
"Installer l'application du panneau de configuration?"
Générer la bibliothèque GDS32.DLL pour les anciennes applications?
Voici le code qui me sert d'essai à l'export:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, JvExDBGrids, JvDBGrid, DB, uibdataset, uib, StdCtrls; type TForm1 = class(TForm) Base: TUIBDataBase; UIBTransaction1: TUIBTransaction; Dataset: TUIBDataSet; DataSource1: TDataSource; JvDBGrid1: TJvDBGrid; Button1: TButton; procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin base.DatabaseName:='c:\temp\cahier.fdb'; base.connected:=true; dataset.Active:=true; end; end.
Mon intention est de "simplement" copier / coller l'appli + la base de données + éventuellement une dll vers un autre PC pour mon appli fonctionne n'importe où .
Je me pencherai bientôt sur le fbembed.dll voir si je peux en tirer quelque chose mais je ne sais toujours pas comment m'y prendre...
bonjour
écrire juste : fbclient.dll
sans rien de plus.
Est-ce que ta bases est créée avec la firebird 2.5, sinon il faut la sauvegarder avec un back up dans IBExpert par exemple, et la restaurer en 2.5.
cordialement
André
ce qui n'etait pas aussi évident que ça
Donc le choix doit se faire sur Embedded si c'est du monoposte
ceci explique pourquoi ibexpert fonctionne
j'aurais dit la connexion et il manque des choses mises par défaut par UIB mais à connaitre
attention si mes souvenirs sont bon par défaut les uib propose embedded
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TForm1.Button1Click(Sender: TObject); begin // dans le cas d'une install 'client/serveur classique' base.LibraryName:='C:\Program Files\Firebird\Firebird_2_1\bin\fbclient.dll'; // pour embedded //base.LibraryName:='fbembed.dll'; // je prefére utiliser le prtocole tcpip et le port 3050 ca gére le pb des antivirus/parefeu délicats base.DatabaseName:='localhost/3050:c:\temp\cahier.fdb'; // dans le cas d'un client/serveur ne pas oublier les user et password base.user:='SYSDBA'; base.password:='masterkey'; base.connected:=true; dataset.Active:=true; end;
vérifier également les charsets (UTF8 par défaut) et dialect (3) de connexion
le "éventuellement une dll" oblige embedded , avec quelques autres trucs d'ailleursMon intention est de "simplement" copier / coller l'appli + la base de données + éventuellement une dll vers un autre PC pour mon appli fonctionne n'importe où .
cela n'empêche , une bdd ne doit pas être copier directe (c:\temp\cahier.fdb) mais plutôt par backup/restore (ce que UIB peut faire)
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Merci pour ces détails indispensables
J'ai fait les réglages adéquats, notamment au sujet de fbembed puisque l'appli fonctionnera en monoposte.
Aurais-tu la gentillesse à présent de m'indiquer la procédure avec IBExpert pour exporter ma base de données sur le deuxième PC s'il te plait ? Faut-il installer IBExpert sur ce 2ème poste ?
Bonjour
Voilà le code de ma fiche de sauvegarde, je pense qu'il est relativement clair, et peut-être que je l'améliorerai au vu des critiques qui suivront
Je l'utilise avec fbclient.dll sans le chemin sur un serveur installé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 unit uSauvegarde; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ActnList, uib, StdCtrls, Buttons, ExtCtrls; type TfSauvegarde = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; eVLC: TEdit; BitBtn1: TBitBtn; eFBK: TEdit; BitBtn2: TBitBtn; bbSauvegarde: TBitBtn; bbRestauration: TBitBtn; mLog: TMemo; UIBbcVulcain: TUIBBackup; UIBrVulcain: TUIBRestore; ActionList1: TActionList; aInitVariables: TAction; sdSave: TSaveDialog; odOpen: TOpenDialog; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure aInitVariablesExecute(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure bbRestaurationClick(Sender: TObject); procedure bbSauvegardeClick(Sender: TObject); procedure UIBrVulcainVerbose(Sender: TObject; Message: string); procedure UIBbcVulcainVerbose(Sender: TObject; Message: string); private { Déclarations privées } public { Déclarations publiques } end; var fSauvegarde: TfSauvegarde; implementation {$R *.dfm} uses uMain,udmVulcain; procedure TfSauvegarde.aInitVariablesExecute(Sender: TObject); begin eVLC.Text:=dmVulcain.UIBdbVulcain.DatabaseName; eFBK.Text:=fMain.vSave; //variables de Sauvegarde UIBbcVulcain.LibraryName:=dmVulcain.UIBdbVulcain.LibraryName; UIBbcVulcain.UserName:=dmVulcain.UIBdbVulcain.UserName; UIBbcVulcain.PassWord:=dmVulcain.UIBdbVulcain.PassWord; //JvUIBbcVulcain.Host:=fMain.vFBHost; if dmVulcain.vProtocol='proLocalHost' then UIBbcVulcain.Protocol:=proLocalHost; if dmVulcain.vProtocol='proTCPIP' then UIBbcVulcain.Protocol:=proTCPIP; if dmVulcain.vProtocol='proNetBEUI' then UIBbcVulcain.Protocol:=proNetBEUI; //variables de restauration UIBrVulcain.LibraryName:=dmVulcain.UIBdbVulcain.LibraryName; UIBrVulcain.UserName:=dmVulcain.UIBdbVulcain.UserName; UIBrVulcain.PassWord:=dmVulcain.UIBdbVulcain.PassWord; //JvUIBrVulcain.Host:=fMain.vFBHost; if dmVulcain.vProtocol='proLocalHost' then UIBrVulcain.Protocol:=proLocalHost; if dmVulcain.vProtocol='proTCPIP' then UIBrVulcain.Protocol:=proTCPIP; if dmVulcain.vProtocol='proNetBEUI' then UIBrVulcain.Protocol:=proNetBEUI; // dialogue odOpen.Filter:='Base de donnée Vulcain|*.VLC' ; sdSave.Filter:='Sauvegarde Vulcain|*.FBK' ; end; procedure TfSauvegarde.bbRestaurationClick(Sender: TObject); begin dmVulcain.UIBdbVulcain.Connected:=false; with UIBrVulcain do begin Database:=eVLC.Text; BackupFiles.Clear; BackupFiles.Add(eFBK.Text); mLog.Clear; try Run; except on E:Exception do mLog.Lines.Add('problème :'+E.Message); end; end; end; procedure TfSauvegarde.bbSauvegardeClick(Sender: TObject); begin dmVulcain.UIBdbVulcain.Connected:=false; with UIBbcVulcain do begin Database:=eVLC.Text; BackupFiles.Clear; BackupFiles.Add(eFBK.Text); mLog.Clear; try Run; except on E:Exception do mLog.Lines.Add('problème :'+E.Message); end; end; end; procedure TfSauvegarde.BitBtn1Click(Sender: TObject); begin if odOpen.Execute then eVLC.Text:=odOpen.FileName; end; procedure TfSauvegarde.BitBtn2Click(Sender: TObject); begin if sdSave.Execute then eFBK.Text:=sdSave.FileName; end; procedure TfSauvegarde.FormClose(Sender: TObject; var Action: TCloseAction); begin Release; end; procedure TfSauvegarde.FormCreate(Sender: TObject); begin aInitVariables.Execute; end; procedure TfSauvegarde.UIBbcVulcainVerbose(Sender: TObject; Message: string); begin mLog.Lines.Add(Message); end; procedure TfSauvegarde.UIBrVulcainVerbose(Sender: TObject; Message: string); begin mLog.Lines.Add(Message); end; end.
et avec fbembed.dll en monoposte
restriction,
la source du back up doit être sur le serveur Firebird
la destination du restore doit être sur le serveur Firebird
Cordialement
pas besoin de IBExpert (que je n'utilise pas d'ailleurs je lui préfére flamerobin et occasionnellement workbench)
deux solutions au moins :
Utiliser GBAK , commande en ligne fournie par Firebird
quand j'ai un doute d'utilisation de GBAK je retourne voir cette page que je trouve bien réalisée
ou
utiliser les UIB (composant UIBbackup et UIBRestore) ce qui implique un peu de programmation (mais si peu) et comme l'a déjà indiqué alheuredudejeuner
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonjour,
C'est ce que je fais moi même et ça fonctionne nickel.
Tu en es où ?
Car si j'en crois cette erreur :
...c'est le chemin vers ta BD qui est incorrect, il ne la trouve pas sur ton "PC hôte". Comme "C:\Temp" n'existe pas forcément (tu installes ta BD où ?), le plus simple est de la mettre dans le dossier de ton appli et d'indiquer le chemin dans ton code par :unavailable database
Unsuccessful execution caused by an unavailable ressource.
Error Code: 55
Code : Sélectionner tout - Visualiser dans une fenêtre à part base.DatabaseName:=ExtractFilePath(Application.ExeName) + 'cahier.fdb';
Quant au backup/restore je dirais qu'il n'est pas nécessaire mais il faut bien veiller à arrêter le serveur Firebird avant de copier, transférer.... ton fichier BD, sinon il risque fort d'être corrompu.
Pour ce faire : Panneau de configuration > Services
Oui, mais c'est incontournable, car il ne fait pas que copier une sauvegarde de la base, il la vide également de son cache, de plus c'est le seul moyen de migrer d'une version de Firebird à une plus récente. Et à ce moment là, firebird permet la sauvegarde à chaud sans éteindre l'application.Quant au backup/restore je dirais qu'il n'est pas nécessaire
A un moment ou un autre du processus de développement ces deux fonctions seront indispensables pour que l'utilisateur sauvegarde ses données, et pour qu'il les restaure, comme avec n'importe qu'elle application commerciale ou non.
Quand au chemin de la base de données, j'ai beaucoup galéré au début, et j'ai du faire un gros travail pour l'écrire en dur par rapport à mon exe....c'est le chemin vers ta BD qui est incorrect
Cordialement
André
Ouillouillouillouillouille...
En tout cas merci à tous de me donner un coup de main mais je n'y arrive toujours pas.
J'ai donc essayé les différentes solutions:
1) Le backup / restore de la BD
Sauf que la syntaxeUtiliser GBAK , commande en ligne fournie par Firebird
me retourne l'erreur "your user name and password are not defined..." malgré mes essais de majuscules / minuscules et avec / sans guillemets .
Code : Sélectionner tout - Visualiser dans une fenêtre à part gbak -v -t -user SYSDBA -password "masterkey" c:\temp\cahier.fdb c:\temp\export.fbk
2) Copier / coller la BD
Ca marche pô non plus .arrêter le serveur Firebird avant de copier, transférer
3) Vérifier les chemins de la BD
J'ai ajoutéc'est le chemin vers ta BD qui est incorrect
mais ça ne change rien .
Code : Sélectionner tout - Visualiser dans une fenêtre à part base.DatabaseName:=ExtractFilePath(Application.ExeName) + 'cahier.fdb';
4) Changer de dll
J'ai ajouté à mon petit bout de code plus haut ça:
a) Quand je saisis un nom bidon j'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part base.LibraryName:=inputbox('Export','Library Name','');
Ça, pour une fois, c'est normal.Can't load library: bidon
b) Quand je saisis fbclient.dll j'obtiens
c) Quand je saisis fbembed.dll j'obtiensunavailable database
Unsuccessful execution caused by an unavailable ressource.
Error Code: 55
d) Quand je saisis "j'en peux plus, ça fait 2 semaines que je suis au point mort" j'obtiensunsupported on -disk structure for file c:\temp\cahier.fdb; found 32779, support 10
can't format message 13:180 -- message system code -4
Error code: 59
Firebird est donc sans pitié et dépourvu d'humanisme...Can't load library: j'en peux plus, ça fait 2 semaines que je suis au point mort
Pas normal tout ca ?!!
n'y aurait t-il pas un interbase trainant quelque part ?
le service firebird est-il bien démarré ?
un antivirus/firewall ne bloquerait-il pas l'accés au port 3050 ?
si tu n'as pas changé les user et mdp d'une installation fiebird 'classique' cela devrait pourtant fonctionner
un test avec soit QLI , soit un GDI quelconque (ibexpert, flamerobin , workbench etc ....) fonctionne ?
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
pour fbembed
Créer un projet vierge
régler le chemin de compilation dans les propriétés du projet, dans le répertoire de firebird embeded. Mettre la base de donnée à l'intérieur de ce même répertoire.
dans la form principale initialiser les variable
UIBdbMabase est un TUIBDatabase
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TfMain.aInitVariableExecute(Sender: TObject); begin adAppli:=ExtractFilePath(Application.ExeName); adUserPath:=GetUserApplicationDataPath+'MonProjet\'; adBDD:= adUserPath+'mabase.fdb'; with UIBdbMabase do begin LibraryName:=adAppli+'fbembed.dll'; DatabaseName:=fMain.adBDD; UserName:='SYSDBA' ; PassWord:='masterkey' ; end; end;
attention UIBdbMabase.connected doit être à false pour la compilation
dans les uses j'ai ajputer GZChkDir, de la suite de Frederic Guillien.
adUserPath doit pouvoir se régler de différente manière, j'ai choisi la facilité
ensuite tu branches un uibdataset + un uibtransaction, tu renseignes les propriétés datasource database et select
ensuite branches un datasource et un dbgrid pour voir
tu ajoutes un bouton
dans le onclick tu met le code suivant
voilà ça devrait le faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mondataset.open;
Si ça ne prends toujours pas, poste ta base de donnée avec une table et deux ou trois enregistrement, je te fais un exemple, avec D2009, mais ca devrait migrer facile sous D2010.
Cordialement
André
J'ai déjà eu ce genre de souci avec les utilitaires en ligne de commande
Du coup je gère tout par Database Workbench, IBExpert, Flamerobin...
Il ne trouve pas le fichier DB.
Là ça ressemble à un conflit de version !! Ton fbembed est il 2.1, 2.5 ?
Je manque malheureusement de temps pour essayer toutes les solutions et puis j'avoue que je baisse un peu les bras .
Le fbembed est fourni avec Firebird 2.5 (il semble que ce soit la version 1.5.2.4731 du 18/12/2005).Là ça ressemble à un conflit de version !! Ton fbembed est il 2.1, 2.5 ?
Meu non, toujours pas. Il ne supporte pas le fbembed. Par contre fbclient passe bien mais pas quand je le change de PC .voilà ça devrait le faire
Je vais revoir du coté de ma base de données et sinon si ça ne marche pas contourner le problème et exporter la BD sous forme de fichier (type .txt) et l'importer dans une BD vierge sur le PC N°2.
je ne développe qu'avec fbembed,Il ne supporte pas le fbembed.
2005, même pas la peine de vérifier, la 2.5 date de la fin de l'année dernière, tu n'as pas la bonne dll.(il semble que ce soit la version 1.5.2.4731 du 18/12/2005).
Tu passes à coté de l'essentiel, je crois que tu ne dois pas être loin de la solution et que c'est juste le premier pas qui te bloque.Je vais revoir du coté de ma base de données et sinon si ça ne marche pas contourner le problème et exporter la BD sous forme de fichier (type .txt) et l'importer dans une BD vierge sur le PC N°2.
relis la réponse de Paradise, elle résume bien tes soucis.
André
ps: bon courage
Ici un petit projet didacticiel que j'ai faits basé sur la base employee.fdb et les compos UIB. c'est juste pour tester l'utilisation en mode client/serveur et en mode embeeded de FireBird 2.5
NB :
- Il est necessaire d'avoir le serveur Firebird 2.5 pour tester le mode Client/Serveur.
- J'ai déjà inclus les lib et fichiers nécessaires pour le mode Embeeded.
Voici le lien si vous voulez le télécharger.
http://www.multiupload.com/DEOG6QTAWB
A+
On progresse .....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager