• Je suis en train de construire un programme qui stocke les paramètre météo et permettra de les ressortir sous formes de courbes et autres.
    Je prend les données sur internet.


Mon programme:
Dans une première partie, j'ai deux table, une avec des stations et leur adresse associé puis une autre dans laquelle je met les stations dont je veut récupérer les données.

Lorsque j'ajoute une station, pas de problème.


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
45
46
47
48
49
50
51
52
53
54
55
//Ajout d'une station à mettre à jour
void __fastcall TPrincipale::cmdAjClick(TObject *Sender)
{
 
//Modification de la Table Station
//Mise en écriture de la table.
DBTable->Edit();
//Sélection et écriture de l'enregistrement.
DBTable->FindField(NumAj);
DBTable->Fields->Fields[2]->AsString="1";
DBTable->Post();
DBTable->Refresh();
 
//Création d'un nouvel enregistrement
DBTable2->AppendRecord(ARRAYOFCONST((NumAj,DBTable->Fields->Fields[1]->AsString,Date.DateString())));
DBTable2->Close();
DBTable2->Open();
//Création d'une table pour cet enregistrement.
DBTable3->Active= false;
DBTable3->TableName = NumAj;
if (!DBTable3->Exists)
        {
        DBTable3->FieldDefs->Clear();
        //Pointeur pour créer champ
        TFieldDef *pNewDef = DBTable3->FieldDefs->AddFieldDef();
        pNewDef->Name= "Date";
        pNewDef->DataType=ftDate;
 
        pNewDef=DBTable3->FieldDefs->AddFieldDef();
        pNewDef->Name= "TempMaxi";
        pNewDef->DataType=ftInteger;
 
        pNewDef=DBTable3->FieldDefs->AddFieldDef();
        pNewDef->Name= "TempMini";
        pNewDef->DataType=ftInteger;
 
        pNewDef=DBTable3->FieldDefs->AddFieldDef();
        pNewDef->Name= "Temp12";
        pNewDef->DataType=ftInteger;
 
        pNewDef=DBTable3->FieldDefs->AddFieldDef();
        pNewDef->Name= "Hygrometrie12";
        pNewDef->DataType=ftInteger;
 
        pNewDef=DBTable3->FieldDefs->AddFieldDef();
        pNewDef->Name= "Pluviometrie";
        pNewDef->DataType=ftInteger;
 
        //Création de la table
        DBTable3->CreateTable();
        }
 
else
        MessageBox(0, "La table de donnée existe déja. Erreur N°1", "Erreur N°1", MB_ICONERROR|MB_OK);
}
Mais lorsque je veut en supprimer une, j'ai un soucis:

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
//suppression d'une station à mettre à jour.
void __fastcall TPrincipale::cmdSpClick(TObject *Sender)
{
 
//modification de la Table StationMAJ
//suppression d'un enregistrement
DBTable2->FindField(NumSp);
DBTable2->Delete();
 
//Modification de la Table Station
//Mise en écriture de la table.
DBTable->Edit();
//Sélection et écriture de l'enregistrement.
DBTable->FindField(NumSp);
DBTable->Fields->Fields[2]->AsString="0";
DBTable->Post();
DBTable->Refresh();
 
//Suppresion de la table associé à l'enregistrement.
DBTable3->Active = false;
DBTable3->TableName = NumSp;
 
if (DBTable3->Exists)
        DBTable3->DeleteTable();
 
else
MessageBox(0, "Le table ne peut être supprimé car elle n'existe pas. Erreur N°2", "Erreur N°2", MB_ICONSTOP|MB_OK);
}
En effet, le codesuivant ne marche pas comme je voudrais.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
DBTable->FindField(NumSp);
DBTable->Fields->Fields[2]->AsString="0";
(Extrait de la partie suppession du programme)

La fonction FindFieldme sert à sélectionner l'enregistrement.
La ligne suivante modifie une valeur de cet enregistrement. Or mon problème est le suivant:
La ligne ne modifie pas l'enregistrement que je veut mais le suivant.