info delphi

info delphi - Delphi/Pascal - Programmation

Marsh Posté le 18-05-2002 à 17:34:00    

dans une relation maitre-détail....
 
j'ai un clientdataset pays
 
et un autre province
 
province est lié à pays
 
 
si j'efface un pays, delphi ne devrait t'il pas effacé les provinces assocé au pays?
 
si oui comment le forcer.....


---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 18-05-2002 à 17:34:00   

Reply

Marsh Posté le 18-05-2002 à 17:39:44    

Houla :ouch:  
Attention, c'est dans la définition de la base que cela est défini (et non dans Delphi)
 
on delete cascade ... (script de création de table)

Reply

Marsh Posté le 18-05-2002 à 18:04:18    

ta pas ça avec les clientdataset....
 
avec les clientdataset tous se passe en mémoire et le tout et sauvegardé par la suite dans un fichier xml.....


---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 21-05-2002 à 13:33:01    

Désolé, j'ai confondu avec le "dataset" :D

Reply

Marsh Posté le 21-05-2002 à 16:59:39    

ok j'ai trouvé...
 
j'ai fait un truc du genre
 
procedure TfrmAdmin.cmdSupprimerClick(Sender: TObject);
var
  NoEcole : integer;
begin
  if (lstEcole.ItemIndex <> -1 ) then begin
  //enlève les courriel associé à l'école sélectionné
  frmCsdm.cdsEcole.Locate('Ecole',lstEcole.Items[lstEcole.ItemIndex],[]);
  NoEcole := frmCsdm.cdsEcole.FieldValues['NoEcole'];
  showMessage(inttostr(NoEcole));
  frmCsdm.cdsCourriel.Filter := 'NoEcole=' + quotedstr(inttostr(NoEcole));
  frmCsdm.cdsCourriel.Filtered := True;
  frmCsdm.cdsCourriel.First;
 
  while not(frmCsdm.cdsCourriel.Eof) do frmCsdm.cdsCourriel.Delete;
 
  frmCsdm.cdsCourriel.Filtered := false;
  frmCsdm.cdsCourriel.Filter := '';
 
  //efface l'école sélectionné de la liste et de la bd
  frmCsdm.cdsEcole.Filter := 'Ecole=' + quotedstr(lstEcole.Items[lstEcole.ItemIndex]);
  frmCsdm.cdsEcole.Filtered := True;
  frmCsdm.cdsEcole.First;
 
  while not (frmCsdm.cdsEcole.Eof) do frmCsdm.cdsEcole.Delete;
 
  frmCsdm.cdsEcole.Filtered := false;
  frmCsdm.cdsEcole.Filter := '';
 
  frmCsdm.cdsEcole.MergeChangeLog;
  frmCsdm.cdsCourriel.MergeChangeLog;
 
  lstEcole.Items.Delete(lstEcole.ItemIndex);
  end;
end;
 
et ça fonctionne...
 
je commence par effacé le détail et ensuite le maitre


---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 21-05-2002 à 17:25:24    

os2 > à l'occasion regarde l'aide sur l'opérateur "with"
 

Code :
  1. with frmCsdm do
  2. begin
  3.   with cdsEcole do
  4.   begin
  5.     Locate('Ecole',lstEcole.Items[lstEcole.ItemIndex],[]);
  6.     NoEcole := FieldValues['NoEcole'];
  7.     showMessage(inttostr(NoEcole));
  8.   end;
  9.   with cdsCourriel do
  10.   begin
  11.     Filter := 'NoEcole=' + quotedstr(inttostr(NoEcole));
  12.     Filtered := True;
  13.     First;


etc...
 
 
C'est moins fatiguant à écrire et plus optimisé au niveau code généré par le compilateur :)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-05-2002 à 19:21:30    

je connais with
 
qui ta dit que c'était plus optimal à la compilation...
c + rapide?
exe plus petit?

antp a écrit a écrit :

os2 > à l'occasion regarde l'aide sur l'opérateur "with"
 

Code :
  1. with frmCsdm do
  2. begin
  3.   with cdsEcole do
  4.   begin
  5.     Locate('Ecole',lstEcole.Items[lstEcole.ItemIndex],[]);
  6.     NoEcole := FieldValues['NoEcole'];
  7.     showMessage(inttostr(NoEcole));
  8.   end;
  9.   with cdsCourriel do
  10.   begin
  11.     Filter := 'NoEcole=' + quotedstr(inttostr(NoEcole));
  12.     Filtered := True;
  13.     First;


etc...
 
 
C'est moins fatiguant à écrire et plus optimisé au niveau code généré par le compilateur :)  




---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 21-05-2002 à 19:56:00    

Bhen il doit pas aller rechercher chaque fois la valeur du pointeur.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-05-2002 à 19:59:08    

antp a écrit a écrit :

Bhen il doit pas aller rechercher chaque fois la valeur du pointeur.  




 
Ouaip, je confirme, c'est plus performant  :na:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 21-05-2002 à 20:02:12    

Pourquoi tu tires la langue en me quotant ? Je vais croire que c'est à moi qui tu tires la langue :na:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-05-2002 à 20:02:12   

Reply

Marsh Posté le 21-05-2002 à 23:45:45    

antp a écrit a écrit :

Pourquoi tu tires la langue en me quotant ? Je vais croire que c'est à moi qui tu tires la langue :na:  




 
 :kaola:  
 
 :D


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 22-05-2002 à 10:05:21    

:jap: Belle démo
 
Seul point négatif : les screenshots en JPEG [:nofret]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-05-2002 à 10:13:36    

Ha ? Bhen ça peut peut-être m'intéresser :D
 
Sinon pour le PNG : http://www.antp.be/PNG/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-05-2002 à 10:35:51    

Bhen moi je trouve ça plus beau avec le with :p
Et surtout je suis paresseux, et j'aime pas devoir déclarer plein de variables et recopier leur nom à chaque fois :D
 
Je fais souvent des trucs de ce genre:
 

Code :
  1. with TStringList.Create do
  2.   try
  3.     .....
  4.   finally
  5.     Free;
  6.   end;


:)
 
Sinon y a mieux : les with imbriqués :
 

Code :
  1. with Listview1 do
  2.   if (Selected <> nil) and (Selected.Selected) then
  3.     with Selected do
  4.       if (Data <> nil) then
  5.          with TMonObjet(Data) do
  6.          begin
  7.             ...
  8.          end;


:D

 

[jfdsdjhfuetppo]--Message édité par antp le 22-05-2002 à 10:36:55--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-05-2002 à 18:20:58    

viiz a écrit a écrit :

 
 
En effet ca a l'air bien clair :sarcastic:  :(  :non:  




 
Benh quoi, c'est clair... Et pratique avec ca  :kaola:  
 
Moi aussi je suis un adepte du  
with TMachinChose.Create do
try
finally
  Free;
end;
 
Tellement pratique  :D


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 23-05-2002 à 12:24:09    

ouai, moi aussi, chui un adepte de with et je rajouterais ke ça fait du code plus lisible si on en abuse pas...  
 
c klerr ke le style :
with var1, var2, var3 do begin
...
end;
on fini par s'y perdre un peu...
 
mais dans l'initialisation "graphique" d'un composant par exemple :
disons, ke tu as dans ce composant 4 labels et 2 boutons, bin je trouve ke ça fait plus propre :
 

Code :
  1. with buton1 do begin
  2.    left := ...
  3.    right := ...
  4.    OnClick := ...
  5. .. etc.
  6. end;
  7. with buton2 do begin
  8. ...
  9. end;
  10. etc, etc...


 
 
et dans le cas de création de variable anonyme, je trouve ça pas mal aussi :
 
au lieu de faire (mettons kon est truc: string en global):
 

Code :
  1. var
  2.   uneBoiteDial: TBoiteDialog;
  3. begin
  4.   uneBoiteDial := TBoiteDialog.create(self);
  5.   if uneBoiteDial.showModal = mrOk then begin
  6.     truc := uneBoiteDial.edit1.text;
  7.     ...
  8.   else
  9.     ...
  10.   end;
  11. ...
  12.   uneBoiteDial.destroy;
  13. end;


 
c'est kan même plus clair de faire un truc dans ce style :
 
 
begin
  with TBoiteDialogue.create(self) do begin
     if showModal = mrOk then begin
         truc := Edit1.text;
         ... etc.
     else
        ... etc.
     end;
  end;
end;


---------------
Boolay for ever...
Reply

Marsh Posté le 23-05-2002 à 12:26:28    

Là, ça a plus grand chose à voir avec le topic de départ :D  
Qui fait le topic (ou le sondage) With ou pas With, là est la question :D

Reply

Marsh Posté le 03-06-2002 à 13:31:28    

antp a écrit a écrit :

Bhen moi je trouve ça plus beau avec le with :p
Et surtout je suis paresseux, et j'aime pas devoir déclarer plein de variables et recopier leur nom à chaque fois :D
 
Je fais souvent des trucs de ce genre:
 

Code :
  1. with TStringList.Create do
  2.   try
  3.     .....
  4.   finally
  5.     Free;
  6.   end;


:)
 
Sinon y a mieux : les with imbriqués :
 

Code :
  1. with Listview1 do
  2.   if (Selected <> nil) and (Selected.Selected) then
  3.     with Selected do
  4.       if (Data <> nil) then
  5.          with TMonObjet(Data) do
  6.          begin
  7.             ...
  8.          end;


:D  




 
M'en parles pas ton code est chiant a comprendre des fois avec les  With imbriqués :(

Reply

Marsh Posté le 03-06-2002 à 14:21:53    

BlackSun a écrit a écrit :

 
 
M'en parles pas ton code est chiant a comprendre des fois avec les  With imbriqués :(  




 
c'est quoi ce up de vieux topic :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-06-2002 à 17:22:28    

viiz a écrit a écrit :

 
 
lol 10 jours :hap:  




 
oui mais tout ça pour me critiquer :sweat:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-06-2002 à 17:32:56    

Reply

Marsh Posté le 19-07-2002 à 09:41:28    

lOL, re up

Reply

Marsh Posté le 19-07-2002 à 10:36:22    

:fuck:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed