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 :

[SMDBGrid] "No data to display"?


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Par défaut [SMDBGrid] "No data to display"?
    Bonjour

    (Puisque le serveur newsgroups.borland.com est dans les choux depuis plusieurs heures ("Connection refused", puis "502 Cannot connect to the NNTP server, connect error 10061"), je me permets de poster ici la question.)

    J'aimerais utiliser le grid gratuit SMDBGrid, mais même après l'avoir connecté à un connecteur DB + dataset + datasource, il affiche "No data to display" à l'exécution. Il n'y pas de documentation et rien dans son groupe Yahoo. Pour info, les données sont correctement affichées dans la ListBox:

    Voici le code:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    procedure TForm2.FormCreate(Sender: TObject);
    var
      col, row : Integer;
    begin
        with ASQLite3DB1 do begin
          DefaultDir := ExtractFileDir(Application.ExeName);
          Database := 'db.sqlite';
          Open;
     
          SQLite3_ExecSQL('CREATE TABLE IF NOT EXISTS products (id integer primary key, name TEXT)');
          SQLite3_ExecSQL('INSERT INTO products (id, name) VALUES (NULL,"test")');
        end;
     
        DataSource1.DataSet := ASQLite3Query1;
        SMDBGrid1.DataSource := DataSource1;
        //No trace of an .Open or .Activate method
     
        With ASQLite3Query1 do begin
          Connection := ASQLite3DB1;
     
          SQL.Text := Format('SELECT %s FROM products',['products.*']);
          Open;
     
          //Grid says "No data to display"
          //SMDBGrid1.Enabled := True;
          //SMDBGrid1.Update;
          //SMDBGrid1.Show;
          //SMDBGrid1.Refresh;
     
          First;
          while not Eof do begin
            for col := 0 to Fields.Count - 1 do begin
              ListBox1.Items.Add(Fields[col].AsString);
            end;
            Next;
          end;
     
          Close;
        end;
     
        ASQLite3DB1.Close;
     
    end;
    Pour info, j'ai aussi essayé de déplacer code dans l'évènement FormActivate() faisant l'hypothèse que c'était peut-être dû au fait que les objets BD sont sur une forme et que peut-être la forme n'étant pas étant créée... mais sans résultat.

    Quelqu'un saurait-il ce qu'il faut faire?

    Merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    alors je ne connais pas ce composant mais, est-ce que vous avez ajouté les colonnes à afficher en mode conception ? Si ce n'est pas le cas, il faut sûrement demander de les créer à l'exécution après la récupération des lignes.

    Edit : en fait ça doit être le close de votre DataSet qui doit poser problème, cette instruction n'est pas à faire à ce moment là mais lors de la destruction de votre fiche.

Discussions similaires

  1. LOAD DATA INFILE et quotes
    Par bart0356 dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/03/2014, 11h44

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