Italian [risolto] B4J - Ancora da codice

Star-Dust

Expert
Licensed User
Longtime User
Più che altro c'è il grosso rischio che non vengano mantenute aggiornate!
vero anche questo.....poi dipende da che libreria parliamo. alcune non serve aggiornarle.
 

Star-Dust

Expert
Licensed User
Longtime User
Interessante ma tutte queste librerie (che ha volte non hanno seguito e con bug) preferisco non usarne troppe, se c'è qualcosa di nativo dove puoi controllare il flusso è meglio.
Hai cambiato politica? Adesso usi librerie di terzi non native con un supporto altalenante? (mi riferisco a jAgenda)
 

ivanomonti

Expert
Licensed User
Longtime User
Hai cambiato politica? Adesso usi librerie di terzi non native con un supporto altalenante? (mi riferisco a jAgenda)
Sono obbligato, domani vorrei presentare una demo e il mio calendario non è stabile come vorrei, quindi si, avrei preferito usare qualcosa di nativo o di finito per bene, come vedi ho infilato jAgenda ma ho già dei problemi negli eventi nascosti.. (magari c'è la funzione ma come al solito manca un manuale)

2020-05-03_130342.jpg
 

Star-Dust

Expert
Licensed User
Longtime User
Sono obbligato, domani vorrei presentare una demo e il mio calendario non è stabile come vorrei, quindi si, avrei preferito usare qualcosa di nativo o di finito per bene, come vedi ho infilato jAgenda ma ho già dei problemi negli eventi nascosti.. (magari c'è la funzione ma come al solito manca un manuale)

View attachment 93156
Pensavo fa facevi per te non per altri
 

ivanomonti

Expert
Licensed User
Longtime User
@Star-Dust certo per me in primus ma gia vogliono vederla ;-) cmq ho un botto di problemi con questa classe JAgenda poi questa frase Error: Invalid value: dopo Cristo 2020202001 000000


B4X:
Waiting for debugger to connect...
Program started.
mLogin
2020-04-01
Error: Invalid value: dopo Cristo 2020202001 000000
Errore nella linea: 230
java.lang.NumberFormatException: For input string: "invalid date"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at b4j.example.dateutils._setdateandtime(dateutils.java:441)
    at b4j.example.dateutils._setdate(dateutils.java:405)
    at b4j.example.dateutils._numberofdaysinmonth(dateutils.java:222)
    at b4j.example.jagenda._refreshuserevents(jagenda.java:913)
    at b4j.example.jagenda._addevent(jagenda.java:209)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:676)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:240)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:91)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
    at anywheresoftware.b4a.debug.Debug.delegate(Debug.java:64)
    at b4j.example.main._loadagend(main.java:363)
    at b4j.example.main._actions_action(main.java:138)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at anywheresoftware.b4a.debug.Debug.CallSub4(Debug.java:115)
    at anywheresoftware.b4a.debug.Debug.CallSubNew2(Debug.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at anywheresoftware.b4a.keywords.Common.CallSubDebug2(Common.java:460)
    at b4j.example.classglobal._actions_action(classglobal.java:308)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:632)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:91)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
    at anywheresoftware.b4a.BA$1.run(BA.java:216)
    at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191)
    at java.lang.Thread.run(Thread.java:745)
 

ivanomonti

Expert
Licensed User
Longtime User
seguo le sue richieste ma boh :-(

2020-05-03_140128.jpg


B4X:
DateTime.DateFormat="yyyy-MM-dd"
    Dim Year,Month, Day, DayNumber As Int
    
    Do While rs.NextRow
        Log(rs.GetString("dateapp"))
        Year = DateTime.GetYear(DateTime.DateParse(rs.GetString("dateapp")))
        Month = DateTime.GetYear(DateTime.DateParse(rs.GetString("dateapp")))
        Day = DateTime.GetDayOfWeek(DateTime.DateParse(rs.GetString("dateapp")))
        DayNumber = DateTime.GetDayOfWeek(DateTime.DateParse(rs.GetString("dateapp")))
        mClassCalendar.mAgenda.addEvent(rs.GetString("title"), Year, Month, Day, DayNumber, rs.GetString("associates"), rs.GetString("timeapp"),  rs.GetString("fulladdress"), fx.Colors.ARGB(200,255,0,0), -1)
    Loop
 

ivanomonti

Expert
Licensed User
Longtime User
No è il maledetto copia e incolla che faccio per non scrivere ,,,,
Month = DateTime.GetYear(DateTime.DateParse(rs.GetString("dateapp")))
 

ivanomonti

Expert
Licensed User
Longtime User
ecco uno dei motivi perché le librerie chiuse sono una cagata, non puoi correggere se non chiamando il proprietario o smontarla pezzo per pezzo, i dati inseriti non giusti ,a l'impaginazione va oltre la sua casella, caricare 2 mesi di appuntamenti (circa 240) ci impiega una raffica che devo fare un trhead a parte mmmm vabbè a vederla sembra figa ma poi se non riesci ad usarla che serve.

Avete altre info per calendari più validi? e veloci da implementare
 

Attachments

  • 2020-05-03_141927.jpg
    2020-05-03_141927.jpg
    183.8 KB · Views: 169

LucaMs

Expert
Licensed User
Longtime User
Ho una dritta su come gestire i record di un db, o meglio come e dove memorizzarne i dati, affinché il codice sia più leggibile e "comodo" da usare.

Ti interessa? Se sì, apri lo spoiler; se no... chissenefrega 😁

Metodo 1: creare un type corrispondente al record.
Es. Hai un record di un cliente:
Type tCliente(Nome As String, Cognome As String, etc.)
Quando leggi un record da db, lo inserisci in una variabile di tipo tCliente (Dim Cliente As tCliente...).
Ti fai un bel modulo di codice per la gestione del DB di quella specifica applicazione, ovvero ci metti tutte le routine sia per l'inizializzazione del DB, sia per le classiche operazioni CRUD.

Metodo 2 (migliore del 1): stessa cosa ma, anziché usare un type, crei una classe Cliente.

Per il "calendario" (agenda) ne sviluppai uno su commissione; peccato che fosse per Android!
Ho visto (non tanto "letto") la tua domanda, come recuperare eventi nascosti, ma:

1 - non so se esista la possibilità di farlo e...
2 - non so nemmeno se esistano questi "eventi nascosti" (in cui "eventi" non ha a che fare con eventi di programmazione, ovviamente, ma eventi segnati nell'agenda)
 

Star-Dust

Expert
Licensed User
Longtime User
seguo le sue richieste ma boh :-(

View attachment 93158

B4X:
DateTime.DateFormat="yyyy-MM-dd"
    Dim Year,Month, Day, DayNumber As Int
   
    Do While rs.NextRow
        Log(rs.GetString("dateapp"))
        Year = DateTime.GetYear(DateTime.DateParse(rs.GetString("dateapp")))
        Month = DateTime.GetYear(DateTime.DateParse(rs.GetString("dateapp")))
        Day = DateTime.GetDayOfWeek(DateTime.DateParse(rs.GetString("dateapp")))
        DayNumber = DateTime.GetDayOfWeek(DateTime.DateParse(rs.GetString("dateapp")))
        mClassCalendar.mAgenda.addEvent(rs.GetString("title"), Year, Month, Day, DayNumber, rs.GetString("associates"), rs.GetString("timeapp"),  rs.GetString("fulladdress"), fx.Colors.ARGB(200,255,0,0), -1)
    Loop
La data è memorizzata come long? DateTime.DateFormat="yyyy-MM-dd" a cosa serve allora ?
di solito cambiare il fornato è una pessima idea
 

ivanomonti

Expert
Licensed User
Longtime User
e come la richiede jAgenda che ho già eliminato, procedo velocemente con un mio cerotto
 
Top