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

Bases de données Delphi Discussion :

[Tutoriel] Delphi 2010 : Connexion à Firebird via dbExpress


Sujet :

Bases de données Delphi

  1. #1
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut [Tutoriel] Delphi 2010 : Connexion à Firebird via dbExpress


    Récemment, Embarcadero rendait disponible Delphi 2010 et RAD Studio 2010 avec un lot de nouveautés, dont le support natif de l'excellent SGBD Firebird.
    Fervent adepte de ces derniers, je me suis empressé de faire quelques tests et de vous proposer ce tutoriel :

    Delphi 2010 : Connexion à Firebird via dbExpress

    Vos commentaires et ou questions sont les bienvenus sur ce fil

    A lire aussi :
    Présentation de delphi 2010

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 151
    Points : 82
    Points
    82
    Par défaut
    Sympa ce petit tuto

    Je suis en train de passer a Delphi 2010 mon appli. J'utilisais jusqu'a présent les composants Interbase (IBX).
    Ils ne sont plus compatible avec Firebird ?


    Jai aussi apprécié la petite démo du mode déconnecté en passant par le DataSet XML.

    Par contre, il y a un équivalent des IBEvent en utilisant les DB Express?

    Maxime

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par tipiweb Voir le message
    Sympa ce petit tuto

    Je suis en train de passer a Delphi 2010 mon appli. J'utilisais jusqu'a présent les composants Interbase (IBX).
    Ils ne sont plus compatible avec Firebird ?
    en fait, ils n'ont jamais été officiellement compatibles avec Firebird. Ils fonctionnent juste parce que Firebird est issu d'Interbase 6.

    Citation Envoyé par tipiweb Voir le message
    Jai aussi apprécié la petite démo du mode déconnecté en passant par le DataSet XML.


    Citation Envoyé par tipiweb Voir le message
    Par contre, il y a un équivalent des IBEvent en utilisant les DB Express?
    à ma connaissance, non, il n'y en a pas. il faut savoir que les Events sont des spécificités d'Interbase et Firebird, or dbExpress est lui conçu pour fonctionner avec une plusieurs SGBD. je vais tout de même vérifier.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 151
    Points : 82
    Points
    82
    Par défaut
    Merci bien pour ces précisions evarisnea

    J'utilise les IBEvent pour rafraichir les données seulement si celle-ci ont changé. Lorsque le poste A fait un update sur une table, le poste B reçoit l'ordre de rafrichir les données (via un trigger).


    Connais-tu une astuce pour arriver à ce meme résultat sans faire un rafraichissement toutes les X secondes?


    Si il y a une solution à mettre en place pour arriver à celà, je passe au DbExpress

    Maxime

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    pour l'astuce, oui il y en a une.

    tu utilises un couple TIdUDPServer, TIdUDPClient dans ton application.
    lorsqu'un enregistrement est mis à jour, tu envoie un broadcast avec le client udp avec un message concernant la table et l'opération de mise à jour effectuée (UPDATE, DELETE).
    les autres poste reçoivent le message et effectuent un action selon la mise à jour.

    j'ai vu cela dans un exemple quelque part, je ne me souviens plus où.

  6. #6
    Membre régulier
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 59
    Points : 93
    Points
    93
    Par défaut
    Merci pour le tutoriel ! Effectivement, depuis le temps qu'on l'attendait, cette connexion Firebird !

    Une petite remarque sur la forme : l'excellente partie sur le mode déconnecté devrait être carrément copié dans la FAQ, car elle est valable pour tout type de connexion (DBX, BDE, IBX, et autres).

    Sur le fond, les DBX semblent assez lourd à gérer, ça fait beaucoup de composants à placer pour un pauvre dbgrid. En plus, je suis assez surpris : où sont les transactions ?




    Je plussois pour le client / serveur UDP, même si ça peut poser certains problèmes avec des pare-feu. Un petit bout de code pourri et pas sécurisé :

    Sur le poste qui doit recevoir la mise à jour, tu poses un IdUDPServer et un IdUdpClient.

    Pour le UdpServeur : il nous servira à recevoir l'ordre de rafraichissement. Deux trucs à configurer : le port et l'évènement OnUdpRead, qui contiendra par exemple
    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 TFormServeurUdp.IdUDPServerCommUDPRead(
      AThread: TIdUDPListenerThread; AData: TIdBytes;
      ABinding: TIdSocketHandle);
    var s : string;
    begin
     
    s := String(Adata);
     
    if copy(s,1,3) = 'MAJ'
    then begin
           Dataset.close;
           Dataset.open;
           end
    Le idUpdClient nous servira lui à nous identifier en tant que poste en attente de la mise à jour avec le serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         try
            IdUDPClient.send(ip_serveur,port,'JE SUIS PRET A RECEVOIR DES  MISES A JOUR');
         except on e:exception
         do begin
            showmessage('Erreur de connexion au serveur : '+e.message);
            if IdUDPClient.Connected then IdUDPClient.Disconnect;
            end;
         end;



    Et sur le poste qui vient de faire la mise à jour (le poste "serveur"), tu poses un TidUdpClient et un TidUdpServer.

    Le TidUdpServer nous servira à enregistrer la liste des clients qui sont prêt à recevoir des mises à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TFormClientUdp.IdUDPServerUDPRead(
      AThread: TIdUDPListenerThread; AData: TIdBytes;
      ABinding: TIdSocketHandle);
    var s : string;
    begin
     
    s := String(Adata);
     
    if s = 'JE SUIS PRET A RECEVOIR DES  MISES A JOUR'
    then begin
           liste_ip.append(abinding.ip); // ou abinding.peerip, je sais plus
           end
    Le TidUdpClient nous servira à envoyer les mises à jour. Tu configures ton port et, après ton INSERT / UPDATE / DELETE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for i := 0 to liste_ip -1
         try
            IdUDPClient.send(liste_ip[i],port,'MAJ');
         except on e:exception
         do begin
            showmessage('Erreur de connexion au serveur : '+e.message);
            if IdUDPClient.Connected then IdUDPClient.Disconnect;
            end;
         end;
    Mais bon ce n'est valable que si tu as un serveur bien défini de mises à jour, et pleins de petits clients. Si tous tes postes peuvent faire des mises à jour et tous doivent se rafraichir, je ne crois pas qu'il y ait de solutions miracles (et la tienne me semble pas mal en fait, je vais p'etre l'utiliser).
    ++ khena
    Rien n'est plus beau q'une clé,
    Tant qu'on ne sait pas ce qu'elle ouvre.

  7. #7
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par khena Voir le message
    Merci pour le tutoriel ! Effectivement, depuis le temps qu'on l'attendait, cette connexion Firebird !

    Une petite remarque sur la forme : l'excellente partie sur le mode déconnecté devrait être carrément copié dans la FAQ, car elle est valable pour tout type de connexion (DBX, BDE, IBX, et autres).
    effectivement, cette partie est valable pour tout type de connexion, il suffit que le composant jeu de données dérive de TDataset par exemple. une entrée dans la FAQ, pourquoi pas

    Citation Envoyé par khena Voir le message
    Sur le fond, les DBX semblent assez lourd à gérer, ça fait beaucoup de composants à placer pour un pauvre dbgrid. En plus, je suis assez surpris : où sont les transactions ?
    c'est ce que l'on se dit les premières fois que l'on les utilise, mais on s'y habitue. et de plus on utilise le même code pour toutes les bases des données supportées.
    pour ce qui est des transactions tu peux les gérer manuellement avec un code de ce genre pour DBX < 4 :
    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
    procedure TMainForm.Button1Click(Sender: TObject);
    var
      Tr: TTransactionDesc;
    begin
      SQLConnection1.Open();
      if SQLConnection1.TransactionsSupported then
      begin
        Tr.IsolationLevel := xilREADCOMMITTED;
        SQLConnection1.StartTransaction(Tr);
      end;
      try
        SQLConnection1.Execute('UPDATE Table1 SET Champ1 = Champ1 + 1 WHERE Champ0 = 10', Nil);
        SQLConnection1.Execute('UPDATE Table1 SET Champ1 = Champ1 - 1 WHERE Champ0 = 9', Nil);
        if SQLConnection1.TransactionsSupported then
          SQLConnection1.Commit(Tr);
      except
        if SQLConnection1.TransactionsSupported then
          SQLConnection1.Rollback(Tr);
      end;
    end;
    et pour DBX4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Tr := SQLConnection1.BeginTransaction(TDBXIsolations.ReadCommitted);
      try
        // mises a jour, insertions ici ...
        SQLConnection1.CommitFreeAndNil(Tr);
      except
        SQLConnection1.RollBackFreeAndNil(Tr);
      end;
    et une transaction implicite est démarrée lorsqu'on appelle la méthode ApplyUpdates du TClientDataset.


    Citation Envoyé par khena Voir le message
    ...
    Mais bon ce n'est valable que si tu as un serveur bien défini de mises à jour, et pleins de petits clients. Si tous tes postes peuvent faire des mises à jour et tous doivent se rafraichir, je ne crois pas qu'il y ait de solutions miracles (et la tienne me semble pas mal en fait, je vais p'etre l'utiliser).
    en fait dans la méthode dont je parle, il s'agit d'utiliser un broadcast par poste effectuant une mise à jour, les autres postes pourront donc recevoir la notification et actualiser l'affichage en conséquence (c'est le principe). dans le cas où l'on a une infrastructure avec plusieurs réseaux, la solution que tu émet (la liste des clients) est judicieuse, car les routeurs vont bloquer le broadcast

  8. #8
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    dans le cas où l'on a une infrastructure avec plusieurs réseaux, la solution que tu émet (la liste des clients) est judicieuse, car les routeurs vont bloquer le broadcast
    Sans même aller chercher plusieurs routeurs, les solutions de type broadcast et messages Udp peuvent poser d'autres problèmes : La communication n'est pas sécurisée (au sens fiabilité). Lorsque tu envoies un broadcast ou un message avec un protocole non connecté tel que Udp, rien ne te garanti que les clients le recevrons.

    Si tu as un réseau de mauvaise qualité (genre un marteau piqueur à côté du cable réseau qui vient le parasiter, un WiFi...), il se peut que le client reçoive un message corrompu. Dans ce cas, la corruption est détecté et le message par à la poubelle direct. Ou même, si le client est occupé au moment de recevoir le message, il se peut qu'il parte aux oubliettes.
    Donc il y a toujours un risque qu'un client ne recoivent pas une notification.
    Avec un protocole connecté, de type TCP/IP, le client signale au serveur que le message n'est pas arrivé correctement, et lui demande de le réenvoyer. Mais comme il faut gérer les trames d'acquittement, les échanges sont un peu plus lents.

    A mon avis, l'Udp convient pour un broadcast (avec la fiabilité qui vient avec), mais si on passe à l'étape suivante qui consiste à contacter chaque client individuellement, il vaut mieux le faire en TCP/IP.

  9. #9
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Vaudrait peut être mieux passer en architecture 3 tiers dans ces cas là.

  10. #10
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    salut chaplin, pourrais-tu développer ?

  11. #11
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Bonjour
    just pour dire il faut travailler en mode deconnectée avec ClientDataSet...si la propriete Filename a ete specifiée le contenu du fichier sera enregister dans le DFM qui va produit une appli volumineuse

  12. #12
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    @evarisnea:

    Basculer l'application que tu as réalisé en utilisant Datasnap, c'est à dire passer d'une application client/serveur à une application multi-niveaux.
    La couche intermédiaire(business) se chargerait de transmettre les événements aux applications clientes, pour déclencher le raffraichissement des données.
    Il faudrait utiliser un pattern "Observer" de telle sorte que les applications clientes soient au courant des raffraîchissements (ie IBevent) que la couche logique intercepterait de la base de données, qu'elle transmettrait en faisant un broadcast aux applications connectées via datasnap.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    bonjours
    je me permet de vous contacter suis a un petit souci a la lecture de votre cour :"Delphi 2010 : Connexion à FireBird via dbExpress".

    j ai donc télécharger et installer comme montrer dans le cour FireBird tout cela sans souci

    arriver a l étape 4 (IV. Création de la base de données et de la table de Contacts)

    j ouvre cmd et tape la commende indiquer :

    create database 'c:\dbexpressfirebird\test.fdb';

    a ce moment la isql me retourne un message :

    statement failed, SQLSTATE = 28000

    your user name and password are not defined ask your database administrator to set up a firebird login.


    je suis sous windows 7 avec firebird 2.5 et delphi EX (pas encor u besoin de toucher a delphi)

    merci d avence

  14. #14
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    as-tu essayé ceci ?
    IN c:\DBExpressFirebird\create_script.sql;

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J ai déjà fait différend test:

    IN c:\DBExpressFirebird\create_script.sql;
    qui me retourne le même message.

    Dans isql J ai aussi ajouter la ligne pour définir le user comme indiquer dans la doc ( http://www.firebirdsql.org/manual/fr...-creating.html )
    SQL >CREATE DATABASE 'c:\DBExpressFirebird\ ',
    CON>user 'sysdba' password 'masterkey';
    mais le message reste inchangée

    j ai aussi tester
    SQL> IN c:\DBExpressFirebird\create_script.sql,
    CON>user 'sysdba' password 'masterkey';
    avec un nouveau message d erreur:

    Unable to open c:\DBExpressFirebird\create_script.sql,

    du coup je suis en trin de chercher comment ajouter un user et je me demande si il peu y avoir des conflits avec d autre service ou avec la gestion des utilisateurs windows

  16. #16
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    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
    C:\Fb25\bin>isql -help
    Unknown switch: help
    usage:    isql [options] [<database>]
            -a(ll)                  extract metadata incl. legacy non-SQL tables
            -b(ail)                 bail on errors (set bail on)
            -c(ache) <num>          number of cache buffers
            -ch(arset) <charset>    connection charset (set names)
            -d(atabase) <database>  database name to put in script creation
            -f(etch_password)       fetch password from file
            -e(cho)                 echo commands (set echo on)
            -ex(tract)              extract metadata
            -i(nput) <file>         input file (set input)
            -m(erge)                merge standard error
            -m2                     merge diagnostic
            -n(oautocommit)         no autocommit DDL (set autoddl off)
            -nod(btriggers)         do not run database triggers
            -now(arnings)           do not show warnings
            -o(utput) <file>        output file (set output)
            -pag(elength) <size>    page length
            -p(assword) <password>  connection password
            -q(uiet)                do not show the message "Use CONNECT..."
            -r(ole) <role>          role name
            -r2 <role>              role (uses quoted identifier)
            -s(qldialect) <dialect> SQL dialect (set sql dialect)
            -t(erminator) <term>    command terminator (set term)
            -tr(usted)              use Windows trusted authentication
            -u(ser) <user>          user name
            -x                      extract metadata
            -z                      show program and server version
    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\>isql -user SYSDBA -password masterkey -i  c:\DBExpressFirebird\create_script.sql -m -m2 -q -o monlogpourvoirsitoutvabien.txt
    devrait faire l'affaire
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  17. #17
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 158
    Points : 80
    Points
    80
    Par défaut Exploitation base de données
    Bon jour
    J'ai une question pour l'exploitation de la base de données
    Faisons un edit pour la recherche des enregistrements
    Pouvez vous nous montrer les étapes
    Merci

  18. #18
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    pour ma part, je n'ai pas très bien compris ta question.
    qu'as-tu essayé ?
    où bloques-tu ?

    normalement si tu arrives à connecter proprement ton clientdataset à la source de données, un locate sur le dataset ou un filtre devraient te permettre d'arriver à ce que tu veux ?

  19. #19
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    pour ma part, je n'ai pas très bien compris ta question.
    qu'as-tu essayé ?
    où bloques-tu ?

    normalement si tu arrives à connecter proprement ton clientdataset à la source de données, un locate sur le dataset ou un filtre devraient te permettre d'arriver à ce que tu veux ?
    Bon jour
    Suivant le tutoriel la connexion est faite normalement et les données sont affichées sur le DBGRID mais le code edit.change ne donne pas les resultats voulues
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     procedure TForm1.Edit1Change(Sender: TObject);
    begin
    WITH SQLQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT *FROM ARTICLES WHERE REFERENCE_2 LIKE :Design');
      Params.ParamByName('Design').AsString:=''+Edit1.Text+'';
      Open;
    end;
    // SQLQuery1.Locate('ARTICLE_FR',Edit1.Text,[loCaseInsensitive,loPartialKey]);
    end;

  20. #20
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    bon déjà actualiser un Query à chaque saisie dans l'edit ce n'est pas le top, faudrait ajouter un délai avec un timer avant l'actualisation.

    à vue de nez ce qui manque dans ton code c'est le close/open du clientDataset connecté à la query, après la réouverture de celle ci.

Discussions similaires

  1. Erreur lors d'un INSERT sur une table dans Firebird via dbExpress
    Par matou7 dans le forum Bases de données
    Réponses: 4
    Dernier message: 03/04/2012, 16h40
  2. Pb connexion Firebird via Jaybird - Java
    Par sims26 dans le forum Eclipse
    Réponses: 1
    Dernier message: 25/01/2010, 22h12
  3. Connexion à Firebird via SAMBA
    Par JP.NUAGE dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 27/09/2009, 08h54
  4. Connexion Firebird via sdsl
    Par ludo00002 dans le forum Connexion aux bases de données
    Réponses: 19
    Dernier message: 02/07/2008, 17h10

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