With your precious help I managed to make it. Here is the code:
Code: Select all
UseSQLiteDatabase()
Procedure CheckDatabaseUpdate(Database, Query$)
Result = DatabaseUpdate(Database, Query$)
If Result = 0
Debug DatabaseError()
EndIf
ProcedureReturn Result
EndProcedure
Procedure DaysOfMonth(Month.a, Year.i)
Select Month
Case 1,3,5,7,8,10,12
ProcedureReturn 31
Case 4,6,9,11
ProcedureReturn 30
Case 2
If Mod(Year, 4) = 0
ProcedureReturn 29
Else
ProcedureReturn 28
EndIf
EndSelect
EndProcedure
DatabaseFile$ = "C:\Users\user7\Desktop\project\data.file"
OpenWindow(0,0,0,600,400,"test",#PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
ListIconGadget(0,10,10,580,380,"id",40,#PB_ListIcon_FullRowSelect | #PB_ListIcon_GridLines)
AddGadgetColumn(0,1,"Last name",80)
AddGadgetColumn(0,2,"First name",80)
daysCount.a = DaysOfMonth(9,2019);let's say we need to check September
For i=1 To daysCount
AddGadgetColumn(0,i+2,Str(i),25)
Next
For i=1 To daysCount+3;+3 for id, first and last name
txt.s + #LF$ + "";use it to create blank cells. Cannot put data in the gadget without it first.
Next
For i=1 To 6
AddGadgetItem(0,-1,txt)
Next
row.i = -1: tmp_id.s
If OpenDatabase(0, DatabaseFile$, "", "")
If DatabaseQuery(0, "SELECT W.first_name, W.last_name, H.date, H.working_hours FROM Workers W INNER JOIN Hours H WHERE W.id = H.id AND H.date >= '2019-09-01' AND H.date <='2019-09-30' ORDER BY H.id,H.date")
While NextDatabaseRow(0)
If tmp_id <> GetDatabaseString(0, 0)
row + 1
tmp_id = GetDatabaseString(0, 0)
SetGadgetItemText(0,row,GetDatabaseString(0, 0),0)
SetGadgetItemText(0,row,GetDatabaseString(0, 1),1)
SetGadgetItemText(0,row,GetDatabaseString(0, 2),2)
EndIf
dte.a = Val(Mid(GetDatabaseString(0, 3),9,2))
SetGadgetItemText(0,row,GetDatabaseString(0, 4),dte+2)
Wend
FinishDatabaseQuery(0)
EndIf
CloseDatabase(0)
Else
Debug "Can't open database !"
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
but now I have to deal with another problem. If we check to show two or more months instead of one, how can we show them? Every month in a different list icon gadget? If yes, where will the other gadgets be in my window? Each one in a different panel gadget tab?