j'ai codé un gestionnaire de base de données, mais je bloque quand je modifie un enregistrement, car je voudrais afficher la base et je ne vois pas comment je peux faire.
Si vous pouviez m'aider, ça me soulagerait de ce fardeau que me cause ce problème et je vous en remercie par anticipation.
Code : Tout sélectionner
;- Enumerations / DataSections
Enumeration Fenetres
#Fenetre_Principale
#Fenetre_Creation_Proprietes
#Fenetre_Modification
EndEnumeration
Enumeration Gadgets
#Txt_Fichier_de_donnees
#Txt_Nombre_Champs
#Txt_Nom_Table
#Txt_Nom_Champ
#Txt_Type_Champ
#Str_Fichier_de_donnees
#Str_Nombre_Champs
#Str_Nom_Table
#Str_Nom_Champ
#Cmb_Type_Champ
#Btn_Valider
#Btn_Valider_Table
#Btn_Valider_Champs
#Btn_Valider_Construction
#Btn_Lister_Elements_Table
#Btn_Enregistrer
#Btn_Modifier
#Base_de_donnees
#Txt_IdTable
#Txt_BDD
#Str_BDD
#Txt_Table
#Cmb_Table
#LstIcn
EndEnumeration
Enumeration Menu
#Mnu_Fenetre_principale
#Mnu_Creation_Proprietes
#Mnu_Selection
#Mnu_AjouterEnregistrement
#Mnu_ModifierEnregistrement
#Mnu_SupprimerEnregistrement
#Mnu_Quitter
EndEnumeration
Enumeration Polices
#Police_Txt_BDD
#Police_Str_BDD
#Police_Txt_Table
#Police_Str_Table
#Police_ListIcon
EndEnumeration
Structure Champ
Nom.s
Type.s
EndStructure
Global Evenement, Nombre_Champs, IdTable, Gadget_0 = 0, Gadget_1
Global.s Fichier_de_donnees, Nom_du_champ, Type_du_champ, Table, ReqSQL
Global.s NewList nom(), NewList Donnee(), TitreApp = "Gestion de bases SQLite"
Global NewList Champs.Champ(), Dim _Texte_Nom(0), Dim _Nom_du_champ(0), Dim _Texte_Type(0), Dim _Type_du_champ(0), Dim Enregistrement.s(50,10), Texte$
Global Flags = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered
UseSQLiteDatabase()
Declare Erreur(Valeur)
Declare ColorerListe(gadget, gridColor=$006DA7,BgColorP=$FFC8C8,BgColorI=$FF8CFF,FgColorP=$000000,FgColorI=$000000)
Declare Event_SizeWindow()
;Création des propriétés de la base de données
Procedure Ouvrir_Fenetre_Creation_Proprietes()
If OpenWindow(#Fenetre_Creation_Proprietes, 0, 0, 420, 210, "Création Propriétés d'une Base de données", Flags)
TextGadget(#Txt_Fichier_de_donnees, 10, 15, 95, 20, "Fichier de données")
StringGadget(#Str_Fichier_de_donnees,110, 15, 280, 20, "")
ButtonGadget(#Btn_Valider, 325, 45, 60, 20, "Valider")
;Table
TextGadget(#Txt_Nom_Table, 10, 105, 100, 20, "Nom de la table :")
StringGadget(#Str_Nom_Table, 120, 105, 100, 20, "")
ButtonGadget(#Btn_Valider_Table, 325, 105, 60, 20, "Valider")
;Création champs
TextGadget(#Txt_Nombre_Champs, 10, 75, 100, 20, "Nombres de champs :")
StringGadget(#Str_Nombre_Champs, 120, 75, 100, 20, "")
ButtonGadget(#Btn_Valider_Champs, 325, 75, 60, 20, "Valider")
;Construction champs
ComboBoxGadget(#Cmb_Type_Champ, 100, 160, 200, 20)
AddGadgetItem(#Cmb_Type_Champ, -1, "DEC")
AddGadgetItem(#Cmb_Type_Champ, -1, "DOUBLE")
AddGadgetItem(#Cmb_Type_Champ, -1, "FLOAT")
AddGadgetItem(#Cmb_Type_Champ, -1, "NUMERIC")
AddGadgetItem(#Cmb_Type_Champ, -1, "REAL")
AddGadgetItem(#Cmb_Type_Champ, -1, "INT")
AddGadgetItem(#Cmb_Type_Champ, -1, "INTEGER")
AddGadgetItem(#Cmb_Type_Champ, -1, "WORD")
AddGadgetItem(#Cmb_Type_Champ, -1, "CHAR")
AddGadgetItem(#Cmb_Type_Champ, -1, "VARCHAR")
AddGadgetItem(#Cmb_Type_Champ, -1, "TEXT")
AddGadgetItem(#Cmb_Type_Champ, -1, "BLOB")
AddGadgetItem(#Cmb_Type_Champ, -1, "BINARY")
TextGadget(#Txt_Nom_Champ, 10, 140, 90, 20, "Nom du champ :")
TextGadget(#Txt_Type_Champ, 10, 160, 90, 20, "Type du champ :")
StringGadget(#Str_Nom_Champ, 100, 140, 200, 20, "")
ButtonGadget(#Btn_Valider_Construction, 325, 155, 60, 20, "OK")
SetActiveGadget(#Str_Fichier_de_donnees)
DisableGadget(#Str_Nom_Table, 1)
DisableGadget(#Str_Nombre_Champs, 1)
DisableGadget(#Str_Nom_Champ, 1)
DisableGadget(#Cmb_Type_Champ, 1)
EndIf
EndProcedure
;Création de la base de données
Procedure Creation_de_la_base()
If CreateFile(#Base_de_donnees, Fichier_de_donnees)
CloseFile(#Base_de_donnees)
Else
Erreur(0)
EndIf
;Ouverture de la base de données et création de la table
If OpenDatabase(#Base_de_donnees, Fichier_de_donnees, "", "", #PB_Database_SQLite)
;création de la base
ForEach Champs()
Texte$ + Champs()\Nom + " " + Champs()\Type + ", "
Next
Texte$ = Left(Texte$, Len(Texte$)-2)
ReqSQL = "Create table " + Table + "(IdTable INTEGER PRIMARY KEY AUTOINCREMENT, " + Texte$ + ")"
;éxécution de la requête
DatabaseUpdate(#Base_de_donnees, ReqSQL)
;La création de la base de données est terminée ... pour le moment
CloseDatabase(#Base_de_donnees)
MessageRequester("Information", "Création de la base " + Fichier_de_donnees + " terminée ")
Else
Erreur(1)
EndIf
EndProcedure
;Ouverture d'une base de données quelconque
Procedure OuvrirUneBaseDeDonnees()
FichierParDefaut$ = "*.SQL"
Filtre$ = "SQlite (*.Sqlite)|*.SQL*"
Filtre = 0
Fichier_de_donnees = OpenFileRequester("Sélectionnez le fichier à charger", FichierParDefaut$, Filtre$, Filtre)
If Fichier_de_donnees
; Liste des tables
OpenDatabase(#Base_de_donnees, Fichier_de_donnees, "", "", #PB_Database_SQLite)
SetGadgetText(#Str_BDD,Fichier_de_donnees)
ReqSQL = "SELECT * FROM sqlite_master ORDER BY type Desc, name Asc"
If DatabaseQuery(#Base_de_donnees, ReqSQL)
Index = 0
While NextDatabaseRow(#Base_de_donnees)
If LCase(GetDatabaseString(#Base_de_donnees, 0)) = "table"
Table = GetDatabaseString(#Base_de_donnees, 1)
AddGadgetItem(#Cmb_Table, -1, Table)
Index + 1
EndIf
Wend
Else
Erreur(1)
EndIf
HideGadget(#Btn_Lister_Elements_Table, 0)
SetGadgetText(#Cmb_Table, Table)
Else
MessageRequester("Information", "La sélection a été annulée.", 0)
EndIf
EndProcedure
;Affichage des enregistrements de la table choisie
Procedure ListerEnregistrements_Table()
ResizeWindow(#Fenetre_Principale, #PB_Ignore, WindowX(#Fenetre_Principale)-200, #PB_Ignore, 400)
ListIconGadget(#LstIcn, 10, 65, WindowWidth(#Fenetre_Principale)-20, WindowHeight(#Fenetre_Principale)-95, "", 0, #PB_ListIcon_FullRowSelect)
SetGadgetFont(#LstIcn, LoadFont(#Police_ListIcon, "Arial", 10, #PB_Font_HighQuality))
;lister la structure d'une table
Protected ReqSql.s = ""
Index = 0
Table = GetGadgetText(#Cmb_Table)
ClearGadgetItems(#LstIcn)
ReqSql = "Pragma table_info(" + Chr(34) + Table + Chr(34) + ")"
If DatabaseQuery(#Base_de_donnees, ReqSql)
While NextDatabaseRow(#Base_de_donnees)
AddElement(Champs())
Champs()\Nom = GetDatabaseString(#Base_de_donnees, 1) ;nom
Index + 1
Wend
FinishDatabaseQuery(#Base_de_donnees)
Else
MessageRequester("Erreur","La base de données " + FichierBdd + " a été refermée", #MB_ICONERROR)
EndIf
;Créer l'en-tête de la ListIcon
Index = 0
ForEach Champs()
AddGadgetColumn(#LstIcn, Index, Champs()\Nom, 200)
; Justifier les Colonnes 0 = à gauche, 1 = centré, 2 = à droite
;JustifierColonne(#LstIcn, Index, 0)
Index + 1
Next
; lister les éléments d'un table et remplir la ListIcon
Donnee$ = ""
i = 0
If DatabaseQuery(#Base_de_donnees, "SELECT * FROM " + table)
While NextDatabaseRow(#Base_de_donnees)
For Index = 0 To ListSize(Champs()) - 1
AddElement(Donnee())
Donnee() = GetDatabaseString(#Base_de_donnees, Index)
ReDim Enregistrement(50,i)
Enregistrement(Index, i) = Donnee()
Donnee$ + Donnee() + Chr(10)
;redimentionner les colonnes automatiquement
SendMessage_(GadgetID(#LstIcn), #LVM_SETCOLUMNWIDTH, Index, #LVSCW_AUTOSIZE)
Next
i + 1
AddGadgetItem(#LstIcn, -1, Donnee$ + #LF$)
Donnee$ = ""
Wend
;ColorerListe(#LstIcn)
IdTable = CountGadgetItems(#LstIcn)
ReDim Enregistrement(50, IdTable)
Else
Erreur(2)
EndIf
DisableGadget(#Cmb_Table,1)
EndProcedure
;Ajouter des éléments dans la base de données ouverte
Procedure Ajouter_Elements()
HideGadget(#LstIcn, 1)
Nombre_Champs = IdTable
;Adapter nos tableaux au nombre de champs
ReDim _Texte_Nom(Nombre_Champs)
ReDim _Nom_du_champ(Nombre_Champs)
ReDim _Texte_Type(Nombre_Champs)
ReDim _Type_du_champ(Nombre_Champs)
i = 1
ForEach Champs()
_Texte_Nom(I) = TextGadget(#PB_Any, 10, (80+(25*i)), 90, 20, Champs()\Nom + " : ")
_Nom_du_champ(I) = StringGadget(#PB_Any, 100, (80+(25*i)), 300, 20, "")
i+1
Next
ButtonGadget(#Btn_Enregistrer, (WindowWidth(#Fenetre_Principale)-160)/2, (100+(25*i)), 160, 25, "Enregistrer")
SetGadgetText(_Nom_du_champ(1), Str(IdTable))
SetActiveGadget(_Nom_du_champ(2))
EndProcedure
;Enregistrement des élements ajoutés précédemment
Procedure Enregistrer()
i = 1
ForEach Champs()
HideGadget(_Texte_Nom(i),1)
HideGadget(_Nom_du_champ(i),1)
i+1
Next
HideGadget(#Btn_Enregistrer,1)
ReqSQL = "INSERT INTO " + Chr(34) + Table + Chr(34) + " ("
ForEach Champs()
ReqSQL + Chr(34) + Champs()\Nom + Chr(34) + ","
Next
ReqSQL = Left(ReqSQL, Len(ReqSQL)-1) + ") VALUES ("
i = 1
ForEach Champs()
ReqSQL + Chr(34) + GetGadgetText(_Nom_du_champ(i)) + Chr(34) + ", "
i + 1
Next
ReqSQL = Left(ReqSQL, Len(ReqSQL)-2) + ")"
If DatabaseQuery(#Base_de_donnees, ReqSQL) <> 0
DatabaseUpdate(#Base_de_donnees, ReqSQL)
MessageRequester("Information", "Enregistrement effectué", #MB_ICONINFORMATION)
Else
MessageRequester("Erreur", DatabaseError())
EndIf
HideGadget(#LstIcn, 0)
ListerEnregistrements_Table()
EndProcedure
;Valider le nombre de champs et les créer
Procedure Valider_Champs()
SetActiveGadget(#Str_Nom_Table)
If Nombre_Champs < 2
Nombre_Champs = Val(GetGadgetText(#Str_Nombre_Champs))
EndIf
If Nombre_Champs > 0
DisableGadget(#Str_Nom_Table, 0)
;Adaptons nos tableaux aux nombre de champs
ReDim _Texte_Nom(Nombre_Champs)
ReDim _Nom_du_champ(Nombre_Champs)
ReDim _Texte_Type(Nombre_Champs)
ReDim _Type_du_champ(Nombre_Champs)
;Rajoutons des gadgets
If Nombre_Champs > 1
X = 0
For i = 2 To Nombre_Champs
_Texte_Nom(i) = TextGadget(#PB_Any, 10, (100+(40*i)), 90, 20, "Nom du champ :")
_Nom_du_champ(i) = StringGadget(#PB_Any, 100, (100+(40*i)), 100, 20, "")
_Texte_Type(i) = TextGadget(#PB_Any, 10, 120+(40*i), 90, 20, "Type du champ :")
_Type_du_champ(i) = ComboBoxGadget(#PB_Any, 100, 120+(40*i), 200, 20)
AddGadgetItem(_Type_du_champ(i), -1, "DEC")
AddGadgetItem(_Type_du_champ(i), -1, "DOUBLE")
AddGadgetItem(_Type_du_champ(i), -1, "FLOAT")
AddGadgetItem(_Type_du_champ(i), -1, "NUMERIC")
AddGadgetItem(_Type_du_champ(i), -1, "REAL")
AddGadgetItem(_Type_du_champ(i), -1, "INT")
AddGadgetItem(_Type_du_champ(i), -1, "INTEGER")
AddGadgetItem(_Type_du_champ(i), -1, "WORD")
AddGadgetItem(_Type_du_champ(i), -1, "CHAR")
AddGadgetItem(_Type_du_champ(i), -1, "VARCHAR")
AddGadgetItem(_Type_du_champ(i), -1, "TEXT")
AddGadgetItem(_Type_du_champ(i), -1, "BLOB")
AddGadgetItem(_Type_du_champ(i), -1, "BINARY")
X + 40
Next
ResizeWindow(#Fenetre_Creation_Proprietes, #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(#Fenetre_Creation_Proprietes) + X)
EndIf
EndIf
EndProcedure
;Remplir la liste et créer la base de données
Procedure Valider_Construction()
For i = 1 To Nombre_Champs
AddElement(Champs())
Nom_du_champ = GetGadgetText(#Str_Nom_Champ)
Type_du_champ = GetGadgetText(#Cmb_Type_Champ)
Champs()\Nom = Nom_du_champ
Champs()\Type = Type_du_champ
If i > 1
Champs()\Nom = GetGadgetText(_Nom_du_champ(i))
Champs()\Type = GetGadgetText(_Type_du_champ(i))
HideGadget(_Nom_du_champ(i),1)
HideGadget(_Type_du_champ(i),1)
EndIf
Next
Creation_de_la_base()
;Faire réapparaître la fenêtre principale
HideWindow(#Fenetre_Principale, 0)
EndProcedure
;Mise en place d'un nouvel enregistrement
Procedure Nouvel_Enregistrement()
SetGadgetText(#Txt_IdTable,"")
EndProcedure
;Modifier les éléments de l'enregistrement courant
Procedure Modifier_Elements()
HideWindow(#Fenetre_Principale, 1)
;HideGadget(#LstIcn, 1)
IdTable = GetGadgetState(#LstIcn)
If OpenWindow(#Fenetre_Modification, 0, 0, WindowWidth(#Fenetre_Principale), WindowHeight(#Fenetre_Principale), "Modification de l'enregistrement " + IdTable, Flags)
;Mettre dans le gadget la valeur de l'enregistrement avant modification
i = 0
ForEach Champs()
Gadget_1 = TextGadget(#PB_Any, 10, (10+(25*i)), 90, 20, Champs()\Nom + " : ")
StringGadget(Gadget_0 + i, 100, (10+(25*i)), 300, 20, "")
SetGadgetText(Gadget_0 + i, Enregistrement(Gadget_0 + i,IdTable))
i + 1
Next
ButtonGadget(#Btn_Modifier, (WindowWidth(#Fenetre_Modification)-160)/2, (100+(25*i)), 160, 25, "Modifier")
EndIf
EndProcedure
;Modification d'un enregistrement
Procedure Sauvegarder_Modification()
;tenir compte de la modification
i = 0
ForEach Champs()
Enregistrement(i,IdTable) = GetGadgetText(i)
i + 1
Next
ReqSQL = "UPDATE " + Table + " SET "
i = 0
ForEach Champs()
ReqSQL + Chr(34) + Champs()\Nom + Chr(34) + " = " + Chr(34) + Enregistrement(i,GetGadgetState(#LstIcn)) + Chr(34) + ","
i + 1
Next
ReqSQL = Left(ReqSQL, Len(ReqSQL)-1)
ReqSQL + " WHERE IdTable = " + GetGadgetState(#LstIcn)
Debug ReqSQL
If DatabaseUpdate(#Base_de_donnees, ReqSQL)
MessageRequester(TitreApp, "Enregistrement modifié")
Else
Erreur(2)
EndIf
HideWindow(#Fenetre_Modification, 1)
HideWindow(#Fenetre_Principale, 0)
EndProcedure
;Supprimer un enregistrement
Procedure Supprimer_Enregistrement()
ReqSQL = "DELETE FROM " + Chr(34) + Table + Chr(34) + " WHERE IdTable = " + GetGadgetState(#LstIcn)
If DatabaseUpdate(#Base_de_donnees, ReqSQL)
Nouvel_Enregistrement()
ListerEnregistrements_Table()
MessageRequester(TitreApp, "Enregistrement supprimé")
Else
Erreur(2)
EndIf
EndProcedure
;Procédure principale
Procedure Ouvrir_Fenetre_principale()
If OpenWindow(#Fenetre_Principale, 452, 311, 700, 125, "Gestion d'une base de données SQLite", Flags)
If CreateMenu(#Mnu_Fenetre_principale, WindowID(#Fenetre_Principale))
MenuTitle("Fichier")
MenuItem(#Mnu_Creation_Proprietes, "Création des propriétés d'une base" + Chr(9) + "Ctrl+C")
AddKeyboardShortcut(#Fenetre_Principale, #PB_Shortcut_Control|#PB_Shortcut_C, #Mnu_Creation_Proprietes)
MenuItem(#Mnu_Selection, "Ouvrir une base existante" + Chr(9) + "Ctrl+O")
AddKeyboardShortcut(#Fenetre_Principale, #PB_Shortcut_Control|#PB_Shortcut_O, #Mnu_Selection)
MenuBar()
MenuItem(#Mnu_Quitter, "Quitter" + Chr(9) + "Ctrl+Q")
AddKeyboardShortcut(#Fenetre_Principale, #PB_Shortcut_Control|#PB_Shortcut_Q, #Mnu_Quitter)
MenuTitle("Enregistrement")
MenuItem(#Mnu_AjouterEnregistrement, "Ajouter un enregistrement" + Chr(9) + "Ctrl+A")
AddKeyboardShortcut(#Fenetre_Principale, #PB_Shortcut_Control|#PB_Shortcut_A, #Mnu_AjouterEnregistrement)
MenuItem(#Mnu_ModifierEnregistrement, "Modifier un enregistrement" + Chr(9) + "Ctrl+M")
AddKeyboardShortcut(#Fenetre_Principale, #PB_Shortcut_Control|#PB_Shortcut_M, #Mnu_ModifierEnregistrement)
MenuItem(#Mnu_SupprimerEnregistrement, "Supprimer un enregistrement" + Chr(9) + "Ctrl+U")
AddKeyboardShortcut(#Fenetre_Principale, #PB_Shortcut_Control|#PB_Shortcut_U, #Mnu_SupprimerEnregistrement)
EndIf
;Gadgets
TextGadget(#Txt_BDD, 10, 10, 105, 20, "Base de données")
StringGadget(#Str_BDD, 120, 10, WindowWidth(#Fenetre_Principale)-(120+GadgetX(#Txt_BDD)), 20, "")
TextGadget(#Txt_Table, 10, 35, 105, 20, "Table")
ComboBoxGadget(#Cmb_Table, 120, 35, WindowWidth(#Fenetre_Principale)-(120+GadgetX(#Txt_Table)), 25)
ListIconGadget(#LstIcn, 10, 20, 0, 0, "", 0)
ButtonGadget(#Btn_Lister_Elements_Table, (WindowWidth(#Fenetre_Principale)-160)/2, 70, 160, 25, "Lister les éléments de la table")
TextGadget(#Txt_IdTable, 10, WindowWidth(#Fenetre_Principale) - 30, 60, 20, "")
; Polices Gadgets
SetGadgetFont(#Txt_BDD, LoadFont(#Police_Txt_BDD, "Arial", 10, #PB_Font_HighQuality))
SetGadgetFont(#Str_BDD, LoadFont(#Police_Str_BDD, "Arial", 10, #PB_Font_HighQuality))
SetGadgetFont(#Txt_Table, LoadFont(#Police_Txt_Table, "Arial", 10, #PB_Font_HighQuality))
SetGadgetFont(#Cmb_Table, LoadFont(#Police_Str_Table, "Microsoft Sans Serif", 10, #PB_Font_HighQuality))
BindEvent( #PB_Event_SizeWindow, @Event_SizeWindow() )
HideGadget(#Btn_Lister_Elements_Table, 1)
EndIf
EndProcedure
Ouvrir_Fenetre_principale()
;- Boucle événementielle
Repeat
Evenement = WaitWindowEvent()
Select Evenement
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Valider
If GetGadgetText(#Str_Fichier_de_donnees) <> ""
If GetExtensionPart(GetGadgetText(#Str_Fichier_de_donnees)) = ""
Fichier_de_donnees = GetGadgetText(#Str_Fichier_de_donnees) + ".SQLite"
EndIf
DisableGadget(#Str_Nombre_Champs, 0)
SetActiveGadget(#Str_Nombre_Champs)
EndIf
Case #Btn_Valider_Champs
Valider_Champs()
Case #Btn_Valider_Table
Table = GetGadgetText(#Str_Nom_Table)
DisableGadget(#Str_Nom_Champ, 0)
DisableGadget(#Cmb_Type_Champ, 0)
SetActiveGadget(#Str_Nom_Champ)
;Construction_Champs()
Case #Btn_Valider_Construction
Valider_Construction()
Case #Btn_Lister_Elements_Table
HideGadget(#Btn_Lister_Elements_Table, 1)
ListerEnregistrements_Table()
Case #Btn_Enregistrer
Enregistrer()
Case #Btn_Modifier
Sauvegarder_Modification()
EndSelect
Case #PB_Event_Menu
Select EventMenu()
;Fichier
Case #Mnu_Creation_Proprietes
HideWindow(#Fenetre_Principale, 1)
Ouvrir_Fenetre_Creation_Proprietes()
Case #Mnu_Selection
OuvrirUneBaseDeDonnees()
Case #Mnu_AjouterEnregistrement
Ajouter_Elements()
Case #Mnu_ModifierEnregistrement
Modifier_Elements()
Case #Mnu_SupprimerEnregistrement
Supprimer_Enregistrement()
Case #Mnu_Quitter
End
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_Principale
CloseWindow(#Fenetre_Principale)
Break
Case #Fenetre_Creation_Proprietes
CloseWindow(#Fenetre_Creation_Proprietes)
HideWindow(#Fenetre_Principale, 0)
Case #Fenetre_Modification
CloseWindow(#Fenetre_Modification)
HideWindow(#Fenetre_Principale, 0)
EndSelect
EndSelect
ForEver
;Gestion des erreurs
Procedure Erreur(Valeur)
Select Valeur
Case 0 ;Erreur de creéation
MessageRequester(TitreApp, "Erreur pendant la création")
Case 1 ;Base non accessible
MessageRequester(TitreApp, "La base n'est pas accessible " + DatabaseError())
Case 2 ;Erreur dans la requête
MessageRequester(TitreApp, "Erreur dans la requête " + DatabaseError())
EndSelect
;sortie de l'application
End
EndProcedure
;Coloration alternée
Procedure ColorerListe(gadget, gridColor=$006DA7,BgColorP=$FFC8C8,BgColorI=$FF8CFF,FgColorP=$000000,FgColorI=$000000)
Protected Nb=CountGadgetItems(gadget)
If SendMessage_(GadgetID(gadget),#LVM_GETCOUNTPERPAGE,0,0)>Nb
;Nb=SendMessage_(GadgetID(gadget),#LVM_GETCOUNTPERPAGE,0,0)
For N=CountGadgetItems(gadget) To Nb-1
AddGadgetItem(gadget,-1,"")
Next
EndIf
SetGadgetColor(gadget,#PB_Gadget_LineColor,gridColor)
For N=1 To Nb
If N & 1
SetGadgetItemColor(gadget,N-1,#PB_Gadget_BackColor,BgColorI)
SetGadgetItemColor(gadget,N-1,#PB_Gadget_FrontColor,FgColorI)
Else
SetGadgetItemColor(gadget,N-1,#PB_Gadget_BackColor,BgColorP)
SetGadgetItemColor(gadget,N-1,#PB_Gadget_FrontColor,FgColorP)
EndIf
Next
EndProcedure
;Redimensionnement de la fenêtre et des gadgets
Procedure Event_SizeWindow()
ResizeGadget(#Str_BDD, #PB_Ignore,#PB_Ignore, WindowWidth(#Fenetre_Principale)-(120+GadgetX(#Txt_BDD)), #PB_Ignore)
ResizeGadget(#Cmb_Table, #PB_Ignore, #PB_Ignore, WindowWidth(#Fenetre_Principale)-(120+GadgetX(#Txt_Table)), #PB_Ignore)
ResizeGadget(#LstIcn,#PB_Ignore,#PB_Ignore,WindowWidth(#Fenetre_Principale)-(GadgetX(#Txt_Table)*2), WindowHeight(#Fenetre_Principale)-(GadgetHeight(#Txt_BDD)+GadgetHeight(#Txt_Table)+55))
EndProcedure