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

Rave Discussion :

[D2007 / Rave 7.5.2] Pb communication DataBand et TRvCustomConnection


Sujet :

Rave

  1. #1
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut [D2007 / Rave 7.5.2] Pb communication DataBand et TRvCustomConnection
    Bonjour,
    J'ai un problème de communication entre mon appli Delphi et Rave, plus particulièrement entre :

    > coté Delphi un TRvCustomConnection relié à une requête simple (correctement exécutée, contenant plusieurs lignes de résultats pour son seul champ)

    > coté Rave un DataBand contenant un seul DataText, connecté au bon champ via un DataView connecté lui aussi au bon TRvCustomConnection Delphi

    Les évènements (Delphi) du TRvCustomConnection sont tous appelés (OnOpen, OnEOF et surtout OnGetCols pour définir le champ à "transférer"), excepté OnGetRow qui n'est jamais exécuté !
    J'ai défini le nombre de lignes à envoyer par la propriété Connection.DataRows (je ne sais si c'est nécessaire), tous les composants sous Rave ont leur propriété Visible à True... je ne sais plus trop vers où chercher ! Surtout que cela fonctionne parfaitement pour une autre requête du même style.

    Des idées svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TDM.RvCustomConnectionGetCols(Connection: TRvCustomConnection);
    begin
      Connection.WriteField('MyField', dtString, 80, '', '');
    end;
     
    procedure TDM.RvCustomConnectionGetRow(Connection: TRvCustomConnection);
    begin
      Connection.WriteStrData('', myQuery.Fields.ByNameAsString['C_UTILISATION']);
      myQuery.Next;
    end;

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Un RvCustomConnection n'est ce pas se compliqué la vie ? a en juger par ton code un RvDataSetConnection serait plus simple , maintenant je n'ai pas tout les éléments .
    J'ai défini le nombre de lignes à envoyer par la propriété Connection.DataRows (je ne sais si c'est nécessaire)
    non , et je dirais même que c'est a exclure lorsque l'on connait pas de façon sure le nombre d'enregistrement sauf si l'on ne veut q'une partie de ceux-ci et encore le SQL permet en général de le faire , pas la peine de passer par Rave

    [edit après un petit test]

    Code ok : 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
    procedure TForm9.RvCustomConnection1EOF(Connection: TRvCustomConnection;
      var Eof: Boolean);
    begin
      EOF:=Query1.EOF;
    end;
     
    procedure TForm9.RvCustomConnection1GetCols(Connection: TRvCustomConnection);
    begin
      Connection.WriteField('MyField', dtString, 80, '', '');
    end;
     
    procedure TForm9.RvCustomConnection1GetRow(Connection: TRvCustomConnection);
    begin
     Connection.WriteStrData('',Query1.FieldByName('LIBELLE_APPOSE').asString);
    end;
     
    procedure TForm9.RvCustomConnection1Next(Connection: TRvCustomConnection);
    begin
     Query1.Next;
    end;
     
    procedure TForm9.RvCustomConnection1Open(Connection: TRvCustomConnection);
    begin
     Query1.First;
    end;
    ma question : est-ce que ton EOF est bien géré ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Oui un TRvDataSetConnection serait l'idéal mais mes données sont récupérées par un JvUIBQuery, qui d'ailleurs ne s'interface pas non plus avec un TRvQueryConnection malheureusement.

    Je suis arrivé à résoudre mon pb d'hier (cad mon 1er message) en supprimant le TRvCustomConnection pour en déposer un nouveau sur ma fiche et réaffecter ses évènements. Moralité de l'histoire : ne jamais copier/coller un TRvCustomConnection !! Ne me demandez pas pourquoi

    Mais aujd : nouveau rapport et nouveaux soucis avec des databands, du même ordre d'ailleurs alors j'aurai certainement besoin de toi
    Merci pour ton aide SergioMaster.

  4. #4
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Bon toujours le même problème de communication TRvCustomConnection Delphi / DataBands Rave

    Le "MyField" ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm9.RvCustomConnection1GetCols(Connection: TRvCustomConnection);
    begin
      Connection.WriteField('MyField', dtString, 80, '', '');
    end;
    doit correspondre à quelle propriété du champ du DataView sous Rave :
    - FieldName ?
    - FullName ?
    - Name ?

    J'imagine "FieldName" mais bon là je cherche un peu partout...

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    C'est le nom que 'connaitra' Rave donc en fait Name serait le plus exact .

    C'est vrai que cette fonction n'est pas ou est mal documentée (je viens d'essayer sans succès d'avoir l'aide ). Il a fallu chercher dans mes divers PDF Rave pour trouver
    Citation Envoyé par Appendix/lessons/customdataconnexion
    procedure WriteField(Name: string;
    DataType: TRPDataType;
    Width: integer;
    FullName: string;
    Description: string);
    JvUIBQuery, qui d'ailleurs ne s'interface pas
    je ne savais pas ça, il faudrait que je teste avec les UIBQuery (que je recommande d'ailleurs en lieu et place des JvUIBxxxx)



    un ps . Il vaut mieux ajouter un DoGetCols , je savais qu'il me manquait quelque chose hier (plus ou moins un équivalent de Clear)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm9.RvCustomConnection1GetCols(Connection: TRvCustomConnection);
    begin
      Connection.DoGetCols;
      Connection.WriteField('MyField', dtString, 80, '', '');
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Merci. J'essaierai ça lundi et te tiendrai au courant...
    Bon week end !

  7. #7
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Salut,
    Citation Envoyé par paradise Voir le message
    Le "MyField" ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm9.RvCustomConnection1GetCols(Connection: TRvCustomConnection);
    begin
      Connection.WriteField('MyField', dtString, 80, '', '');
    end;
    doit correspondre à quelle propriété du champ du DataView sous Rave :
    - FieldName ?
    - FullName ?
    - Name ?

    J'imagine "FieldName" mais bon là je cherche un peu partout...
    Bon d'après les démos Rave il s'agit bien de FieldName.

    Citation Envoyé par SergioMaster
    Citation Envoyé par paradise Voir le message
    JvUIBQuery, qui d'ailleurs ne s'interface pas
    je ne savais pas ça, il faudrait que je teste avec les UIBQuery (que je recommande d'ailleurs en lieu et place des JvUIBxxxx)
    Oui et c'est bien dommage, j'aurais bien utilisé des TRvQueryConnection au lieu de me prendre la tête avec ces CustomConnection !

    D'ailleurs hier matin plus rien ne marchait
    J'ai bricolé, j'ai trouvé et pour l'instant ça marche --> ce que je retiens de mon expérience perso, et là je vais te contredire : il faut impérativement définir la propriété DataRows dans le OnOpen de toute TRvCustomConnection !! Sinon (toujours en ce qui me concerne) aucune donnée n'est transmise.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [D2007/Rave 7.5.2] Pb configuration avec RpDev
    Par paradise dans le forum Rave
    Réponses: 1
    Dernier message: 29/03/2011, 16h04
  2. [D2007 / Rave 7.5.2] Modifier hauteur de DataBand
    Par paradise dans le forum Rave
    Réponses: 8
    Dernier message: 23/03/2011, 08h49
  3. [D2007 / Rave 7.5.2] Impression sans fin !
    Par paradise dans le forum Rave
    Réponses: 28
    Dernier message: 17/02/2011, 09h57
  4. [D2007 / Rave 7.5.2] Band et New Column ?
    Par paradise dans le forum Rave
    Réponses: 2
    Dernier message: 31/01/2011, 16h54
  5. [D2007 / Rave 7.5.2] DataBand et colonnes
    Par paradise dans le forum Rave
    Réponses: 18
    Dernier message: 08/07/2010, 14h24

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