Dbexpress ou TIBcompo avec FireBird [Résolu]

Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
- - Dernière réponse : cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
3
Merci
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.

Merci cs_MAURICIO 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de cs_MAURICIO
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
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
Commenter la réponse de cs_cantador
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
0
Merci
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
Commenter la réponse de jderf
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
0
Merci
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.
Commenter la réponse de cs_MAURICIO
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
0
Merci
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.
Commenter la réponse de beckerich
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
0
Merci
Bonjour Mauricio,

Comme je l'ai bien précisé, c'est le couple D7-Mysql5 qui est en cause et non mysql.

Je connais très bien les capacités, l'administration et le language SQL de Mysql. A titre pro, je fais régulierement des scripts en language SQL pour SQL server, Informix, Mysql sur environnement windows et linux pour l'administration et la maintenance de bases.

Pour mes dev perso, être sur FireBird ou Mysql n'a pas d'importance, par contre avoir des compos qui fonctionnent à 100% c'est essentiel. Ne voulant pas acheter une version plus récente de Delphi, j'ai pas le choix.

Les problèmes ICI voir mon dernier message
J'ai déja plusieur fois contourné les bugs D7-Mysql5.

J'avais un temps envisagé de mettre un Mysql 3, mais FireBird 1.5 fera aussi bien l'affaire.

La chaine TSQLconnxion + .. + TDataSetProvider + TClientDataSet + TDataSource fonctionne avec FireBird, cela limitera donc la retouche de mon code.

Merci, A+
Jean
Commenter la réponse de jderf
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
il y aussi les compos TIBO stables
peut-être sont-ils free maintenant ?


cantador
Commenter la réponse de cs_cantador
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
0
Merci
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
Commenter la réponse de jderf
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
0
Merci
"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.
Commenter la réponse de cs_MAURICIO
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
0
Merci
Merci Mauricio c'est trés sympa de ta part.

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

A+
Jean
Commenter la réponse de jderf
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Dernière intervention
2 octobre 2014
0
Merci
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
Commenter la réponse de jderf
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
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
Commenter la réponse de cs_cantador
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
0
Merci
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.
Commenter la réponse de cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
0
Merci
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.
Commenter la réponse de cs_MAURICIO

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.