IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

[XE7] Accès à une base MariaDB


Sujet :

Composants FMX Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut [XE7] Accès à une base MariaDB
    Bonjour,

    je cherche des cours sur la gestion des bases en FMX... Je galère. La base que je veux atteindre est hébergée sur un serveur Nux MariaDB 64.

    Le principe est celui-ci -> A l'ouverture du projet, je remplis une base SQLite:memory: identique à la MariaDB (la différence de gestion des quote SQLite/MariaDB est prise en compte, UTF-8, même collate). L'affichage (les dbXXXX) est basé sur cette base SQLite. Lors d'une modification d'un enregistrement par exemple, j'utilise 2 transactions : une sur ma base distante MariaDB, une sur la SQLite.
    Alors voici les résultats obtenus :
    • Delphi VCL : OK
    • Lazarus Nux (32 et 64) : OK (anecdotique)
    • Delphi FMX Windows : OK.
    • Delphi FMX OS X : SQLite : OK - MariaDB : No (pas d'erreur signalée mais non )
    • Qt 5 : Win/Nux : OK mais surtout OS X (même appareil que celui utilisé comme cible par Delphi) : OK

    OS X est en 64 bits. Avec la cross-compilation Delphi... il ne se passe rien... Le programme part dans une boucle infinie lors de la connexion à la base MariaDB
    Si j'utilise un fichier SQLite.db, au lieu d'un SQLite:memory (MariaDB-> SQLite:memory: -> SQLite.db créé avec Qt sous OS X), le projet cross-compilé lit le SQLite.db sous OS X. Bref, l'accès à SQLite est correct, mais celui à MariaDB ne l'est pas. Je reporte le problème depuis pas mal de temps, mais il va bien falloir le résoudre... un jour ! J'ai googolé, j'ai relu la doc... Rien sur ce genre de prob... Et la cross-compilation, ce "truc" partiellement aveugle et muet, m'exaspère... Je viens de m'en reprendre une petite dose...

    Je ne sais même plus quoi engager comme test maintenant. Qu'est-ce qui peut faire que
    1. depuis mon Mac Mini OS X l'accès à la base MariaDB hébergée sur le serveur linux distant avec Qt 5 est possible,
    2. qu'il ne l'est pas avec le même poste en cross-compilant avec Delphi
    3. mais que l'accès à une base SQLite locale dans les mêmes conditions [2] l'est
    4. et que -cerise sur le gâteau-, le même programme FMX Windows atteint aussi bien la SQLite que la MariaDB

    Un début d'idée. N'importe quoi, je suis preneur ?
    Dernière modification par Invité ; 17/02/2015 à 12h47.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 169
    Points : 41 353
    Points
    41 353
    Billets dans le blog
    63
    Par défaut
    Bonjour Gilles,

    je ne peux avancer que des hypothèses mais à mon avis c'est ton client MariaDB sur Mac qui déconne (pas forcément la dll mais la liaison par les composants).
    D'ailleurs quels composants utilises-tu ? FireDac,DBExpress ?

    NB. Je viens de lire que FireDac+Maria DB v10 n'était pas supportée sauf via ODBC

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Serge,

    Citation Envoyé par SergioMaster Voir le message
    D'ailleurs quels composants utilises-tu ? FireDac,DBExpress ?
    FireDac.

    Citation Envoyé par SergioMaster Voir le message
    Je viens de lire que FireDac+Maria DB v10 n'était pas supportée sauf via ODBC
    Oui et la version 5 n'est que tolérée. Il n'y a pas de Drivername spécifique.

    Mais je pense en effet, non pas que mes librairies clientes font défaut -j'ai essayé aussi bien avec des librairies clientes mySQL que MariaDB- mais qu'il existe une incompatibilité entre FireDac et MariaDB sous OS X.

    Tout cela, c'est de la faute de Nux J'ai été obligé de migrer mes bases sur un MariaDB parce que mes bases (initiées en mySQL 4) n'étaient plus compatibles avec des Ubuntu par exemple (pas de paquets clients spécifiques et les drivers 5 ne sont pas compatibles avec les 4).
    J'aurais pu retenir MySQL 5 mais la licence m'a paru "incompatible".

    Bref, je suis actuellement totalement coincé en Delphi... par ce problème sous OS X... et il m'est encore (toujours) impossible de gérer nativement de manière simple mes (Blobs) champs HTML... même avec TMS. OK pour les grids mais je n'ai pas trouvé de solution efficace pour importer directement ou non du HTML dans des TMemos ou TEDits... Le TAdvRichEditor "Loads text from .TXT and .RTE files". Il est prévu l'import HTML dans une prochaine version sans plus de précision... Donc, on va attendre tranquillement les prochaines versions : XE8, TMS et FastReport (pour l'impression du HTML en FMX). J'ai de quoi m'occuper en attendant avec Delphi Tu as un lien pour déclarer une suspicion de bug ? Je vois bien dans le menu Aide Page support Développeurs Embarcadero mais rien qui ressemble au bug tracker de Lazarus. Elle est où la page miracle ?

    Bonne journée.
    Dernière modification par Invité ; 18/02/2015 à 10h12.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 169
    Points : 41 353
    Points
    41 353
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par selzig Voir le message
    Tout cela, c'est de la faute de Nux J'ai été obligé de migrer mes bases sur un MariaDB parce que mes bases (initiées en mySQL 4) n'étaient plus compatibles avec des Ubuntu par exemple (pas de paquets clients spécifiques et les drivers 5 ne sont pas compatibles avec les 4).
    J'aurais pu retenir MySQL 5 mais la licence m'a paru "incompatible".
    je dis peut être une connerie , ou fais du prosélytisme, mais puisque Ubuntu il y a pourquoi ne pas utiliser Firebird : nickel sur linux (d'expérience), avec tu n'auras pas de problème de licence, les problèmes inhérents à mySQL de << dixit SQLpro et les incompatibilités avec OSX je pense (Interbase/Firebird même combat).

    pour ce qui est de l'affichage HTML par contre, je n'ai que peu d'expérience à ce sujet on n'utilise pas dans ma boite (sauf moi bien sûr, et encore de manière sporadique pour l'intraweb) il me semble quand même que via un composant permettant d'afficher des pages web il devrait être possible d'afficher correctement le truc (je n'ai pas suivi les évolutions FMX dans ce domaine mais as-tu essayé cette piste ?)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pour FireBird, en général les exécutables sont des back office. Le front office est soit en PHP soit en Webdev... Et puis ton FireBird, il fonctionne "sous" Androïd ?

    Pour le HTML, j'en ai besoin pour les sites mais aussi pour mes applis : un bulletin scolaire avec des annotations colorées, soulignées... Un logiciel d'organisation où des mots peuvent être mis en évidence... On est au 21ème siècle. Les imprimantes couleur sont légions. Pour afficher je n'ai pas (trop) de problèmes. C'est pour éditer que cela se complique. C'est comique parce que en Lazarus, j'ai ce composant : il y en a même 2. Par contre, l'affichage dans des Grids est inexistant.
    Dernière modification par tourlourou ; 19/02/2015 à 09h43.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 169
    Points : 41 353
    Points
    41 353
    Billets dans le blog
    63
    Par défaut
    Firebird (fork d'INterbase) est une SGBDR au même titre MySQL, Oracle etc... tu confonds avec Firefox (tout ça c'est du feu).
    Si Firebird, vrai opensource(contrairement a mysql), est peu cité/connu/utilisé c'est parce que peu (voire pas) d'hébergeurs le propose et que beaucoup pensent que MySQL est le nec+ultra de la SGBDR

  7. #7
    Invité
    Invité(e)
    Par défaut
    Non, je n'ai pas l'impression de confondre : FireBird, j'ai un peu connu. J'ai pratiqué un peu la 1.5 et la 2.0 (d'ailleurs incompatibles). Mais mySQL 4.0 et 5.0, ce n'est pas mieux à ce niveau... et même dans la déclinaison des versions de la 5, il y a problème. J'avais également un problème de browser (un équivalent de phpmyadmin). Non, ce que j'ai rencontré de mieux, à tous les niveaux, vraiment, c'est pgSQL. Même problème de confidentialité que FireBird et peut être moins permissif que MySQL. Mais par exemple en Webdev, trouver un hébergeur qui a installé le driver client postgreSQL sur ses serveurs est très difficile au point que j'y ai renoncé.

    J'ai refait un essai en 2012 : http://www.developpez.net/forums/d12...utf8-pourquoi/... Bref cela résume parfaitement mon "différent"... Pfffffffff Quelle prise de tête... Toutes mes bases actuelles (MariaDB, pgSQL, SQLite -obligatoirement en UTF-8, Hyperfile) utilisent des chaînes comme clés primaires. C'est curieux, inhabituel mais pas interdit... et cela a une utilité pour moi.

    Quand je parle d'Androïd, je me demande comment on se connecte à partir d'une application cliente à une base distante FireBird. Pas directement, c'est clair.

    Je sais que tu es très "FireBird" mais autant j'ai pu facilement m'adapter de MySQL à PostgreSQL notamment au niveau de la gestion de mes serveurs, autant, je n'ai pas pu me faire à celle de FireBird. Mauvaise doc ? Je ne sais pas.

    A un moment, il faut évacuer (ie traiter) les problèmes pour que ton travail avance et soit exploitable. Mais dans mon cas, il faut rester ouvert à d'autres solutions des fois que Lazarus, Delphi, Windev ou Qt serait (deviendrait, resterait ?) une impasse. Les bases PCSoft HyperFile sont très pratiques et fonctionnent bien (j'ai 2 serveurs hébergés, un Debian 64 et un Win2008 R2)... Mais avec autre chose qu'un produit PCSoft, il faudrait que j'utilise ODBC de manière hypothétique pour y accéder. C'est une solution potentiellement non pérenne à court et moyen termes. Je pense qu'Interbase/FireBird, c'est du Borland. Je n'ai pas de driver 64 en Windev. Je suppose qu'il faut recompiler Qt pour l'utiliser si c'est faisable.... Et pour avoir recompilé Qt dans divers OS, c'est des heures de boulots sans garantie de plein succès. Bref, je ne sais pas si c'est le PPCM ou le PGCD de ma problématique : MariaDB et éventuellement PostgreSQL sont mes choix. Mais je suis sûr que dans mon cas précis avec Delphi, FireBird ferait très bien l'affaire... sauf que pour l'instant, je connais 2 plateformes qui gèrent correctement le HTML : Qt 5 à tous les niveaux et nativement et Windev/Webdev avec quelques corrections pour le premier cité... Et pas Delphi... pour le moment. Et les 2 solutions "complètes" gèrent proprement MariaDB (il y a même maintenant un driver spécifique dans la version 20 de Windev). Donc, on (ie je) va tenir bon sur ces choix en attendant que Delphi et ses produits compagnons évoluent un peu... On n'en est pas loin. C'est dans les annonces. Comme tu l'écrivais : vivement XE8
    Dernière modification par Invité ; 18/02/2015 à 11h09.

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 169
    Points : 41 353
    Points
    41 353
    Billets dans le blog
    63
    Par défaut
    Bon, j'ai relu la discussion pointée et ne vois pas le problème
    utilisent des chaînes comme clés primaires. C'est curieux, inhabituel mais pas interdit... et cela a une utilité pour moi.
    ce n'est pas si curieux ni inhabituel que tu le laisses penser sauf que une bonne pratique SGBD conseille plutôt d'avoir un clé Primaire numérique avec des Index (uniques à l'occasion) sur les chaines . Cette bonne pratique a de nombreux avantages (d'expérience encore une fois) mais on part sur du hors sujet je pense.

    le choix de la SGBD c'est aussi une question de moyen/matériel (j'avais cru comprendre que la base était sur un ordinateur "interne" et non chez un hébergeur d'où ma suggestion)
    le choix du langage y fait aussi beaucoup (contrairement à toi je n'ai pas le temps de tester sur plusieurs langages/EDI différents, productivité oblige)

    Quant au HTML je pense que le WebBrowser pourrait être une solution seul défaut : il faudrait passer par un fichier intermédiaire contrairement au composant classique. Dans le principe : Copier le blob dans un stream, sauvegarder le stream dans un fichier temporaire, afficher le fichier via le webbrowser
    c'est jouable ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Pour FireBird, on ne reprend pas la discussion. Mon choix est fait. Pour les clés primaires pareil.

    Pour le webbrowser, c'est simplement un composant d'affichage mais pas de saisie. Je cherche l'équivalent de ce que je suppose être le TMS TAdvRichEditor.

    Pour faire simple (en Qt) et cela l'est vraiment à ce niveau, voici la base de travail qui m'a interpellé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
       ui->setupUi(this);
       ui->te->setHtml("Voici un <a href='http://#'>lien</a>. Il ne mène nulle part...");
       ui->te->setFocus();
    }
    Pièce jointe 169365
    Tu vois, rien de plus simple au niveau de l'affectation du code HTML dans le QTextEdit.... A partir du setFocus(), j'ai la main sur le texte. Ensuite quelques boutons, pour la mise en page (alignements, couleur de la fonte, couleur du fond, puce, gras,....)
    Donc je résume ce dont j'ai besoin : BLOB (HTML) -> Composant graphique dans lequel je peux importer du HTML (ou/et saisir et modifier le texte) et grâce à quelques boutons enrichir ce dernier...
    Puis exportation en HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QString message =ui->te->toHtml();
    qDebug() << "HTML" << message;
    HTML "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    <html><head><meta name="qrichtext" content="1" /><style type="text/css">
    p, li { white-space: pre-wrap; }
    </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Voici un <a href="http://#"><span style=" text-decoration: underline; color:#0000ff;">lien</span></a>. Il ne <span style=" font-weight:600;">mène nulle</span> part...</p></body></html>"
    Là, en Windev, comme en Qt, j'utilise les RegEx pour ne sélectionner qu'entre les balises <body></body> exclues évidemment (mais cela se fait très bien aussi en Delphi et Lazarus)... et supprimer quelques balises superflues.

    Bon, je ne vais pas continuer à mettre du Qt partout... dans un forum FMX . Le problème actuel de TMS est qu'on ne peut pas importer du HTML dans les TAdvRichEditor. Et donc, on ne peut pas y afficher le contenu du blob .
    Dernière modification par Invité ; 18/02/2015 à 15h34.

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 169
    Points : 41 353
    Points
    41 353
    Billets dans le blog
    63
    Par défaut
    Est-ce que RichView XML ferait l'affaire ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour Serge,

    je ne sais pas trop. Cela s'installe comment ces composants où on ne fournit qu'un RVXMLDXE7.dpk et RVXMLDXE7.dproj comme point d'entrée : au mieux mon Delphi XE7 se plante ! Est-ce parce qu'il s'agit de versions trial ? Est-ce une fragilité de mon XE7 ? un bug ?
    J'avais déjà essayé avec http://www.trichview.de/resources/

    Mais je n'ai jamais pu installer TRichView... ... Je viens d'installer le vieux portage sous Lazarus (installation nickel en quelques secondes). C'est un composant d'affichage et non de saisie. Les add-on (en version Windows) lui donneraient cette capacité de pouvoir modifier directement le texte ?
    Je regarderai plus tard. On est vraiment loin de la conversation d'origine et de FMX. Si besoin, j'ouvrirai une autre discussion. Je crois que si l'importation directe en HTML tarde, la seule solution avec Delphi reste le TMS RichEditor (aussi bien d'ailleurs en VCL qu'en FMX). Je doublerai le champ dans les tables (RTE et HTML). Comme de toute façon, les champs en back office ne sont modifiés que dans ce type de composants, je suppose qu'on peut les "recharger" en RTE. Je reprends contact avec eux pour confirmation.

    Merci pour ton aide. Bonne journée.

    PS : Pour en terminer avec les bases (la discussion d'origine) :
    1. C'est bien un problème FireDac/MariaDB (pas 10 mais 5.5.40). J'ai installé sur un serveur local un MySQL et un MariaDB de la même version que mon serveur dédié. Résultat des courses : la connexion avec le projet FMX/OS X est possible avec MySQL et impossible avec MariaDB.
    2. On signale où les bugs ?
    Images attachées Images attachées  
    Dernière modification par Invité ; 19/02/2015 à 11h26.

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 169
    Points : 41 353
    Points
    41 353
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    as-tu essayé d'attaquer avec d'autres composants que Firedac ?
    je pense par exemple à DBExpress voire les ZeosDBO ?

Discussions similaires

  1. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  2. Accès à une base Pervasive
    Par david_chardonnet dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/10/2005, 20h53
  3. [SYBASE] Acces à une base SYBASE V12 via VB6
    Par pulley60 dans le forum Sybase
    Réponses: 2
    Dernier message: 23/09/2004, 14h21
  4. Refus d'accès à une base Firebird
    Par severine dans le forum Installation
    Réponses: 18
    Dernier message: 04/06/2003, 16h03
  5. [Dev-C++] Accès à une base MySQL
    Par Beetlejuice dans le forum Dev-C++
    Réponses: 8
    Dernier message: 08/05/2003, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo