Je vais continuer à potasser les cours sur le sql, je suis loin d'être au bout de mes peines, il faut que je tienne compte des relations mère/fille avant de supprimer un enregistrement par exemple, j'ai en conscience, mais encore aucune idée de la façon de le faire
Code : Tout sélectionner
;Ajouter un Nocase pour les vérifs UNIQUE !!
;Ajouter la possibilité d'éditeur un titre, un nom ! (pour corriger sans tout ressaisir )
UseSQLiteDatabase()
UsePNGImageDecoder()
;Thank's NetMastro for PikPak.pb !
*unpacked = AllocateMemory(1440)
If *unpacked
If UnpackMemory(?Poubelle, *unpacked)
CatchImage(0, *unpacked, 1440)
EndIf
EndIf
Declare NouveauFichier()
Declare OuvrirFichier()
Declare OpenMDIFilles()
Declare CloseMDIFilles()
Declare AjoutLivre(titre.s)
Declare AjoutAuteur(nom.s, prenom.s)
Declare AjoutEditeur(nom.s)
Declare AjoutLivreAuteur(id_livre, id_auteur)
Declare AjoutLivreEditeur(id_livre, id_editeur)
Declare ModifieLivre(id_livre, livre.s)
Declare ModifieAuteur(id_auteur, auteur.s)
Declare ModifieEditeur(id_editeur, editeur.s)
Declare AfficheLivres()
Declare AfficheAuteurs()
Declare AfficheEditeurs()
Declare AfficheAuteursLivre(id_livre)
Declare AfficheEditeursLivre(id_livre)
Declare AfficheLivresAuteur(id_auteur)
Declare AfficheLivresEditeur(id_editeur)
Declare SupprimeLivre(id_livre)
Declare SupprimeAuteur(id_auteur)
Declare SupprimeEditeur(id_editeur)
Declare SupprimeAuteurLivre(id_livre,id_auteur)
Declare SupprimeEditeurLivre(id_livre,id_editeur)
Declare CheckDatabaseUpdate(Database, Query$)
Declare CheckDatabaseQuery(Database, Query$)
Enumeration
#WinPrincipale
#WinLivres
#WinAuteurs
#WinEditeurs
EndEnumeration
Enumeration
#MDI
;Panel livres
#ListeLivres
#ListeAuteursLivre
#ListeEditeursLivre
#StringTitre
#ImagePoubelleLivres
#BoutonRechercheLivre
;Panel auteurs
#ListeAuteurs
#ListeLivresAuteur
#StringNomAuteur
#StringPrenomAuteur
#ImagePoubelleAuteurs
;Panel editeurs
#ListeEditeurs
#ListeLivresEditeur
#StringNomEditeur
#ImagePoubelleEditeurs
EndEnumeration
#MENU = 0
Enumeration
#ToucheReturn
#MENU_Nouveau
#MENU_Ouvrir
#MENU_Quitter
#MENU_TileV
#MENU_TileH
#MENU_Cascade
#MENU_Arrange
#MENU_Previous
#MENU_Next
#MENU_FirstMDI
EndEnumeration
#Option = #PB_ListIcon_FullRowSelect | #PB_ListIcon_GridLines
Global IDLivre, IDAuteur, IDEditeur, IDAuteurLivre, IDEditeurLivre, IDLivreAuteur, IDLivreEditeur
If OpenWindow(#WinPrincipale, 0, 0, 400, 300, "MDIGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)
If CreateMenu(#MENU, WindowID(#WinPrincipale))
MenuTitle("Fichier")
MenuItem(#MENU_Nouveau, "Nouveau")
MenuItem(#MENU_Ouvrir, "Ouvrir...")
MenuBar()
MenuItem(#MENU_Quitter, "Quitter")
MenuTitle("Fenêtres")
MenuItem(#MENU_TileV, "Verticales")
MenuItem(#MENU_TileH, "Horizontales")
MenuItem(#MENU_Cascade, "Cascade")
MenuItem(#MENU_Previous, "Précédente")
MenuItem(#MENU_Next, "Suivante")
; MDI subwindows will get added here
EndIf
AddKeyboardShortcut(#WinPrincipale, #PB_Shortcut_Return, #ToucheReturn)
MDIGadget(0, 0, 0, 0, 0, 1, #MENU_FirstMDI, #PB_MDI_AutoSize)
EndIf
;-Boucle principale
Repeat
Event = WaitWindowEvent()
Select Event
Case 0
Delay(20)
Case #PB_Event_CloseWindow
quit = 1
Case #PB_Event_Menu
Select EventMenu()
Case #ToucheReturn
If GetGadgetState(#MDI)=#WinLivres
AjoutLivre(GetGadgetText(#StringTitre))
AfficheLivres()
SetGadgetText(#StringTitre,"")
ElseIf GetGadgetState(#MDI)=#WinAuteurs
AjoutAuteur(GetGadgetText(#StringNomAuteur),GetGadgetText(#StringPrenomAuteur))
AfficheAuteurs()
SetGadgetText(#StringNomAuteur,"")
SetGadgetText(#StringPrenomAuteur,"")
ElseIf GetGadgetState(#MDI)=#WinEditeurs
AjoutEditeur(GetGadgetText(#StringNomEditeur))
AfficheEditeurs()
SetGadgetText(#StringNomEditeur,"")
EndIf
Case #MENU_Nouveau
If NouveauFichier()
OpenMDIFilles()
AfficheAuteurs()
AfficheLivres()
AfficheEditeurs()
EndIf
Case #MENU_Ouvrir
If OuvrirFichier()
OpenMDIFilles() ; A tester avant si déjà fait ?
AfficheAuteurs()
AfficheLivres()
AfficheEditeurs()
EndIf
Case #MENU_Quitter
Quit = 1
Case #MENU_TileV
SetGadgetState(#MDI, #PB_MDI_TileVertically)
Case #MENU_TileH
SetGadgetState(#MDI, #PB_MDI_TileHorizontally)
Case #MENU_Cascade
SetGadgetState(#MDI, #PB_MDI_Cascade)
Case #MENU_Arrange
SetGadgetState(#MDI, #PB_MDI_Arrange)
Case #MENU_Previous
SetGadgetState(#MDI, #PB_MDI_Previous)
Case #MENU_Next
SetGadgetState(#MDI, #PB_MDI_Next)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #ListeLivres
IDLivre = GetGadgetItemData(#ListeLivres,GetGadgetState(#ListeLivres))
AfficheAuteursLivre(IDLivre)
AfficheEditeursLivre(IDLivre)
If EventType() = #PB_EventType_DragStart And IDLivre>0
Livre$ = "LL"+Str(GetGadgetItemData(#ListeLivres,GetGadgetState(#ListeLivres)))
DragText(Livre$)
ElseIf EventType() = #PB_EventType_LeftDoubleClick And IDLivre>0
Modif$=InputRequester("Modification titre","Modifiez le titre et validez",GetGadgetItemText(#ListeLivres,GetGadgetState(#ListeLivres)))
If Modif$ >""
ModifieLivre(IDLivre, Modif$)
AfficheLivres()
EndIf
EndIf
Case #ListeAuteursLivre
If EventType() = #PB_EventType_DragStart And IDLivre>0
Auteur$ = "LA"+Str(GetGadgetItemData(#ListeAuteursLivre,GetGadgetState(#ListeAuteursLivre)))
DragText(Auteur$)
EndIf
Case #ListeEditeursLivre
If EventType() = #PB_EventType_DragStart And IDLivre>0
Editeur$ = "LE"+Str(GetGadgetItemData(#ListeEditeursLivre,GetGadgetState(#ListeEditeursLivre)))
DragText(Editeur$)
EndIf
Case #ListeAuteurs
IDAuteur = GetGadgetItemData(#ListeAuteurs,GetGadgetState(#ListeAuteurs))
AfficheLivresAuteur(GetGadgetItemData(#ListeAuteurs,GetGadgetState(#ListeAuteurs)))
If EventType() = #PB_EventType_DragStart And IDAuteur>0
Auteur$ = "AA"+Str(GetGadgetItemData(#ListeAuteurs,GetGadgetState(#ListeAuteurs)))
DragText(Auteur$)
ElseIf EventType() = #PB_EventType_LeftDoubleClick And IDAuteur>0
Modif$=InputRequester("Modification nom","Modifiez le nom et validez",GetGadgetItemText(#ListeAuteurs,GetGadgetState(#ListeAuteurs)))
If Modif$ >""
ModifieAuteur(IDAuteur, Modif$)
AfficheAuteurs()
EndIf
EndIf
Case #ListeLivresAuteur
IDLivreAuteur = GetGadgetItemData(#ListeLivresAuteur, GetGadgetState(#ListeLivresAuteur))
If EventType() = #PB_EventType_DragStart And IDLivreEditeur>0
Livre$ = "AL"+Str(GetGadgetItemData(#ListeLivresAuteur,GetGadgetState(#ListeLivresAuteur)))
DragText(Livre$)
EndIf
Case #ListeEditeurs
IDEditeur = GetGadgetItemData(#ListeEditeurs, GetGadgetState(#ListeEditeurs))
AfficheLivresEditeur(GetGadgetItemData(#ListeEditeurs,GetGadgetState(#ListeEditeurs)))
If EventType() = #PB_EventType_DragStart And IDEditeur>0
Editeur$ = "EE"+Str(GetGadgetItemData(#ListeEditeurs,GetGadgetState(#ListeEditeurs)))
DragText(Editeur$)
ElseIf EventType() = #PB_EventType_LeftDoubleClick And IDEditeur>0
Modif$=InputRequester("Modification nom","Modifiez le nom et validez",GetGadgetItemText(#ListeEditeurs,GetGadgetState(#ListeEditeurs)))
If Modif$ >""
ModifieEditeur(IDEditeur, Modif$)
AfficheEditeurs()
EndIf
EndIf
Case #ListeLivresEditeur
IDLivreEditeur = GetGadgetItemData(#ListeLivresEditeur, GetGadgetState(#ListeLivresEditeur))
If EventType() = #PB_EventType_DragStart And IDLivreEditeur>0
Livre$ = "EL"+Str(GetGadgetItemData(#ListeLivresEditeur,GetGadgetState(#ListeLivresEditeur)))
DragText(Livre$)
EndIf
EndSelect
Case #PB_Event_GadgetDrop
Select EventGadget()
Case #ImagePoubelleLivres
Texte$=EventDropText()
If Left(Texte$,2)="LA"And IDLivre>0
Auteur=Val(Mid(Texte$,3))
SupprimeAuteurLivre(IDLivre, Auteur)
AfficheAuteursLivre(IDLivre)
ElseIf Left(Texte$,2)="LE"And IDLivre>0
Editeur=Val(Mid(Texte$,3))
SupprimeEditeurLivre(IDLivre, Editeur)
AfficheEditeursLivre(IDLivre)
ElseIf Left(Texte$,2)="LL"And IDLivre>0
Livre=Val(Mid(Texte$,3))
SupprimeLivre(Livre)
AfficheLivres()
EndIf
Case #ImagePoubelleAuteurs
Texte$=EventDropText()
If Left(Texte$,2)="AA"
Auteur=Val(Mid(Texte$,3))
SupprimeAuteur(Auteur)
AfficheAuteurs()
ElseIf Left(Texte$,2)="AL" And IDAuteur>0
Livre=Val(Mid(Texte$,3))
SupprimeAuteurLivre(Livre, IDAuteur)
AfficheLivresAuteur(IDAuteur)
EndIf
Case #ImagePoubelleEditeurs
Texte$=EventDropText()
If Left(Texte$,2)="EE"
Editeur=Val(Mid(Texte$,3))
SupprimeEditeur(Editeur)
AfficheEditeurs()
ElseIf Left(Texte$,2)="EL" And IDEditeur>0
Livre=Val(Mid(Texte$,3))
SupprimeEditeurLivre(Livre, IDEditeur)
AfficheLivresEditeur(IDEditeur)
EndIf
Case #ListeAuteursLivre
Texte$=EventDropText()
If Left(Texte$,2)="AA" And IDLivre>0
Auteur=Val(Mid(Texte$,3))
AjoutLivreAuteur(IDLivre, Auteur)
AfficheAuteursLivre(IDLivre)
EndIf
Case #ListeEditeursLivre
Texte$=EventDropText()
If Left(Texte$,2)="EE" And IDLivre>0
Editeur=Val(Mid(Texte$,3))
AjoutLivreEditeur(IDLivre, Editeur)
AfficheEditeursLivre(IDLivre)
EndIf
EndSelect
EndSelect
Until Quit = 1
End
;- *** PROCEDURES **********
Procedure OpenMDIFilles()
AddGadgetItem(0, #WinLivres, "Livres",0, #PB_Window_BorderLess)
ListIconGadget(#ListeLivres,0,0,400,250,"Titre", 395, #Option)
SetGadgetColor(#ListeLivres, #PB_Gadget_BackColor , RGB(248,248,248))
SetGadgetColor(#ListeLivres, #PB_Gadget_LineColor , RGB(228,228,228))
ListIconGadget(#ListeAuteursLivre, 0, 302, 199, 200, "Auteurs", 195, #Option)
ListIconGadget(#ListeEditeursLivre, 201, 302, 199, 200, "Editeurs", 195, #Option)
StringGadget(#StringTitre,5,255,350,20,"")
ImageGadget(#ImagePoubelleLivres,358,255,36,35, ImageID(0),#PB_Image_Border)
AddGadgetItem(0, #WinAuteurs, "Auteurs",0,#PB_Window_BorderLess)
ListIconGadget(#ListeAuteurs, 0, 0, 400,250,"Nom",197, #Option)
AddGadgetColumn(#ListeAuteurs,1,"Prénom",197)
ListIconGadget(#ListeLivresAuteur, 0, 302, 400, 200, "Livres", 395, #Option)
StringGadget(#StringNomAuteur,5,255,350,20,"")
StringGadget(#StringPrenomAuteur,5,280,350,20,"")
ImageGadget(#ImagePoubelleAuteurs,358,255,36,35, ImageID(0),#PB_Image_Border)
AddGadgetItem(0, #WinEditeurs, "Editeurs",0,#PB_Window_BorderLess)
ListIconGadget(#ListeEditeurs,0,0,400,250,"Nom", 395, #Option)
ListIconGadget(#ListeLivresEditeur, 0, 302, 400, 200, "Livres", 395, #Option)
StringGadget(#StringNomEditeur,5,255,350,20,"")
ImageGadget(#ImagePoubelleEditeurs,358,255,36,35, ImageID(0),#PB_Image_Border)
ResizeWindow(#WinLivres, #PB_Ignore, #PB_Ignore, 402, 505)
ResizeWindow(#WinAuteurs, #PB_Ignore, #PB_Ignore, 402, 505)
ResizeWindow(#WinEditeurs, #PB_Ignore, #PB_Ignore, 402, 505)
EnableGadgetDrop(#ListeAuteursLivre, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(#ListeEditeursLivre, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(#ImagePoubelleLivres, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(#ImagePoubelleAuteurs, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(#ImagePoubelleEditeurs, #PB_Drop_Text, #PB_Drag_Copy)
EndProcedure
Procedure CloseMDIFilles()
If IsWindow(#WinLivres)
CloseWindow(#WinLivres)
EndIf
If IsWindow(#WinAuteurs)
CloseWindow(#WinAuteurs)
EndIf
If IsWindow(#WinEditeurs)
CloseWindow(#WinEditeurs)
EndIf
EndProcedure
Procedure NouveauFichier()
FichierParDefaut$ = "C:\MaBiliotheque.sqlite" ; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Bibliothèque (*.sqlite)|*.sqlite;|Tous les fichiers (*.*)|*.*"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
Fichier$ = SaveFileRequester("Choisissez le nom de votre bibliothèque", FichierParDefaut$, Filtre$, Filtre)
If Fichier$
If FileSize(Fichier$)>0
Reponse=MessageRequester("Nouveau fichier", "Ce fichier existe déjà , vous allez le supprimer, voulez vous vraiment continuer ?",#PB_MessageRequester_YesNo)
EndIf
If Reponse = #PB_MessageRequester_Yes
If LCase(GetExtensionPart(Fichier$))<>"sqlite"
Fichier$ + ".sqlite"
EndIf
If CreateFile(0,Fichier$)
CloseFile(0)
If OpenDatabase(0, Fichier$, "", "")
CheckDatabaseUpdate(0,"BEGIN")
Table.s="CREATE TABLE livres (id INTEGER PRIMARY KEY,"
Table + "titre TEXT NOT NULL COLLATE NOCASE,"
Table + "UNIQUE(titre))"
CheckDatabaseUpdate(0, Table)
Table.s="CREATE TABLE auteurs (id INTEGER PRIMARY KEY,"
Table + "nom TEXT NOT NULL COLLATE NOCASE,"
Table + "prenom TEXT COLLATE NOCASE,"
Table + "UNIQUE(nom, prenom))"
CheckDatabaseUpdate(0, Table)
Table.s="CREATE TABLE editeurs(id INTEGER PRIMARY KEY,"
Table + "nom TEXT NOT NULL,"
Table + "UNIQUE(nom))"
CheckDatabaseUpdate(0, Table)
Table.s="CREATE TABLE livres_auteurs (id_livre INTEGER,"
Table + "id_auteur INTEGER,"
Table + "UNIQUE(id_livre,id_auteur))"
CheckDatabaseUpdate(0, Table)
Table.s="CREATE TABLE livres_editeurs(id_livre INTEGER,"
Table + "id_editeur INTEGER,"
Table + "UNIQUE(id_livre,id_editeur))"
CheckDatabaseUpdate(0, Table)
;Trigger
Trigger.s = "CREATE TRIGGER livre_insert_trg "
Trigger + "BEFORE INSERT ON livres "
Trigger + "BEGIN "
Trigger + " SELECT CASE "
Trigger + " WHEN (SELECT titre FROM livres WHERE LENGTH(NEW.titre)<=0) > 0 "
Trigger + " THEN RAISE(ABORT, 'le titre de ce livre est erroné') "
Trigger + " END; "
Trigger + "END; "
CheckDatabaseUpdate(0, Trigger)
Trigger.s = "CREATE TRIGGER auteur_insert_trg "
Trigger + "BEFORE INSERT ON auteurs "
Trigger + "BEGIN "
Trigger + " SELECT CASE "
Trigger + " WHEN (SELECT nom FROM auteurs WHERE LENGTH(NEW.nom)<=0) > 0 "
Trigger + " THEN RAISE(ABORT, 'le nom de cet auteur est erroné') "
Trigger + " END; "
Trigger + "END; "
CheckDatabaseUpdate(0, Trigger)
Trigger.s = "CREATE TRIGGER editeur_insert_trg "
Trigger + "BEFORE INSERT ON editeurs "
Trigger + "BEGIN "
Trigger + " SELECT CASE "
Trigger + " WHEN (SELECT nom FROM editeurs WHERE LENGTH(NEW.nom)<=0) > 0 "
Trigger + " THEN RAISE(ABORT, 'le nom de cet éditeur est erroné') "
Trigger + " END; "
Trigger + "END; "
CheckDatabaseUpdate(0, Trigger)
Trigger.s = "CREATE TRIGGER auteur_delete_trg "
Trigger + "BEFORE DELETE ON auteurs "
Trigger + "BEGIN "
Trigger + " SELECT CASE "
Trigger + " WHEN (SELECT COUNT(id_auteur) FROM livres_auteurs WHERE id_auteur=OLD.id) > 0 "
Trigger + " THEN RAISE(ABORT, 'cet auteur est utilisé dans une table, supprimez ou modifiez les fiches livres qui s''y réfèrent') "
Trigger + " END; "
Trigger + "END; "
CheckDatabaseUpdate(0, Trigger)
Trigger.s = "CREATE TRIGGER editeur_delete_trg "
Trigger + "BEFORE DELETE ON editeurs "
Trigger + "BEGIN "
Trigger + " SELECT CASE "
Trigger + " WHEN (SELECT COUNT(id_editeur) FROM livres_editeurs WHERE id_editeur=OLD.id) > 0 "
Trigger + " THEN RAISE(ABORT, 'cet éditeur est utilisé dans une table, supprimez ou modifiez les fiches livres qui s''y réfèrent') "
Trigger + " END; "
Trigger + "END; "
CheckDatabaseUpdate(0, Trigger)
;{ ;Remplissage des tables, c'est provisoire en attentant de gérer des formulaires avec des
; ;StringGadget() et des boutons pour la saisie des données
;
; AjoutLivre("Le français dans tous les sens")
; AjoutLivre("Honni soit qui mal y pense")
; AjoutLivre("Apologie de Socrate")
; AjoutLivre("Feux follets et champignons nucléaires")
; AjoutLivre("Des souris et des hommes")
; AjoutLivre("Erasme")
; AjoutLivre("La guerre des boutons")
; AjoutLivre("Les découvreurs")
; AjoutLivre("Journaux (1912 - 1940)")
; AjoutLivre("Le joueur d'échecs")
; AjoutLivre("Trois poètes de leur vie")
; AjoutLivre("Trois Maîtres")
;
; AjoutAuteur("Walter", "Henriette")
; AjoutAuteur("Platon", " ")
; AjoutAuteur("Garwin","Richard L.")
; AjoutAuteur("Charpak","Georges")
; AjoutAuteur("Steinbeck","John")
; AjoutAuteur("Zweig","Stefan")
; AjoutAuteur("Pergaud","Louis")
; AjoutAuteur("Boorstin","Daniel")
; AjoutAuteur("Toto","titi")
;
; AjoutEditeur("Le livre de poche")
; AjoutEditeur("HATIER")
; AjoutEditeur("Editions Odile Jacob")
; AjoutEditeur("folio")
; AjoutEditeur("Robert Laffont - édition illustrée")
; AjoutEditeur("Seghers")
;
; AjoutLivreAuteur(1,1) : AjoutLivreEditeur(1,1)
; AjoutLivreAuteur(2,1) : AjoutLivreEditeur(2,1)
; AjoutLivreAuteur(3,2) : AjoutLivreEditeur(3,2)
; AjoutLivreAuteur(4,3) : AjoutLivreEditeur(4,3)
; AjoutLivreAuteur(4,4)
; AjoutLivreAuteur(5,5) : AjoutLivreEditeur(5,4)
; AjoutLivreAuteur(6,6) : AjoutLivreEditeur(6,1)
; AjoutLivreAuteur(7,7) : AjoutLivreEditeur(7,4)
; AjoutLivreAuteur(8,8) : AjoutLivreEditeur(8,5)
; AjoutLivreEditeur(8,6)
; AjoutLivreAuteur(9,6) : AjoutLivreEditeur(9,1)
; AjoutLivreAuteur(10,6): AjoutLivreEditeur(10,1)
; AjoutLivreAuteur(11,6): AjoutLivreEditeur(11,1)
; AjoutLivreAuteur(12,6): AjoutLivreEditeur(12,1)
;}
CheckDatabaseUpdate(0,"COMMIT")
ProcedureReturn #True
Else
Debug "Can't open database !"
EndIf
Else
Debug "Can't create the database file !"
EndIf
EndIf
EndIf
EndProcedure
Procedure OuvrirFichier()
FichierParDefaut$ = "C:\MaBiliotheque.sqlite" ; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Bibliothèque (*.sqlite)|*.sqlite;|Tous les fichiers (*.*)|*.*"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
Fichier$ = OpenFileRequester("Choisissez le nom de votre bibliothèque", FichierParDefaut$, Filtre$, Filtre)
If Fichier$
;Si le fichier existe demander si on peut écraser !
If LCase(GetExtensionPart(Fichier$))<>"sqlite"
Fichier$ + ".sqlite"
EndIf
CloseMDIFilles()
If OpenDatabase(0, Fichier$, "", "")
ProcedureReturn #True
Else
Debug "Can't open database !"
EndIf
EndIf
EndProcedure
Procedure CheckDatabaseUpdate(Database, Query$)
Result = DatabaseUpdate(Database, Query$)
If Result = 0
MessageRequester("Erreur", DatabaseError(),0)
EndIf
ProcedureReturn Result
EndProcedure
Procedure CheckDatabaseQuery(Database, Query$)
Result = DatabaseQuery(Database, Query$)
If Result = 0
MessageRequester("Erreur", DatabaseError(),0)
EndIf
ProcedureReturn Result
EndProcedure
;- Ajout ------------------------------
Procedure AjoutLivre(titre.s)
Define Sql.s
Sql = "INSERT INTO livres (titre) "
Sql + "VALUES (" + Chr(34) + titre + Chr(34) + ")"
CheckDatabaseUpdate(0, Sql)
EndProcedure
Procedure AjoutAuteur(nom.s, prenom.s)
Define Sql.s
Sql = "INSERT INTO auteurs (nom, prenom) "
Sql + " VALUES (" + Chr(34) + nom + Chr(34) + "," + Chr(34) + prenom + Chr(34) + ")"
CheckDatabaseUpdate(0, Sql)
EndProcedure
Procedure AjoutLivreAuteur(id_livre, id_auteur)
Define Sql.s
Sql = "INSERT INTO livres_auteurs (id_livre, id_auteur) "
Sql + "VALUES (" + Chr(34) + Str(id_livre) + Chr(34)+"," + Chr(34) + Str(id_auteur) + Chr(34) + ")"
CheckDatabaseUpdate(0, Sql)
EndProcedure
Procedure AjoutLivreEditeur(id_livre, id_editeur)
Define Sql.s
Sql = "INSERT INTO livres_editeurs (id_livre, id_editeur) "
Sql + "VALUES (" + Chr(34) + Str(id_livre) + Chr(34)+"," + Chr(34) + Str(id_editeur) + Chr(34) + ")"
CheckDatabaseUpdate(0, Sql)
EndProcedure
Procedure AjoutEditeur(nom.s)
Define Sql.s
Sql = "INSERT INTO editeurs (nom) "
Sql + "VALUES (" + Chr(34) + nom + Chr(34) + ")"
CheckDatabaseUpdate(0, Sql)
EndProcedure
;- Modifie ----------------------------
Procedure ModifieLivre(id_livre, livre.s)
Define Query.s
IDLivre = -1
Query = "UPDATE livres "
Query + "SET titre="+ Chr(34) + livre + Chr(34)
Query + "WHERE id=" + Chr(34)+Str(id_livre)+Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure ModifieAuteur(id_auteur, auteur.s)
Define Query.s
IDAuteur = -1
Query = "UPDATE auteurs "
Query + "SET nom="+ Chr(34) + auteur + Chr(34)
Query + "WHERE id=" + Chr(34)+Str(id_auteur)+Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure ModifieEditeur(id_editeur, editeur.s)
Define Query.s
IDEditeur = -1
Query = "UPDATE editeurs "
Query + "SET nom="+ Chr(34) + editeur + Chr(34)
Query + "WHERE id=" + Chr(34)+Str(id_editeur)+Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
;- Affiche ----------------------------
Procedure AfficheLivres()
Define Query.s
IDLivre = -1
Query = "SELECT * FROM livres ORDER BY titre "
ClearGadgetItems(#ListeLivres)
ClearGadgetItems(#ListeAuteursLivre)
ClearGadgetItems(#ListeEditeursLivre)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeLivres, -1, GetDatabaseString(0, 1))
SetGadgetItemData(#ListeLivres,CountGadgetItems(#ListeLivres)-1, Val(GetDatabaseString(0, 0)))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure AfficheAuteurs()
Define Query.s
IDAuteur = -1
Query = "SELECT * FROM auteurs ORDER BY nom"
ClearGadgetItems(#ListeAuteurs)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeAuteurs, -1, GetDatabaseString(0, 1)+Chr(10)+ GetDatabaseString(0, 2))
SetGadgetItemData(#ListeAuteurs,CountGadgetItems(#ListeAuteurs)-1, Val(GetDatabaseString(0, 0)))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure AfficheEditeurs()
Define Query.s
IDEditeur = -1
Query = "SELECT * FROM editeurs ORDER BY nom"
ClearGadgetItems(#ListeEditeurs)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeEditeurs, -1,GetDatabaseString(0, 1))
SetGadgetItemData(#ListeEditeurs,CountGadgetItems(#ListeEditeurs)-1, Val(GetDatabaseString(0, 0)))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure AfficheAuteursLivre(livre)
Define Query.s
Query = "SELECT nom, prenom, id "
Query + "FROM livres_auteurs "
Query + "JOIN auteurs "
Query + "ON auteurs.id=livres_auteurs.id_auteur AND id_livre="+Chr(34)+Str(livre)+Chr(34) + "ORDER BY nom "
ClearGadgetItems(#ListeAuteursLivre)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeAuteursLivre,-1,GetDatabaseString(0, 0) + " " + GetDatabaseString(0, 1))
SetGadgetItemData(#ListeAuteursLivre,CountGadgetItems(#ListeAuteursLivre)-1, Val(GetDatabaseString(0, 2)))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure AfficheEditeursLivre(livre)
Define Query.s
Query = "SELECT nom, id "
Query + "FROM livres_editeurs "
Query + "JOIN editeurs "
Query + "ON editeurs.id=livres_editeurs.id_editeur AND id_livre="+Chr(34)+Str(livre)+Chr(34) + "ORDER BY nom "
ClearGadgetItems(#ListeEditeursLivre)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeEditeursLivre,-1,GetDatabaseString(0, 0))
SetGadgetItemData(#ListeEditeursLivre,CountGadgetItems(#ListeEditeursLivre)-1, Val(GetDatabaseString(0, 1)))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure AfficheLivresAuteur(auteur)
Define Query.s
Query = "SELECT titre "
Query + "FROM livres, livres_auteurs "
Query + "WHERE livres.id=livres_auteurs.id_livre AND id_auteur="+Chr(34)+Str(auteur)+Chr(34) + "ORDER BY titre "
ClearGadgetItems(#ListeLivresAuteur)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeLivresAuteur,-1,GetDatabaseString(0, 0))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure AfficheLivresEditeur(editeur)
Define Query.s
Query = "SELECT titre "
Query + "FROM livres, livres_editeurs "
Query + "WHERE livres.id=livres_editeurs.id_livre AND id_editeur="+Chr(34)+Str(editeur)+Chr(34) + "ORDER BY titre "
ClearGadgetItems(#ListeLivresEditeur)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseQuery(0, Query)
While NextDatabaseRow(0)
AddGadgetItem(#ListeLivresEditeur,-1,GetDatabaseString(0, 0))
Wend
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
;- Supprime ---------------------------
Procedure SupprimeLivre(livre)
Define Query.s
;Supprime les auteurs du livre
Query = "DELETE FROM livres_auteurs "
Query + "WHERE id_livre=" + Chr(34) + Str(livre) + Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
;Supprime les éditeurs du livre
Query = "DELETE FROM livres_editeurs "
Query + "WHERE id_livre=" + Chr(34) + Str(livre) + Chr(34)
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
;Supprime le livre
Query = "DELETE FROM livres "
Query + "WHERE id=" + Chr(34) + Str(livre) + Chr(34)
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure SupprimeAuteurLivre(livre, auteur)
Define Query.s
Query = "DELETE FROM livres_auteurs "
Query + "WHERE id_livre=" + Chr(34) + Str(livre) + Chr(34) + "AND id_auteur=" + Chr(34) + Str(auteur) + Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure SupprimeEditeurLivre(livre, editeur)
Define Query.s
Query = "DELETE FROM livres_editeurs "
Query + "WHERE id_livre=" + Chr(34) + Str(livre) + Chr(34) + "AND id_editeur=" + Chr(34) + Str(editeur) + Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure SupprimeAuteur(auteur)
Define Query.s
Query = "DELETE FROM auteurs "
Query + "WHERE id=" + Chr(34) + Str(auteur) + Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
Procedure SupprimeEditeur(editeur)
Define Query.s
Query = "DELETE FROM editeurs "
Query + "WHERE id=" + Chr(34) + Str(editeur) + Chr(34)
CheckDatabaseUpdate(0,"BEGIN")
If CheckDatabaseUpdate(0, Query)
FinishDatabaseQuery(0)
EndIf
CheckDatabaseUpdate(0,"COMMIT")
EndProcedure
DataSection
Poubelle:
Data.b $4A,$43,$A0,$05,$00,$00,$32,$ED,$3A,$60,$14,$6A,$E2,$20,$15,$36,$3C,$EA,$03,$45
Data.b $26,$1A,$12,$45,$9A,$14,$40,$32,$04,$A4,$20,$C2,$91,$11,$ED,$CB,$33,$60,$11,$48
Data.b $22,$D6,$54,$EA,$DC,$80,$77,$1D,$11,$7A,$03,$E9,$39,$3A,$83,$9E,$25,$58,$9B,$03
Data.b $26,$4D,$F9,$2F,$7C,$1C,$0C,$82,$82,$61,$A9,$48,$C7,$82,$49,$BD,$50,$53,$84,$01
Data.b $43,$80,$A6,$09,$F4,$43,$75,$21,$00,$7D,$B0,$EA,$21,$98,$21,$CC,$3A,$21,$37,$67
Data.b $B8,$17,$10,$E0,$19,$55,$99,$42,$65,$0A,$C0,$FF,$A2,$54,$25,$B2,$5F,$13,$B8,$7D
Data.b $E0,$83,$0F,$F5,$BF,$5E,$C6,$19,$4F,$68,$66,$3F,$FA,$FC,$B6,$A9,$C0,$BB,$F6,$DB
Data.b $94,$F0,$5F,$7E,$F9,$BE,$C9,$D0,$11,$F7,$33,$5F,$77,$5E,$E6,$B5,$09,$80,$82,$DE
Data.b $BC,$F3,$3E,$67,$8F,$7C,$25,$25,$77,$E9,$21,$E0,$13,$D4,$D2,$AC,$2F,$98,$EE,$FA
Data.b $3F,$75,$C4,$67,$4E,$E1,$48,$16,$27,$A6,$A9,$8D,$64,$8E,$C9,$07,$C2,$0C,$AF,$FF
Data.b $BA,$7C,$D3,$CF,$F3,$FE,$74,$F5,$94,$EC,$DC,$AF,$A6,$7E,$BC,$13,$07,$CC,$6B,$87
Data.b $F0,$63,$E4,$9D,$77,$E4,$9E,$76,$5B,$FD,$36,$CF,$FE,$F2,$3E,$D8,$AF,$F7,$A7,$0B
Data.b $80,$34,$F8,$EF,$EB,$EF,$FE,$D3,$5B,$22,$A7,$E4,$5F,$FF,$C8,$85,$0B,$ED,$4F,$3E
Data.b $43,$94,$EA,$CC,$97,$11,$3D,$F3,$FF,$3A,$87,$A7,$F5,$1F,$3E,$F4,$D4,$6B,$FF,$36
Data.b $DF,$FB,$7E,$FD,$EE,$C3,$F0,$CE,$58,$DA,$C6,$AE,$B9,$FB,$24,$D0,$9F,$9F,$49,$D3
Data.b $9F,$54,$EC,$D7,$FC,$D7,$0A,$B0,$88,$24,$A9,$21,$BD,$BF,$30,$40,$A0,$F4,$A2,$49
Data.b $25,$52,$8A,$93,$6A,$50,$EB,$29,$D7,$7E,$11,$A6,$6A,$B9,$04,$2A,$29,$4C,$C0,$37
Data.b $51,$0A,$8A,$96,$30,$D1,$5E,$2E,$3A,$A6,$AB,$9F,$4A,$A2,$FB,$7F,$5F,$8E,$53,$0A
Data.b $57,$7B,$71,$FB,$D1,$A8,$C7,$A4,$EB,$FC,$71,$E6,$30,$87,$2F,$6B,$56,$F9,$DF,$5A
Data.b $69,$BF,$7D,$E2,$40,$EB,$A4,$FD,$AB,$1E,$87,$36,$DB,$9F,$C3,$AA,$51,$8B,$F6,$2F
Data.b $D3,$75,$D9,$E8,$35,$4B,$8B,$91,$AC,$4A,$B6,$7F,$67,$F6,$6A,$CB,$51,$C1,$F8,$AB
Data.b $C0,$CA,$7C,$0B,$74,$A2,$FA,$C3,$73,$AF,$3E,$75,$FB,$C7,$E8,$D7,$DE,$FE,$D8,$0A
Data.b $EB,$B6,$7F,$7A,$BD,$EB,$A0,$4B,$29,$AB,$1A,$53,$AA,$60,$43,$A9,$66,$2E,$31,$62
Data.b $D0,$BC,$ED,$80,$2F,$7B,$F2,$93,$05,$46,$7A,$37,$BE,$E0,$1F,$B9,$CF,$CE,$59,$29
Data.b $66,$91,$07,$5F,$4C,$4B,$FA,$41,$27,$57,$CD,$5B,$79,$C7,$C3,$E3,$9A,$D6,$9B,$7E
Data.b $4F,$9E,$9B,$9E,$4D,$DE,$34,$62,$90,$2F,$DA,$E4,$3D,$12,$E4,$F4,$04,$EB,$0F,$7D
Data.b $10,$3A,$B9,$3D,$51,$97,$ED,$D6,$3F,$C5,$9F,$D7,$A7,$F4,$37,$6C,$C0,$C5,$37,$82
Data.b $BE,$7E,$78,$C5,$BA,$72,$64,$AE,$8C,$D8,$06,$73,$8A,$BF,$90,$AD,$C6,$BB,$15,$1A
Data.b $9E,$58,$B3,$7A,$A0,$03,$AA,$9E,$5A,$3B,$BB,$05,$DA,$D6,$C0,$94,$1D,$B1,$37,$AF
Data.b $59,$A4,$DB,$B4,$D9,$BF,$BE,$39,$BC,$56,$ED,$A1,$84,$75,$B1,$E1,$0A,$3E,$15,$B8
Data.b $E6,$C5,$23,$83,$1E,$BE,$70,$42,$DA,$A6,$16,$56,$29,$7A,$EC,$E7,$01,$09,$1E,$AF
Data.b $D4,$A6,$2D,$8B,$D1,$F6,$9D,$11,$A1,$89,$1D,$56,$39,$4A,$C2,$C1,$73,$A4,$FF,$FB
Data.b $F6,$DE,$F9,$D3,$70,$C2,$FF,$4B,$21,$38,$A3,$08,$EF,$B6,$DA,$FB,$3E,$C6,$AB,$49
Data.b $9F,$DE,$94,$70,$5F,$D5,$BD,$2B,$16,$09,$76,$DB,$8C,$AE,$6C,$9D,$3C,$F8,$50,$B9
Data.b $D7,$CF,$B2,$A4,$51,$DA,$95,$FC,$8E,$38,$9D,$67,$81,$72,$B2,$DB,$A7,$9D,$5E,$79
Data.b $35,$66,$22,$DF,$AB,$34,$D0,$EB,$E8,$DC,$EF,$42,$9D,$88,$61,$61,$8F,$BD,$7C,$FB
Data.b $52,$59,$B9,$B9,$E2,$C5,$D5,$6E,$E6,$E8,$5D,$06,$04,$4A,$7C,$EC,$93,$2A,$EE,$0F
Data.b $CC,$50,$DA,$EA,$B8,$09,$44,$58,$51,$A7,$FE,$E8,$35,$3A,$5F,$B5,$29,$74,$60,$53
Data.b $0E,$77,$17,$FE,$74,$A0,$45,$12,$FE,$EC,$62,$E0,$E2,$6F,$BE,$EF,$9B,$95,$67,$B1
Data.b $58,$C3,$AF,$18,$50,$60,$88,$40,$C9,$EF,$30,$4C,$14,$5F,$20,$BF,$6E,$DE,$52,$2A
Data.b $63,$C6,$CE,$C3,$09,$8D,$B7,$8C,$BF,$20,$EA,$66,$DB,$C7,$AE,$DC,$BE,$6E,$87,$93
Data.b $46,$3D,$70,$25,$42,$C4,$07,$FA,$1D,$DB,$A6,$7B,$AD,$84,$33,$D7,$AC,$B7,$44,$FA
Data.b $FC,$71,$FF,$EE,$85,$B8,$39,$27,$EF,$B9,$A5,$E9,$86,$3C,$72,$B4,$9E,$B4,$7B,$F7
Data.b $6B,$43,$67,$D9,$DF,$E6,$81,$57,$99,$CB,$58,$FA,$B8,$E7,$9B,$5D,$97,$A5,$33,$B9
Data.b $C8,$FA,$9D,$BF,$6C,$3F,$6D,$6D,$9A,$80,$36,$65,$39,$BB,$5B,$F9,$4C,$1D,$D0,$F4
Data.b $E4,$CA,$61,$CB,$FD,$BB,$E9,$41,$23,$7D,$DB,$BF,$EB,$4F,$B3,$EC,$03,$F5,$D3,$A2
Data.b $49,$FD,$15,$EA,$9A,$A8,$00,$00,$04,$83
Poubelleend:
EndDataSection