Modifier un enregistrement.
- 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:
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:
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:
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.