Dbexpress ou TIBcompo avec FireBird

Résolu
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 - 16 oct. 2012 à 11:23
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 18 oct. 2012 à 18:37
Bonjour,

Après plus d'un an de galère avec le couple Delphi7-Mysql5, j'abandonne. Bug avec les compo Dbexpress, fonctionnement du serveur embedded, pb de driver etc.. J'ai des requêtes dans tous les sens pour contourner les problèmes, mais trop c'est trop. Mon projet comporte plus de 10 000 lignes, presque de 2 ans de hobby .

Je migre donc ma base sur Firebird 1.5.

J'ai plusieurs questions :

- Les compo Dbexpress de Delphi 7, fonctionne t-il bien avec FireBird 1.5 ?. J'ai fait quelques tests et cela semble Ok, mais avant de me lancer dans la réécriture de mon code, si une personne qui a de l'expérience avec le couple D7-Firebird1.5-Dbexpress peut me confirmer. Merci

- TIB compo de la D7 sont fait pour Interbase 6, sont-ils fiable avec FireBird1.5 ?


Merci beaucoup pour votre aide, je veux faire le bon choix cette fois.

Jean

13 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
16 oct. 2012 à 17:08
En effet, je viens de me rappeler que j' avais essayé de t' aider ...

Je crois savoir ce qui pose problème est comment le résoudre et t' éviter de changer de base de données sachant que tu aurais de toute façon le même souci je pense:
Ayant crée le compo TcyDbxSimpleTable (TSimpleDataset modifié), je me suis vite rendu compte qu' il n' était pas exploitable si je voulais faire des modifications avec ce compo (je suis actuellement en train de chercher une solution). Le problème viens du fait que l' on ne peut pas ajouter en design-time les champs du query afin d' accéder aux ProviderFlags.
Pire encore, il faudrait laisser le query toujours sur Active mais le propre compo ferme le query sans que l' on puisse refaire les attributions de providerFlags par code. Ça veut tout simplement dire que l' affectation de ProviderFlags dans les champs du query ne seront pas pris en compte au moment d' appeler ApplyUpdates!!!

Ton problème étant similaire (tu utilises un TSQLQuery + TdatasetProvider + TClientDataset), il est simple de résoudre le souci en ajoutant tous les champs dans le TSQLQuery et modifier le champ ProviderFlags et Required en design-time ... Voilà!

Encore une chose, utilise mon TcyDbxTable au lieu du TClientDataset: tu auras alors accès à des propriétés de mises à jour automatiques!

A+


Composants Cindy pour Delphi
Faites une donation.
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 oct. 2012 à 11:32
Bonjour,

Je migre donc ma base sur Firebird 1.5.

NON !

prends la 2.5

et utilise des compos dédiés à Firebird..

FireBird, c'est génial..

cantador
0
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
16 oct. 2012 à 12:10
Bonjour Cantador,

Le problème c'est que je travaille avec la D7, je me suis donc dit que la 1.5 date à peu près de l'époque d'Interbase 6, donc la compatibilité avec la D7 sera meilleur. Je veux surtout pas prendre de risque et me retrouver dans la même galère.

Après, je veux pas investir plus de 100 € dans des compo, c'est un passe-temps. Y'a t-il moyen, d'avoir D7 - FireBird2.5 et compo free ou peu cher ?

C'est vrai, que FireBird c'est cool, 4 petits fichiers et hop un serveur embedded !!

Merci.
Jean
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
16 oct. 2012 à 14:55
Salut,

à part une poignée de dlls, mySQL est très simple à déployer!
J' utilise MySQL 5.X avec Delphi 2009 (j' ai même crée des compos hérités des compos DB Express qui sont dans le link juste en bas) et je ne pouvais espérer mieux!
Donc, je pense que les problèmes que tu évoques sont soit d' une vieille version de mySQL ou bien cela provient du fait d' être sous Delphi 7 (pour ne pas mettre en cause des capacités) ...

mySQL est une base de données efficace, stable et gratuite! L' appli Workbench te permet une administration du serveur très simple.

En ce qui concerne l' utilisation de TSQLQuery + TDatasetProvider + TClientDataset, j' avoue que j' ai un peu galéré aussi.
Ensuite, il y a le problème d' envoyer les updates + mise á jour du curseur. C' est pourquoi j' ai crée le TcyDbxTable (qui remplace le TClientDatset) qui permet les Updates automatiquement ainsi que le refresh des enregistrements.

Pourrais-tu en tout cas préciser tes problèmes?


A+

PS: j' ai testé firebird avant d' adopter mySQL mais le manque d' une bonne appli d' administration m' a fait adopté mySQL.
Je te fait remarqué aussi que mySQL est une meilleure option aujoudr'hui mais aussi pour le futur.


Composants Cindy pour Delphi
Faites une donation.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
16 oct. 2012 à 15:02
Bonjour,

pour ajouter au débat, tu peux utiliser ZeOs pour accéder à Firebird, pas besoin de DLL, c'est OpenSource, rapide,
efficace, et multi-database.

ici

Luc.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 oct. 2012 à 23:47
il y aussi les compos TIBO stables
peut-être sont-ils free maintenant ?


cantador
0
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
17 oct. 2012 à 10:31
Bonjour à tous,

@Cantador,
Je vais regarder, c'est compos merci.

@Mauricio,
Sauf erreur de ma part, dans la D7 en design-time, on n'a pas accès à la propriété Fields, donc pas possible d'ajouter les champs et de modifier le ProviderFlags !?

Sinon, j'ai fait le test avec FireBird et j'ai effectivement la même erreur.

Merci encore de ton aide
A+
Jean
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
17 oct. 2012 à 10:43
"Sauf erreur de ma part, dans la D7 en design-time, on n'a pas accès à la propriété Fields"
Faux!

Alors tu fais un double click sur ton TSQLQuery, ce qui va ouvrir une petite fenêtre représentant ta table. Il ne te reste plus qu' à y faire un click droit pour faire apparaitre un PopMenu.

A+


Composants Cindy pour Delphi
Faites une donation.
0
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
17 oct. 2012 à 13:36
Merci Mauricio c'est trés sympa de ta part.

Je fais le test ce soir et je te fais un retour.

A+
Jean
0
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
17 oct. 2012 à 20:40
Mauricio,

Comme tu le pensais, l'erreur se produit aussi bien avec FireBird qu'avec Mysql.

Par contre, en mettant les fields en design-time le problème est résolu avec firebird.
J'ai pas bien compris ton explication sur le pourquoi ça ne fonctionne pas Run-time et que cela fonctionne en Design-time.

J'ai pas pu tester avec Mysql, le "Add Fields" provoque une erreur en design-time, j'obtient un message d'erreur avec ma libraryname "dbxopenmysql50". Je laisse tomber Mysql, jusqu'au jour ou j'aurai une version plus récente de delphi.
C'est Cantador qui va être content ! Quoique avec toutes les questions à venir !

Merci
Bonne soirée.

Jean
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
17 oct. 2012 à 23:02
oui oui je ne boude pas mon plaisir..


Cela dit, MySQL est une très bonne base également que j'utilise en Web serveur.
et je pense qu'il doit s'agir d'un tout petit souci...

Mais c'est vrai que j'ai un faible pour Firebird avec laquelle j'ai beaucoup travaillé.

puissante et solide

cantador
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
18 oct. 2012 à 10:08
Je ne me fâche pas ...
Je précise simplement que la solution que j' ai donnée fonctionne aussi pour mySQL.

Pour faire simple, le fait d' ajouter des champs en design-time permet de pouvoir modifier leurs propriétés (que ce soit en design-time ou par code) sans que cette information ne se perde au moment de faire ApplyUpdates.

A+


Composants Cindy pour Delphi
Faites une donation.
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
18 oct. 2012 à 18:37
Salut,

je viens de sortir la nouvelle version des compos Cindy qui passe en 5.09.2.
Au programme, le TcyDbxSimpleTable gère automatiquement les ProviderFlags (en faisant un DESCRIBE nomTable, je récupère les infos de la clé primaire) si aucun champ ajouté en design-tim, sinon, il applique les valeurs trouvées dans les champs déclarés.

J' ai donc corrigé le problème cité plus haut.
Si la commande describe existe sur firebird, le compo est 100% compatible avec celui-ci.

A+


Composants Cindy pour Delphi
Faites une donation.
0
Rejoignez-nous