Cet exemple presque complet devrait répondre à ton souci.
-Création de la base de données si inexistant (Identifiant enregistrement, Date et Memo Texte).
-Visualisation (Liste et Fiche) , Ajout, Modification et suppression d'un enregistrement
Dans chaque cas la date est traitée.
Code : Tout sélectionner
EnableExplicit
Enumeration
#Database
#MainForm
#Vision
#Idtable
#Date
#Memo
#Btn_New
#Btn_View
#Btn_Update
#Btn_Del
EndEnumeration
;Application
Global ApplicationTitle.s="SQLite : Manipulation de dates"
;Database
Global Database.s="MaBase.Sqlite"
Global ReqSql.s = ""
;Mode mise à jour (0 : Rien 1 : Ajout 2 : Mise à jour
Global ModeUpdate.l = 0
;Description de la date
Global AA.s, MM.s, JJ.s
UseSQLiteDatabase()
;Gestionnaire d'erreurs
Procedure Errors(Value.l)
Select Value
Case 0 ;Erreur dans la création de la base de données
MessageRequester(ApplicationTitle,"Erreur durant la création de la base de données")
Case 1 ;Base pas accessible
MessageRequester(ApplicationTitle,"La base de donnée n'est pas accessible "+DatabaseError())
Case 2 ;Erreur lors del l'execution de la requete
MessageRequester(ApplicationTitle,"Erreur durant l'exécution de la requete "+DatabaseError())
EndSelect
;Sortie de l'application
End
EndProcedure
;Création de la base de données
Procedure DatabaseCreate()
If CreateFile(#Database, Database)
CloseFile(#Database)
Else
Errors(0)
EndIf
If OpenDatabase(#Database, Database, "", "", #PB_Database_SQLite)
;Création de la table MaTable
ReqSql = "CREATE TABLE MaTable (idtable INTEGER PRIMARY KEY, date TEXT, memo TEXT)"
DatabaseUpdate(#Database, ReqSql)
;La création de la base de données est terminée
CloseDatabase(#Database)
MessageRequester(ApplicationTitle,"Création de la base terminée")
Else
Errors(1)
EndIf
EndProcedure
;Ouverture de la base de données
Procedure DatabaseOpen()
If OpenDatabase(#Database, Database, "", "", #PB_Database_SQLite)
Else
Errors(1)
End
EndIf
EndProcedure
;Liste des enregistrements
Procedure ListeRecords()
ClearGadgetItems(#Vision)
If DatabaseQuery(#Database, "select * from matable order by date asc")
While NextDatabaseRow(#Database)
AA=Mid(GetDatabaseString(#Database,1), 1, 4)
MM=Mid(GetDatabaseString(#Database,1), 5, 2)
JJ=Mid(GetDatabaseString(#Database,1), 7, 2)
AddGadgetItem(#Vision, -1, JJ+"/"+MM+"/"+AA+Chr(10)+GetDatabaseString(#Database, 2))
SetGadgetItemData(#Vision, CountGadgetItems(#Vision)-1, GetDatabaseLong(#Database, 0))
Wend
FinishDatabaseQuery(#Database)
Else
Errors(2)
EndIf
EndProcedure
;Mise en place d'un nouvel enregistrement
Procedure NewRecord()
SetGadgetText(#Idtable,"")
SetGadgetState(#Date, Date())
SetGadgetText(#Memo,"")
ModeUpdate=1 ;Mode Creation
EndProcedure
;Affichage d'un enregistrement selectionné dans la liste
Procedure ViewRecord()
ReqSql="Select * from matable where idtable="+Str(GetGadgetItemData(#Vision, GetGadgetState(#Vision)))
If DatabaseQuery(#Database, ReqSql) <> 0
While NextDatabaseRow(#Database)
SetGadgetText(#Idtable, GetDatabaseString(#Database,0))
SetGadgetText(#Memo, GetDatabaseString(#Database,2))
AA=Mid(GetDatabaseString(#Database,1), 1, 4)
MM=Mid(GetDatabaseString(#Database,1), 5, 2)
JJ=Mid(GetDatabaseString(#Database,1), 7, 2)
SetGadgetState(#Date, Date(Val(AA), Val(MM), Val(JJ), 00, 00, 00))
SetGadgetText(#Date, "%dd/%mm/%yyyy")
Wend
FinishDatabaseQuery(#Database)
ModeUpdate=2
Else
Errors(2)
EndIf
EndProcedure
;Ajout d'un enregistrement
;SQlite implique de doubler les apostrophes
Procedure AddRecord()
AA =Mid(GetGadgetText(#Date),7,4)
MM = Mid(GetGadgetText(#Date),4,2)
JJ = Mid(GetGadgetText(#Date),1,2)
ReqSql = "insert into matable (date, memo) values ('"
ReqSql + AA+MM+JJ + "','"
ReqSql + ReplaceString(GetGadgetText(#Memo), "'", "''")+"')"
If DatabaseUpdate(#Database, ReqSql) <>0
ListeRecords()
MessageRequester(ApplicationTitle,"Enregistrement ajouté")
ModeUpdate=2
Else
Errors(2)
EndIf
EndProcedure
;Mise à jour d'un enregistrement
Procedure UpdateRecord()
AA =Mid(GetGadgetText(#Date),7,4)
MM = Mid(GetGadgetText(#Date),4,2)
JJ = Mid(GetGadgetText(#Date),1,2)
ReqSql="update matable set "
ReqSql + "date='" + AA+MM+JJ +"',"
ReqSql + "memo='" + ReplaceString(GetGadgetText(#Memo), "'", "''") + "'"
ReqSql + "where idtable=" + GetGadgetText(#Idtable)
If DatabaseUpdate(#Database, ReqSql) <>0
ListeRecords()
MessageRequester(ApplicationTitle,"Enregistrement modifié")
ModeUpdate=2
Else
Errors(2)
EndIf
EndProcedure
;Suppression d'un enregistrement
Procedure DelRecord()
ReqSql = "delete from matable where idtable = "+ Str(GetGadgetItemData(#Vision, GetGadgetState(#Vision)))
If DatabaseUpdate(#Database, ReqSql) <>0
NewRecord()
ListeRecords()
MessageRequester(ApplicationTitle,"Enregistrement supprimé")
Else
Errors(2)
EndIf
EndProcedure
Procedure MainFormShow()
OpenWindow(#Mainform, 0, 0, 760, 300, ApplicationTitle)
ListIconGadget(#Vision, 20, 50, 300, 230, "Date", 80,#PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#Vision, 1, "Mémo", 215)
TextGadget(#Idtable, 550, 50, 80, 22, "")
DateGadget(#Date, 350, 50, 110 , 24)
EditorGadget(#Memo, 350, 80, 300, 200)
SetActiveGadget(#Memo)
ButtonGadget(#Btn_New, 670, 50, 80, 22, "Nouveau")
ButtonGadget(#Btn_Update, 670, 75, 80, 22, "Enregistrer")
ButtonGadget(#Btn_Del, 670, 100, 80, 22, "Supprimer")
ModeUpdate=1 ;Mode Création à l'ouverure de l'application
EndProcedure
MainFormShow()
;Création de la base de données si inexistant
If Not ReadFile(#Database, Database)
DatabaseCreate()
Else
CloseFile(#Database)
EndIf
;Ouverture de la base de données
DatabaseOpen()
;Montre les mémos
ListeRecords()
;Analyse des évenements
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #MainForm
End
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Vision
ViewRecord()
Case #Btn_New ;Nouveau mémo
NewRecord()
Case #Btn_Del ; Suppression d'un mémo
If ModeUpdate=2
DelRecord()
Else
NewRecord()
EndIf
Case #Btn_Update ;Ajout ou modification d'un mémo
Select ModeUpdate
Case 1 ;Ajout
AddRecord()
Case 2 ;Mise à jour
UpdateRecord()
EndSelect
EndSelect
EndSelect
ForEver