Bonjour,

Encore quelque chose qui devrait couler de source et malgré cela je bute sur des erreurs pas vraiment claires je m'explique.

Création de la table :
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
    ///////////////////////////////////////////////////////
    //      Tables  oublis
    ///////////////////////////////////////////////////////
    table_a_creer := TDbf.Create(nil);
    try
      ForceDirectories('data');
      table_a_creer.FilePath := 'data' + DirectorySeparator;
      table_a_creer.TableLevel := 7;
      table_a_creer.Exclusive := True;
      table_a_creer.TableName := 'oublis.dbf';
      With table_a_creer.FieldDefs do begin
       Add('num_oubli', ftAutoInc, 0, True);
       Add('date_oubli', ftString, 10, True);
       Add('classe', ftString, 30, True);
       Add('num_eleve', ftInteger, 0, True);
       Add('nom_eleve', ftString, 30, True);
       Add('prenom_eleve', ftString, 40, True);
       Add('motif', ftString,40 , True);
       Add('nbre_oublis', ftInteger,8 , True);
      End;
      table_a_creer.CreateTable;
      table_a_creer.Open;
      table_a_creer.AddIndex('ind_num', 'num_oubli', [ixPrimary, ixUnique]);
      table_a_creer.AddIndex('ind_date_oubli','date_oubli', [ixCaseInsensitive]);
      table_a_creer.AddIndex('ind_classe_eleve','(classe + nom_eleve)', [ixCaseInsensitive]);
      table_a_creer.Close;
    finally
      table_a_creer.Free;
    end;
    If FileExists(var_dir_data + DirectorySeparator+'oublis.dbf' )
    then memo_verif_syst.Lines.Add('La table oublis a été créée avec succès')
    Else Begin
      var_tests_ok:=False;
      memo_verif_syst.Lines.Add('Table oublis inexistante ') ;
    End ;
    Try
      Db_oublis.FilePath:=var_dir_data;
      Db_oublis.FilePathFull:=var_dir_data;
      Db_oublis.Active:=True;
    Except
      memo_verif_syst.Lines.Add(' Impossible d''ouvrir la table oublis' );
    End;
Vous remarquerez que le champ 'DATE_OUBLI' est au format String car mode date ou string (caractères) je ne m'en sors pas non plus.

L'objectif faire un filtre permettant d'afficher les oublis d'une date donnée.

Je m'y suis pris de cette manière
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
  If onglets.ActivePageIndex=1 Then Begin
    champ_saisie.Focused;
    champ_saisie.Caption:='';
    Db_oublis.Filtered:=False;
    Db_oublis.Filter:='DATE_OUBLI = ' + var_date_saisie;
    Db_oublis.Filtered:=True;
 
  end;
Voici le message :





J'ai refait des dizaines de fois la création de la table ; le souci vient peut être de là car de temps à autre Lazarus me sors un message "Access Violation". Je suis donc obligé de relancer Lazarus
Pour info les tables ne sont pas active dans l'ide
Je procède de la manière suivante :
Tables inactivées lors de la compil.
Lancement du programme
Création des tables
Fermeture du programme. (retour à l'EDI)

Activation des tables
Mise à jour de datasources et datafield des <> composants dbgrid etc..
Désactivation des tables
Lancement du programme
J'ai fait de la sorte pour ce programme car il doit être exécuté depuis une clé usb et les tables peuvent ne pas être présentes elles seront créées par l'utilisateur l'interface de mon prog le permet.
pour info var_date_saisie est une variable au format String

Je peux envoyer les sources rien de confidentiel

En allant dans le dossier 'data' dont voici la copie écran il n'y a pas de fichier 'oubli.dbt'



Bonne continuation et merci de vos idées

Eric