Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Discussion: Base access et Rav

  1. #1
    Membre habitué Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : février 2009
    Messages : 278
    Points : 133
    Points
    133

    Par défaut Base access et Rav

    Bonjour,

    Je rencontre un problème avec une base de données Access, que je ne maitrise pas bien du tout.

    Dans D2006 je crée une table dynamiquement qui est pourvue d'un champ de type memo.

    L'objectif étant d'afficher le contenu de ce memo dans un champ DataMemo d'un RAV.

    Le problème que je rencontre est sur l'affichage des données dans le RAV,
    j'ai entre chaque charactère de mon champ un petit char carré, que nous connaissons bien indiquant un char de controle.

    Quand j'ouvre ma base dans Access, mes lignes sont correctes.
    Quand je regarde mes données dans un Dbgrid, le champ mémo indique WIDEMEMO...

    J'imagine donc que c'est le fait que les données sont stockées en WIDE qui provoque cet affichage.

    Je ne sais si je dois modifier qq. chose sur ma base ou sur ma manière de stocker les données.

    Pour implémenter mon champ je fais une SQL de type INSERT et via des params sous ADO en lui passant une chaine tel que:

    Code :
    1
    2
    3
    4
    5
    6
     
    Parameters.paramByname('MonchampMemo').value:= TmpStr;
     
    ou
    Parameters.paramByname('MonchampMemo').value:= LstString.text;
    en sachant que ce dernier est un Tstringlist.
    J'espère être assez clair pour que vous puissiez m'aider.

  2. #2
    Membre émérite Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    août 2008
    Messages
    1 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : août 2008
    Messages : 1 527
    Points : 920
    Points
    920

    Par défaut

    Citation Envoyé par castorcharly Voir le message
    Bonjour,

    Je rencontre un problème avec une base de données Access, que je ne maitrise pas bien du tout.

    Dans D2006 je crée une table dynamiquement qui est pourvue d'un champ de type memo.

    L'objectif étant d'afficher le contenu de ce memo dans un champ DataMemo d'un RAV.
    Pour le rav, tu peux utiliser ceci

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Procedure ...
    Var
    MyMemo : TRaveMemo;
    begin
    //...
        MyMemo:=TRaveMemo.Create(myPage);
        MyMemo.Parent:=MyBand;
    //...
    end;
    Pour cette partie @Sergio saura mieux t'aiguiller que moi


    Citation Envoyé par castorcharly Voir le message
    Quand j'ouvre ma base dans Access, mes lignes sont correctes.
    Quand je regarde mes données dans un Dbgrid, le champ mémo indique WIDEMEMO...
    C'est normal, un champ mémo ne peut pas être directement visible dans un Dbgrid, il faut utiliser une fonction pour transformer le memo en string.

    Par exemple sur un ADOTbl tu peux faire ce genre de chose :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure TFData.TblRequeteAfterOpen(DataSet: TDataSet);
    Var
      i : integer;
    Begin
      // on redirige les zones memo vers memoGetText
      for i := 0 to DataSet.FieldCount - 1 do
        if (DataSet.Fields[i] is TWideMemoField) or (DataSet.Fields[i] is TMemoField) then
            DataSet.Fields[i].OnGetText := MemoGetText
        else
          if (DataSet.Fields[i] is TFloatField) or (DataSet.Fields[i] is TCurrencyField) then
            {MISE EN FORME Numérique}
            TFloatField(Dataset.Fields[I]).DisplayFormat :='#0.00'
          else
            if (DataSet.Fields[i].FieldName = 'Duree')  then
              TDateTimeField(DataSet.Fields[i]).DisplayFormat := 'hh:mm:ss';
    end;
     
    Procedure TFData.MemoGetText(Sender: TField; var Text: String; DisplayText: Boolean);
    begin
      Text := Sender.AsString;
    end;
    A plus

  3. #3
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 261
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 261
    Points : 9 593
    Points
    9 593

    Par défaut

    Citation Envoyé par BuzzLeclaire Voir le message
    Pour le rav, tu peux utiliser ceci

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Procedure ...
    Var
    MyMemo : TRaveMemo;
    begin
    //...
        MyMemo:=TRaveMemo.Create(myPage);
        MyMemo.Parent:=MyBand;
    //...
    end;
    Joli, mais .... non , là tu indiques un moyen de créer un rvMemo à l'exécution alors que Castorchaly l'a déjà dans son RaveReport .

    Pour cette partie @Sergio saura mieux t'aiguiller que moi
    Souvenons nous que je ne suis pas un fan d'Access .
    Bon première piste ACCESS , selon la version , ne pourrait-il pas être UNICODE ? contrairement a D2006 ?

    La connexion avec Rave est faite comment :
    par un rvDatasetConnection ou par un rvCustomConnection ?

    Comme j'ai D2006 (mais pas access) , j'essaierai bien pour peu d'avoir une petite BDD
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  4. #4
    Membre habitué Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : février 2009
    Messages : 278
    Points : 133
    Points
    133

    Par défaut

    Désolé pour le temps de réponse,

    Merci d'avoir pris le temps de répondre et donc effectivement il s'agit d'un DataMemo qui est posé sur une page. Le Rav est connecté via Database Connection sur ADO, dans Delphi je n'ai aucun composant, je crée un jeu d'object
    RvProject : TRvProject;
    RvSystem : TRvSystem;
    Database : TRaveDatabase;

    La base est créée avec un moteur Jet4.

    Pour ce qui est de l'affichage des datas du mémo, dans une dbgrid, access ou autre, c'était juste pour signaler l'info wideMemo que je n'avais jamais vu...fuyant comme la peste ce type de base.

    SergioMaster Je vais te préparer une petite base de test pour que tu puisses voir ce que ça donne...si ça marche chez toi je me pends avec ma souris.

    P.S. J'ai fait un test avec XE2, version entreprise SVP, et rav 10, grosso modo même résultat sauf que ce n'est pas des carré mais du japonais que je vois à la fin de chaque memo !!!
    J'avais fait cet essai en me disant que je pourrai faire une DLL sous XE2 en 32bit et bin nada.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •