Suppression de ligne dans un dbgrid

Résolu
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017 - 24 oct. 2017 à 00:23
 Pierrotk10d - 31 oct. 2017 à 08:31
delphi7 et bdd paradox


Bonjour,

je cherche une fonction ou code pour :

j aimerais pouvoir effacer via un bouton tout les lignes d un Dbgrid

jai une base de donnée de type réservation resto

et je voudrais effacer les dates antérieurs a celle de la date du jours

5 réponses

pierrotk10d
27 oct. 2017 à 18:43
Bonjour,
Il y a plusieurs solutions comme souvent.
1 - Mettre la propriété Multiselect du TDBGrid à True, sélectionner les enregistrements à supprimer. Voici un bout de code qui devait aller
procedure TForm1.Button1Click(Sender: TObject);
Var i: Integer;
begin
// Propriété MuliSelect du DBGrid1 est à True
if DBGrid1.SelectedRows.Count > 0 then begin
for i := 0 To DBGrid1.SelectedRows.Count -1 do begin
Table1.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
Table1.Delete;
end;
end;
end;

2 - Saisir la date de début et de fin des dates à supprimer et faire une requete SQL. A adapter à ton désir
Delete from Table1 where (DateResa > 'DateDebut') and (DateResa < 'DateFin');
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
27 oct. 2017 à 19:28
merci pierro!!

pour le bouton ok ca peu être utile mais la dans mon cas cela m obligerais a sélectionné manuellement les lignes .

après je ne sais pas utilisé les autres codes et serait p être trop long a apprendre pour moi je suis pas un pro !! et ne suis pas assez souvent a programmé .

auriez vous une autre solution ? en restant axé sur paradox et delphi

ce que je voudrais cet juste qu avec une date donnée que la fonction puisse allez rechercher tous les lignes ayant cette date et les sélectionnés automatiquement et les supprimer et cela sur un seul clic ;-)

si merci pour votre première réponse je garde sous le coude le petit code pour le bouton ca pourra me servir ultérieurement .
0
PierrotK10d
27 oct. 2017 à 20:55
Bonjour,
Pour la suppression des enregistrements sans les sélectionner manuellement la solution requête SQL me semble la meilleure. Il faut saisir la date à supprimer dans une fiche de dialogue ( à créer), avec un Edit et un bouton pour valider la date et lancer la requête.
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
27 oct. 2017 à 23:01
bonsoir

oui j avais bien compris votre idée SQL qui surement est bonne mais je sais pas comment le faire car je ni connais rien ave sql?

pourriez vous svp me me donner un petit exemple que je mettrais après a ma sauce ?

cela me permettrais déjà , peut être a comprendre un peu la relation en paradox et SQL !! et avancé dans mon projet

en vous remerciant

Merci pour la réponse et l intérêt que vous portez à m aider pour solutionner mon problème.

amicalement T
0
PierrotK10d
28 oct. 2017 à 14:32
Bonjour,
Si tu ne veux pas utiliser SQL c'est dommage. Tu peux faire une boucle While comme ceci qui va supprimer tous les enregistrements qui ne seront differents du jour ou la procédure sera lancée (tous les jours différents du 28/10/2017 pour aujourd'hui par exemple).
A toi d'adapter quels jours tu veux supprimer dans la boucle.
Tu peux indexer ta table sur le champs DateResa ça ira plus vite!
procedure TForm1.Button2Click(Sender: TObject);
Var DateJ: TDateTime;
begin
DateJ := Date();
With Table1 do begin
First;
While (FieldByName('DateResa').AsDateTime < DateJ) and (not Eof) do
Delete;
end;
end;
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
28 oct. 2017 à 15:29
super !!! cet tous a fait ce que je cherchait a faire !!

cool...!!! jais essayer de de remplacer Datej par un DateTimePicker1 !!
pour pouvoir éventuellement choisir une date autre que celle du jour

mais je trouve pas la bonne sintaxe !! ,deja es ce que cela est possible??

si non super ce petit bout de code va vraiment faire place dans mon petit programme !! ;-) merci Pierro !!!

amicalement T
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pierrotk10d
28 oct. 2017 à 16:05
Bonjour,
Pour sélectionner une date utilise plutôt un TmonthCalendar. L'évènement OnClick te renverra la date choisie.
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
ShowMessage(DateToStr(MonthCalendar1.Date));
end;
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
28 oct. 2017 à 19:59
cela ne fonctionne pas!! car cela ne m efface tous !!

jai essayer de faire cela mais idem :

procedure TForm1.DateTimePicker1Change(Sender: TObject);
Var
DateJ: TDateTime;
begin
DateJ := DateTimePicker1.Date;
With Table1 do begin
first;
While (FieldByName('Date').AsDateTime < datej) and (not Eof) do

Delete;
end;
end;
0
PierrotK10d > ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
30 oct. 2017 à 09:31
Bonjour,
J'ai testé la procédure elle fonctionne parfaitement chez moi. Avec la date du jour DateJ := Date(); ou en sélectionnant une date dans un TMonthCalendar DateJ := MonthCalendar1.Date;
Fait le test suivant dans l'événement OnChange du TDateTimePicker remplace Delete par le remplissage d'un TMemo (avec scrollbar vertical) et regardes ce qui se passe! Avec TDateTime Picker la transformation de DateJ en String donne un meilleur résultat lors de la comparaison.
Bonne journée
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
30 oct. 2017 à 18:52
bonjour Pierro

je viens de revoir mon code javais fait une petit erreur de sintax!!!

effectivement ton code est parfait nickel!!
0
ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
30 oct. 2017 à 18:55
merci merci pierro problème de date résolut ;-)

jais une autre petite demande a te faire p être saura tu m aiguillé

je vais mettre une photo pour que ma question soit plus explicite
0
Pierrotk10d > ratatouille53 Messages postés 30 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 10 décembre 2017
31 oct. 2017 à 08:31
Bonjour,
Si le problème est résolu il faut mettre ta demande à résolu.
0
Rejoignez-nous