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 :

Base access et Rav


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    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 606
    Points : 1 113
    Points
    1 113
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    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
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Pour le rav, tu peux utiliser ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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

  4. #4
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    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.
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

Discussions similaires

  1. migration de base access vers postgres
    Par greg_ggl dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/03/2006, 10h33
  2. [ODBC] Intranet en PHP : Lister les tables d'une base Access
    Par fblouet dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/10/2003, 14h46
  3. Crash Base Access
    Par Ronald G. dans le forum Access
    Réponses: 4
    Dernier message: 04/08/2003, 11h55
  4. Export base Access vers MySql
    Par jjn1er dans le forum Outils
    Réponses: 7
    Dernier message: 10/03/2003, 23h50
  5. [VB6] [ADO] Like sur base Access
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/01/2003, 11h03

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