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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
void __fastcall TForm1::SaveClick(TObject *Sender)
{
SaveDialog1->FileName="Resultat.dbf";
if(SaveDialog1->Execute())
{
CreateBD(ExtractFileName(SaveDialog1->FileName),
ExtractFilePath(SaveDialog1->FileName));
}
}
//-------------------------------------------------------------------------
void TForm1::CreateBD(AnsiString Name,AnsiString Path)
{
// En premier, description de la table qui doit être nommée
Table->Active=false;
Table->DatabaseName = Path;
Table->TableType = ttDBase; // ou ttdefault;
Table->TableName = Name;
//----------------------------------------
if(!Table->Exists)
{
Table->Active = false; // Le composant Table ne doit pas être actif
Table->FieldDefs->Clear(); // reset la table si qqch...
TFieldDef *pNewDef; // pointeur sur la table
// Ensuite description des champs
// resultat est une dbgrid contenant des données via une requete sql
// nombre de champ (titre)
for(int x=0; x< resultat->FieldCount; x++)
{ // ajout d'une colone
pNewDef = Table->FieldDefs->AddFieldDef();
// lecture des noms des colonnes de la dbgrid
pNewDef->Name = resultat->Fields[x]->DisplayName;
// lecture de type de la colonne de la dbgrid
pNewDef->DataType = resultat->Fields[x]->DataType;
// lecture de la taille de la colonnes de la dbgrid
pNewDef->Size = resultat->Fields[x]->Size;
}
Table->CreateTable();
}
//------------------------------------
// remplissage de la bd
Table->Active = false;
Table->DatabaseName = Path;
Table->TableName = Name;
Table->Active=true;
// nombre d'enregistrement dans la dbgrid
for (int y=0 ; y< resultat->Fields[0]->DataSet->RecordCount; y++)
{
// mode ajout , insertion et edition ;
Consult->Append(); Consult->Insert(); Consult->Edit();
for (int x=0 ; x< resultat->FieldCount; x++)
{
// recherche le champ où il faut se positionner
Table->FieldByName(resultat->Fields[x]->DisplayName)->Value
= resultat->Fields[x]->AsString;
OU
// simplement
Table->Fields[x]->Value = resultat->Fields[x]->AsString;
}
}
//fermeture de la table
Consult->Post();
Consult->Refresh();
}
//---------------------------------------- |
Partager