jderf
Messages postés189Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention 2 octobre 2014
-
16 oct. 2012 à 11:23
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 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.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 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!
jderf
Messages postés189Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention 2 octobre 20141 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 !!
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 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.
jderf
Messages postés189Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention 2 octobre 20141 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.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 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.
jderf
Messages postés189Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention 2 octobre 20141 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 !
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 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.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 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.