cs_christian51
Messages postés5Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mai 2003
-
25 avril 2003 à 23:32
cs_christian51
Messages postés5Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mai 2003
-
8 mai 2003 à 15:09
Salut à tous
voilà, j' ai beaucoup galérer mais je ne vois pas comment creer des champs indexés : je m'explique ...
les éléments :
UNE TABLE-SOURCE - contient des champs indéxés -
UN BATCHMOVE
UNE TABLE-DESTINATION
Quand je sauvegarde ma base de donnée de source vers destination, les indexs ne sont pas sauvegardés.
Et a la réouverture d'une archive, j'ai des erreurs d'index.
1 - Comment sauvegarder aussi les index ????
2 - Comment recréer les indexs par prog si je connecte la base sans les indexs.
PS : bien sure, j'ai essayé ADDINDEX , INDEXDEF et plein d'autres mais je ne doit pas faire les choses correctement car j'ai des erreurs d'index à l'ouverture des la table source
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 1 mai 2003 à 18:32
Pour utiliser ce code, il faut que les champs de la table de destination soient créés.
Si tu utilises un composant TBatchMove, dès que les opérations de copie sont terminées, tu peux utiliser ce bout de code sauf, bien évidemment, si la table de destination est une table ASCII.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 5 mai 2003 à 23:06
La méthode Assign est utilisée dans de nombreuses circonstances, dès qu'il s'agit de copier le contenu d'un objet persistant.
Malgré tout la propriété IndexDefs est documentée depuis Delphi 1. Il suffisait donc de copier cette propriété dans celle, identique, de l'autre objet.
May Delphi be with you
cs_christian51
Messages postés5Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mai 2003 5 mai 2003 à 23:26
Salut
J'ai honte, j'ai parlé trops vite . je m'explique,
Quand je sauvegarde ma table , je n'ai pas de défaut.
Quand je réouvre l'archive et que j'essaye de trier mes champs, j'ai des erreurs / il n'y a pas d'index pour le champs XXXXX
ci dessous, mon bout de code de sauvegarde et celui de réouverture de la table. Où est le pb.
merci d'avance.
procedure TA_Frm_devis.Enregistrerundevis1Click(Sender: TObject); // PROCEDURE D'ENREGISTREMENT D'UN DEVIS
begin
SaveDialog1.InitialDir:=CheminTables+'Archives Devis'; // CHEMIN PAR DEFAUT = CHEMINTABLES
If SaveDialog1.Execute=True Then
If SaveDialog1.FileName='' Then // SI PAS DE "NOM" ALORS SORTIR
Exit // SINON
Else
Begin
DataModule_Devis.T_Sauvegarde.TableName:=SaveDialog1.FileName;
//DataModule_Devis.T_Tout.Filtered:=True //On ne sauvegarde que les Qte > 0
If DataModule_Devis.T_Tout.TableName = DataModule_Devis.T_Sauvegarde.TableName Then
Begin // SI LA TABLE SOURCE = DESTINATION ALORS
If MessageDlg ('Voulez vous vraiment modifier cette archive ?', // LA DESTINATION POINTE SUR UNE ARCHIVE
MtConfirmation,[MbYes, MbNo],0)= MrYes Then // QUESTION > MODIFIER OU PAS
Begin
DataModule_Devis.T_Tout.Edit; // SI OUI
DataModule_Devis.T_Tout.Post; // MISE A JOUR DES FICHIERS ARCHIVES
ShowMessage ('Archive sauvegardée');
End;
End
Else
Begin
DataModule_Devis.BatchMove1.Execute; // SAUVEGARDE NOUVELLE ARCHIVE
DataModule_Devis.T_Sauvegarde.IndexDefs.Assign(DataModule_Devis.T_Tout.IndexDefs);// SAUVEGARDE DES INDEXS DE CHAMPS
End;
// DataModule_Devis.T_Tout.Filtered:=False;
end;
end;
procedure OuvertureArchive;
Begin
A_Frm_DEvis.OpenDialog1.InitialDir:='CheminTables';
If A_Frm_DEvis.OpenDialog1.Execute Then
If A_Frm_DEvis.OpenDialog1.FileName<>'' Then
Begin
DataModule_Devis.T_Tout.Active:=False; DataModule_Devis.T_Tout.TableName:=A_Frm_DEvis.OpenDialog1.FileName;
DataModule_Devis.T_SauveGarde.TableName:=DataModule_Devis.T_Tout.TableName;
DataModule_Devis.T_Tout.IndexFieldNAmes:='';
DataModule_Devis.T_Tout.Active:=True;
NomRapport:=A_Frm_DEvis.OpenDialog1.FileName;
End;
End;
cs_christian51
Messages postés5Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mai 2003 8 mai 2003 à 15:09
Salut,
J'ai honte +++++
Merci encore pour ton aide.
évidement , ca marche. Je n'avais pas penser que je devais " recréer ma table" avec CREATETABLE aprés avoir utilisé ASSIGN.
Et surtout que je devais faire BATCHEMOVE.MODE:=BATUPDATE ou BATAPPEND car BATCOPY me recréait toute ma table, et donc aussi mes valeurs de champs.
Encore MERCI pour la pat :big) ience de ceux qui aide les débutants.