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 :

DBGrid + DBNavigator : 2 Questions


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Points : 117
    Points
    117
    Par défaut DBGrid + DBNavigator : 2 Questions
    Bonjour

    Je m initie à SQLite et Delphi.
    Je suis le webinaire de Patrick Prémartin ici


    Sur une form sont posés un TFDConneciont, un TFDTable, un TDataSource, un TDBgrid et un TDBNavogator.

    Dans l’éditeur de propriété je mets la FDTable active à True, pour le FDConnection je mets Connected à True.

    Je lance l exe, tout est correct, le contenu de ma table s affiche bien dans la DBGrid.

    1 / Mon pb est que toute tentative de modification et de nouvel enregistrement se soldent par le message d'erreur "Database is locked".Je precise que je n ai aucune autre connection active ou aucune interaction avec la base ou la table...-> solution dans l’édit en bas...

    2 /Par ailleurs deux de mes colonnes sont de type REAL. Dans le onCreate de ma form je précise System.SysUtils.FormatSettings.DecimalSeparator := '.';
    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...

    3 / 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 !

    Pour le point 2 et 3 Je n ai absolument aucune idée de comment solutionner ça.

    J ai vraiment besoin d aide

    Merci

    EDIT : J'ai retiré du titre le point 1 car si j’exécute l'exe directement, l'IDE fermé, cela fonctionne ! Je n avais pas pensé à cette connexion.

  2. #2
    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
    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
    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
    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
    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
    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 régulier
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Points : 117
    Points
    117
    Par défaut
    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...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/06/2009, 11h13
  2. Réponses: 3
    Dernier message: 23/05/2009, 13h07
  3. Question sur l'Archive database
    Par arona dans le forum Sybase
    Réponses: 2
    Dernier message: 07/09/2007, 09h20
  4. [D7]DBGRID, DBNavigator, UPDATE
    Par Genestoux dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/06/2006, 10h07
  5. [Delphi6][DBGrid][DBNavigator]Débutant
    Par 7 dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 00h52

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