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 :

DBGrid + DBNavigator : 2 Questions


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    DBGrid + DBNavigator : 2 Questions
    Ce message n'a pas pu être affiché car il comporte des erreurs.

  2. #2
    Rédacteur/Modérateur

    Bonjour,
    Citation Envoyé par MoiStéphane Voir le message

    Dans l’éditeur de propriété je mets la FDTable active à True, pour le FDConnection je mets Connected à True.
    À moins que je ne me trompe, et même s'il est de "bon ton" de connecter la connexion AVANT la table, ouvrir la Table suffit pour que la connexion soit faite.
    Certes, il faudrait que je revérifie ce point en VCL et SQLite, j'ai pris l'habitude d'ouvrir la connexion avant les tables ou querys et donc je ne peux donner du 100% de certitude.


    Dans le onCreate de ma form je précise System.SysUtils.FormatSettings.DecimalSeparator := '.';
    Un simple FormatSettings.DecimalSeparator:='.' suffit mais cela n'est pas très recommandé.
    En général on créé plutôt un FormatSettings que l'on modifie
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    aFormatSettings:=TFormatSettings.Create;
    aFormatSettings.DecimalSeparator:='.';

    Mais pourquoi diable vouloir changer le FormatSettings ? Suivant vos différentes discussions je comprends bien qu'il s'agit du fait que votre objectif est de traiter un CSV qui contient des valeurs avec le point décimal, néanmoins, on parle ici de données dans une table SQLite et de présentation dans une grille. En gros c'est un peu se compliquer l'existence.
    Toutefois, cette histoire de séparateur m'intéresse au niveau de la saisie
    Mais lors de la saisie impossible d'avoir accès au point et la virgule fait que la saisie n'est pas reconnue comme un REAL...
    Étrange, s'assurer que le champ du Datasource est bien un TFloatField serait la première chose à faire
    Déclarer les champs une solution possible ? Il faut que je teste.

    Enfin, quand je clique sur le + pour ajouter un enregistrement, ma colonne id, initialement déclarée en INTEGER PRIMARY KEY AUTOINCREMENT affiche un -1 !
    Idem il faut que je teste, mais c'est le comportement prévu (je ne sais plus où j'ai lu ça spécifications Firedac ou SQLite j'hésite)

    Comme il est tôt, je vais rapidement établir un test
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Test effectué
    Citation Envoyé par Sergiomaster
    À moins que je ne me trompe, et même s'il est de "bon ton" de connecter la connexion AVANT la table, ouvrir la Table suffit pour que la connexion soit faite.
    Je confirme

    Pour ce qui est du point décimal, le problème est que vous changez celui-ci à la création de la fiche. Or à ce moment là il est déjà trop tard pour les éditeurs de la grille.
    Mettez le code dans la partie initialization de la forme et tout fonctionne sans prise de tête.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm108.btnOpenClick(Sender: TObject);
    begin
    FDTable1.Open;
    end;
     
    initialization
     FormatSettings.DecimalSeparator:='.';
     
    end.

    ou directement au niveau de votre projet (pratique si vous avez plusieurs formes)
    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
    program Project108;
     
    uses
      Vcl.Forms,System.SysUtils,
      Unit108 in 'Unit108.pas' {Form108};
     
    {$R *.res}
     
    begin
      FormatSettings.DecimalSeparator:='.';
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(TForm108, Form108);
      Application.Run;
    end.


    le comportement prévu
    Je n'ai pas retrouvé où la documentation
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  4. #4
    Membre à l'essai
    Merci pour cette réponse à laquelle je n ai pas pu répondre avant faut d un pb avec laposte.net qui m empêchait de recevoir les notifications...