B
    x`%                 @   s8   d dl Z d dlT d dlT G dd deZed  dS )    N)*c               @   sP   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd ZdS )Applicationz"Classe de l'application principalec             C   s  t |  | d t| td| _| jjdd | jt| d| j	d | jt| d| j
d | jt| d| jd | jt| d	| jd | jt| d
| jd | jt| d| jd dddddg}i | _xjtt|D ]Z}t| || d dd}|j|d dd t| dd}|j|d ddd || j|| < qW t| d| jdj|d ddtd d| _t|| _tj| j_| j | _dS )z#Constructeur de l'objet Applicationu    Gestionnaire de base de données)orient   )Z
columnspanZ
Rechercher)textcommandZAjouterZ
ActualiserZEffaceru   Mise à zéroAideNomZAdresseZVilleZCantonZNoPostal:)ZArial   )r   font   r   )rowcolumnz
Courier 12)r      )r   r   padxQuitter)r   r   r   sticky N)Tk__init__titlePanedWindow
HORIZONTALZboutonsgridaddButton
rechercherajouter
actualiserdetruirevideraiderchampsrangelenLabelEntryfermerEIDsqlite3connectconnZRowZrow_factorycursorcur)selfZdbZ	nomChampsiZtexteZsaisie r2   t/Users/jerome/SynologyDrive/College/Informatique/OCI/1_Site/3_Bases-donnees/5_Synthese/documents/ex5/exercice5Sol.pyr      s.    

"
zApplication.__init__c          
   C   sN  g }x*| j D ] }| j |  dkr|| qW t|dkr@d}x*|D ]"}||d | j |   d 7 }qHW |dd }y| j| W n: tk
r } ztd t| t| W dd}~X Y nzX | j }|st	d	d
 n^t|dkrt
dd nF|d }|   x*| j D ] }| j | tt||  qW |d | _n
t
dd dS )u/   Recherche un client selon les critères entrésr   r   zSELECT * FROM Client WHERE z = 'z' AND Nu"   Erreur dans la requete exécutée:ZInconnuu:   Aucun résultat ne satisfait le(s) critère(s) entré(s) !r   u   Plusieurs résultatsuM   Plusieurs résultats vérifient le(s) critère(s) ! Affinez votre recherche !ZClientIDzAttention !u<   La recherche doit etre effectuée sur au moins un critère !)r#   getappendr%   r/   execute	TypeErrorprintZfetchallshowinfoshowwarningr!   insertINSERTstrr*   )r0   ZcriterescrequeteeresultsZresultatr2   r2   r3   r   ;   s4    
"
 zApplication.rechercherc          
   C   s$  d}d}d}x^| j  D ]P}| j |  dd}|dkrLd}tdd	 P q||d
 7 }|d| d 7 }qW |r |dd d }|dd d }|| }tddr y| j| W n: tk
r } zt	d t	| t	| W dd}~X Y n0X | j
  tdd| j d   d  |   dS )u*   Ajout d'un client dans la base de donnéeszINSERT INTO Client(zVALUES(r   'z''r   r   ZErreurz)Tous les nomChamps doivent etre remplis !z, z', Nz) )zAttention !z,Voulez-vous vraiment enregistrer ce client ?u"   Erreur dans la requete exécutée:Z
Sauvegardez
Le client r	   u#    a été sauvegardé avec succès !)r#   keysr5   replace	showerroraskyesnor/   r7   r8   r9   r-   commitr:   r!   )r0   ZdebutRequeteZ
finRequeteflagr?   valr@   rA   r2   r2   r3   r   h   s2    

zApplication.ajouterc          
   C   s   | j dkrd}x>| jD ]4}| j|  dkr||d | j|   d 7 }qW |dd d t| j  }tdd	ry| j| W n2 tk
r } zt| t| W dd}~X Y qX | j	
  td
d |   q|   n
tdd dS )u   Met à jour un enregistrementr   zUPDATE Client SET z = 'z', NrD   z WHERE ClientID = zAttention !z.Voulez-vous vraiment faire ces modifications ?u   Mise à jouru)   Vos modifications ont été réalisées !zAucun enregistrementu   Utilisez le menu 'Chercher' pour localiser l'enregistrement à modifier.

Modifiez les informations désirées.

Cliquez sur 'Actualiser'.)r*   r#   r5   r>   rI   r/   r7   r8   r9   r-   rJ   r:   r!   r;   )r0   r@   r?   rA   r2   r2   r3   r      s$    
"




zApplication.actualiserc          
   C   s   | j dkrdt| j  }tddry| j| W n2 tk
rd } zt| t| W dd}~X Y qX | j  t	dd | 
  q| 
  n
tdd	 dS )
u   Détruit un enregistrementr   z$DELETE FROM Client WHERE ClientID = zAttention !z1Voulez-vous vraiment effacer cet enregistrement ?NZ
Effacementu/   L'enregistrement a été effacé avec succès !zAucun enregistrementu   Utilisez le menu 'Chercher' pour localiser l'enregistrement à effacer.

Cliquez sur 'Effacer' pour détruire définitivement l'enregistrement.)r*   r>   rI   r/   r7   r8   r9   r-   rJ   r:   r!   r;   )r0   r@   rA   r2   r2   r3   r       s    





zApplication.detruirec             C   s,   x | j D ]}| j | dt qW d| _dS )z)Vide le contenu de chaque saisie de texter   r   N)r#   deleteENDr*   )r0   r?   r2   r2   r3   r!      s    zApplication.viderc             C   s   t dd dS )u*   Affiche un message d'aide à l'utilisateurr   u8  Cliquez sur 'Rechercher' pour trouver un enregistrement.

Cliquez sur 'Ajouter' pour sauvegarder un enregistrement.

Cliquez sur 'Actualiser' pour mettre à jour un enregistrement existant.

Cliquez sur 'Effacer' pour détruire un enregistrement existant.

Cliquez sur 'Mise à zéro' pour vider tous les champs.N)r:   )r0   r2   r2   r3   r"      s    zApplication.aiderc             C   s    | j   | j  |   dS )u/   Ferme curseur, connexion et détruit la fenetreN)r/   closer-   destroy)r0   r2   r2   r3   r(      s    

zApplication.fermerN)__name__
__module____qualname____doc__r   r   r   r   r    r!   r"   r(   r2   r2   r2   r3   r      s   ,-/'!
r   zLibrairie.sq3)r+   tkintertkinter.messageboxr   r   mainloopr2   r2   r2   r3   <module>   s
    t