Autore Topic: Programma di Contabilità familiare  (Letto 6827 volte)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #30 il: 01 Dicembre 2011, 09:29:54 »
volevo segnalarti che attualmente il tuo programma non funziona :)

il problema principale è che che hai impostato il percorso del database con

Codice: [Seleziona]
STATIC PUBLIC $_DbPath AS String = Application.Path & "/ContabFam_DB"                     'Percorso di ricerca del Database ContabFam.db"
STATIC PUBLIC $_DbNome AS String = "ContabFamdb"        'Nome del Database

il problema è che la cartella  ContabFam_DB non esiste  e nessuna parte del codice si occupa di crearla.

inoltre come già scritto innumerevoli volte ti sconsiglio di dare al db il percorso tramite application.path.

questo perchè se tu deciderai di distribuire il programma in pacchetti precompilati , ad esempio .deb, l' eseguibile gambas sarà posizionato in /usr/bin per cui durante l' utilizzo non si avranno i permessi per creare nuovi file in tale cartella , di conseguenza nessuno potrà usare il tuo software.

ti consiglio di far creare al primo avvio una cartella con il nome del programma nella home dell' utente (a tua scelta se farla nascosta o visibile,quasi tutti i programmi la creano nascosta)in cui andrai a salvare il database e altri file in cui ci devi scrivere informazioni.
« Ultima modifica: 01 Dicembre 2011, 09:37:29 da fsurfing »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Programma di Contabilità familiare
« Risposta #31 il: 02 Dicembre 2011, 07:57:52 »
wath's g3?   :rotfl:

Veramente non lo so. Io non sono approdato in codesta avanzata spiaggia. Te lo saprò dire fra qualche mese.  :rotfl:

 :ciao:  :ciao:

il programma viene convertito e caricato da gaambas3 ma non parte, per quanto riguarda la directory di partenza del programma, ti dico come faccio io:
ho nella mia home di utente linux due cartelle:
- cartella GAMBAS dove sono gli applicativi principali, ognuno in una subcartella
- cartella GAMBASTEST dove metto i test e le prove

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #32 il: 02 Dicembre 2011, 23:06:43 »
@ fsurfing:
Aaaaaaaah!    :-[ Mi dispiace non averci pensato.
Grazie per avermelo segnalato.
Dovrò apportare le dovute correzioni, lo farò non appena avrò portato amtermine una piccola anomalia che ho scoperto, nel frattempo, durante la registrazione di movimenti effettivi. Intanto, non nascondo di non avere le idee chiare sul come fare per:
-->
Citazione
dare al db il percorso tramite application.path
così come mi consigli. Pensavo di averlo applicatop correttamente, ma ho capito che non ci sono riuscito. Potresti farmi un esempio?
-->
Citazione
far creare al primo avvio una cartella con il nome del programma nella home dell' utente (a tua scelta se farla nascosta o visibile,quasi tutti i programmi la creano nascosta)in cui andrai a salvare il database e altri file in cui ci devi scrivere informazioni.
. Anche per questo mi occorrerebbe una lampadina accesa, anche semplicemente suggerendomi un programma dove scoprire come fare.
 ???
@ andy60:
Grazie per il suggerimento. Il guaio è la mia assoluta inesperienza in proposito. Sono al mio primo programma pubblicato. É  già tanto essere arrivato a questo punto. Come hai scritto il codice relatrivo?

 :ciao: :ciao:


:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #33 il: 03 Dicembre 2011, 10:46:07 »
per creare la cartella pui fare:

Codice: [Seleziona]
PUBLIC SUB Form_Activate()
DIM b_SwMenu AS Boolean

DIM Frm5 AS Form05

DIM i AS Integer

DIM $_FrmParam AS NEW String[]


IF NOT Exist(User.home & "./ContabFab) then"
  MKDIR (User.home & "./ContabFab)"
ENDIF

'-----------------------------------------
  IF b_SwVerifDb = FALSE    'test necessario per assicurare che la Form5.class venga richiamata una sola volta, all'avvio del programma
    b_SwVerifDb = TRUE   'Verifica status Db 'ContabFamdb' non ancora effettuata
    $_FrmParam.Add("0")
    Frm5 = NEW Form05($_FrmParam)
    i_SwReturn = Frm5.ShowModal()      'avvio della procedura di controllo preliminare sulla validità del DB
    SELECT CASE i_SwReturn
            CASE (-1)
              b_SwMenu = FALSE
              GestMenu(b_SwMenu)
            CASE 99
              ME.Close
    END SELECT
  ENDIF
END


per linkare il db invece:

Codice: [Seleziona]
STATIC PUBLIC DB_Connection AS NEW Connection   'inizializza la nuova connessione

STATIC PUBLIC $_DbPath AS String = User.home & "./ContabFam"                     'Percorso di ricerca del Database ContabFam.db"
STATIC PUBLIC $_DbNome AS String = "ContabFamdb"        'Nome del Database

PUBLIC SUB _new()
'----------------------------------------
   WITH
     DB_Connection
          .Close
          .Type = "sqlite3"
          .Host = $_DbPath
          .Name = $_DbNome
          .OPEN    'Apro il DB
      END WITH
END

una cosa mi pare particolare , hai creato un sacco di classi il cui scopo è solo l' esecuzione di funzioni, come mai hai scelto di usare delle classi anzichè dei moduli?

che convenienza hai ad aprire i form cone una istanza della classe?

Codice: [Seleziona]
 $_SceltOper = "Menu06"   'è stato scelto il percorso dell'INSRIMENTO MOVIMENTI DI GIORNATA CONTABILE
  $_FrmParam.add("Autom")
  Frm1 = NEW Form01($_FrmParam)
  i_SwReturn = Frm1.ShowModal()
  SELECT CASE i_SwReturn

anzichè:

Form01.show

chiedo solo per curiosità non intendo dire che sia sbagliato :)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #34 il: 07 Dicembre 2011, 18:00:50 »
volevo segnalarti che attualmente il tuo programma non funziona :)

Scusa se, rispondo con qualche giorno di ritardo al tuo apprezzatissimo post; ho dovuto completare un concetto applicativo sul programma che mi ha impedito di essere solerte.

Inutile dire che, non essendo abituato a scrivere programmi su PC, perchè vengano utilizzati anche da terze persone, non ho pensato minimamente che, non essendo stata creata una directory per la destinazione del DB, il programma avrebbe potuto non funzionare. Ho guardato il codice con le modifiche suggerite, collegandole col contenuto del tuo precedente post ed ho cercato di capire bene come muovermi. In detto precedente post mi consigliavi di:
Citazione
ti sconsiglio di dare al db il percorso tramite application.path.
questo perchè se tu deciderai di distribuire il programma in pacchetti precompilati , ad esempio .deb, l' eseguibile gambas sarà posizionato in /usr/bin per cui durante l' utilizzo non si avranno i permessi per creare nuovi file in tale cartella , di conseguenza nessuno potrà usare il tuo software.
Ciò mi porta a considerare la possibilità di caricare il mio programma.eseguibuile in /usr/bin in modo da farlo partire anch'io da quella posizione e creare, come dici tu una directory nascosta all'interno della home-utente.
Il posizionamento del programma.eseguibile in /usr/bin potrebbe risolvere anche il problema della mancata attivazione automatica del programma al momento del suo avvio.

Citazione da: fsurfing
hai creato un sacco di classi il cui scopo è solo l' esecuzione di funzioni, come mai hai scelto di usare delle classi anzichè dei moduli?
Ricordo di aver letto, durante i miei primi approcci, che i moduli restano sempre attivi in memoria, durante l'esecuzione del propgramma, cosa che non avviene con l'uso delle classi dinamiche.

Citazione da: fsurfing
che convenienza hai ad aprire i form cone una istanza della classe?
Tale metodo mi permette di passare alla form variabili che altrimenti dovrei dichiarare public in moduli da tenere impegnati anche se non necessariamente utili.

Essendo il mio, il primo prgramma scritto in Gambas, ho cominciato a lavorarci su con una certa idea che poi, strada facendo, ho modificato, per cui non tutto quello che vi si trova dentro è esattamente quello che farei se cominciassi a scriverlo ora (vedi, per es.: Evento_LostFocus). Fanno parte di tali cambiamenti sia l'accesso alle form tramite il metodo new, sia l'esecuzione di funzioni in classi dinamiche. Una funzione definita in una classe che potrebbe essere trasferita in un modulo potrebbe essere quella relativa alla Open del DB, ampiamernte utilizzato nel programma. Magari lo farò più avanti.

Dalle tue domande, vedo che hai dato una bella guardata al codice che ho scritto, il che mi fa molto piacere. L'occhio di un esperto come te non può che aiutarmi ulteriormente. Grazie!  :D
 :ciao: :ciao:




:ciao:

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #35 il: 07 Dicembre 2011, 19:13:14 »
Ho cercato di attivare le modifiche relative al path ed alla creazione del DB.

 L'istruzione MKDIR ha funzionato perfettamente:
Codice: [Seleziona]
[pietro@localhost ~]$ ls
CensimentoPopolazione2011.iso  Immagini  Musica       Scaricati
ContabFam                                    mnt          output.pdf  Scrivania
evolutionk                                      Modelli      Pubblici      Video
[pietro@localhost ~]$

La creazione del DB
Codice: gambas [Seleziona]
WITH DB_Connection
    .Type = "sqlite3"
    .Host = "home/user/ContabFam"                     
    .Login = ""
    .Password = ""
    .Open
 END WITH
 
 DB_Connection.Databases.Add("ContabFamdb")
 CATCH
  IF ERROR THEN 
    Message.ERROR("Attenzione! ->  Errore in " & Error.Where & Chr(10) & Chr(10) & "Creazione Database --> FALLITA" & Chr(10) & Chr(10) & "Cod.Erro= " & Error.Code & "»»" & ERROR.Text & Chr(10) & Chr(10) & "Il programma verrà chiuso")
    QUIT
 ELSE
  DB_Connection.Close

non ha, invece, funzionato; ottengo un errore, per me incomprensibile:
Citazione
Cod.Erro=-1 »» Cannot create database: Unknown database error
Anche cambiando nome al DB il risultato è sempre lo stesso.
 ???
 :(

:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #36 il: 07 Dicembre 2011, 20:20:19 »
e ti credo :

non è:
Codice: [Seleziona]
 .Host = "home/user/ContabFam"         

bensi:

Codice: [Seleziona]
 .Host = user.home & "/ContabFam"         

user.home è una proprietà del componente gb.desktop

:)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Programma di Contabilità familiare
« Risposta #37 il: 23 Dicembre 2011, 11:07:17 »
la versione modificata è quella presente in area download? :2birre:

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #38 il: 23 Dicembre 2011, 22:57:45 »
la versione modificata è quella presente in area download? :2birre:
Così sembra!  :D
 :ciao:
:ciao:

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #39 il: 21 Agosto 2012, 00:47:15 »
@ fsurfing:
Sono trascorsi diversi mesi dall'ultimo mio post in merito alla pubblicazione del mio programma di "Contabilità familiare". Nel frattempo  il programma è cresciuto e penso di averne anche migliorato un pò la funzionalità. Vorrei perciò ripetere la pubblicazione. Mentre ho capito come gestire la creazione e la manutenzione del DB collegato, vorrei riprendere il concetto:
Citazione
fsurfing ha scritto:
se tu deciderai di distribuire il programma in pacchetti precompilati , ad esempio .deb, l' eseguibile gambas sarà posizionato in /usr/bin per cui durante l' utilizzo non si avranno i permessi per creare nuovi file in tale cartella , di conseguenza nessuno potrà usare il tuo software.
É una procedura che non conosco perchè un programma in formato eseguibile è costituito da un solo file, quindi mi sembra un risultato diverso da quello a cui mi hai accennato a suo tempo.

La pubblicazione destinata a tutti i possibili simpatizzanti necessiterebbe anche di un'adeguata illustrazione, cosa che ho tenuto e manutenuto sin da molto tempo prima che ne fosse iniziata la scrittura del programma in Gambas. Attualmente è una guida rivolta al programmatore e consta attualmente di 72 pagine, ma non è ancora finita. Dovrei tirarne fuori una versione per l'utente finale, da allegare al pacchetto. Il programma, già indirzzato ad un settore non proprio generico, abbraccia tante piccole sfaccettature di una gestione contabile familiare e perciò mi pare che una guida, più o meno mini, sia dovuta. Nasce tuttavia il bisogno di capire quale potrebbe essere il formato più pratico e dimensionabile in modo più contenuto possibile.

Mi potresti dare una dritta anche in ciò?

Spero nella tua solita paziente disponibilità.
Ciao.
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #40 il: 22 Agosto 2012, 01:53:03 »
Mi intrometto:

1) se parli di guida cartacea: OpenOffice o Pdf
2) alternativa: pagina web, magari inclusa nell'installazione, linkando il sito ove la guida è pubblicata, e/oppure in locale sul proprio pc. Nei miei programmi, un bel F1 e via, o da menu sotto Help e About...

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #41 il: 22 Agosto 2012, 11:11:51 »
Mi intrometto:

1) se parli di guida cartacea: OpenOffice o Pdf
2) alternativa: pagina web, magari inclusa nell'installazione, linkando il sito ove la guida è pubblicata, e/oppure in locale sul proprio pc. Nei miei programmi, un bel F1 e via, o da menu sotto Help e About...

Si, mi riferisco proprio ad una guida pseudo-cartacea, ma quella del link, sicuramente molto più pratica e meno ingombrante, specialmente residente nel mio pc, per me è tutta da scoprire, perciò non ci avevo pensato. In ogni caso è l'ultimo dei problemi, per ora quello che vorrei capire al più presto è come arrivare alla pubblicazione del programma per farlo usare intanto agli eventuali volontari del nostro Forum, successivamente ... si vedrà.
Ciao.
:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #42 il: 22 Agosto 2012, 18:29:04 »
Citazione
migliorato un pò la funzionalità. Vorrei perciò ripetere la pubblicazione. Mentre ho capito come gestire la creazione e la manutenzione del DB collegato, vorrei riprendere il concetto:
Citazione
fsurfing ha scritto:
se tu deciderai di distribuire il programma in pacchetti precompilati , ad esempio .deb, l' eseguibile gambas sarà posizionato in /usr/bin per cui durante l' utilizzo non si avranno i permessi per creare nuovi file in tale cartella , di conseguenza nessuno potrà usare il tuo software.
É una procedura che non conosco perchè un programma in formato eseguibile è costituito da un solo file, quindi mi sembra un risultato diverso da quello a cui mi hai accennato a suo tempo.

ma teoricamente questo problema dovresti già averlo risolto , almeno mi sembra leggendo i vecchi post.

cmq tu tieni presente una cosa, se hai dei file che vengono utilizzati solo in lettura , puoi benissimo posizionarli nella cartella del tuo progetto e quindi li caricherai con un percorso assoluto,

per i file che invece devono essere scritti non puoi utilizzare un percorso assoluto oppure definire il percorso con application.path , bensi devi posizionarli in un percorso relativo, ad esempio nella home dell' utente  ( user.home).

comunque se vuoi testare il tuo programma prima di distribuirlo mandami un deb+ i sorgenti , oppure creati una macchina virtuale in cui installi solamente il deb e controlli che tutto funzioni correttamente

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Programma di Contabilità familiare
« Risposta #43 il: 22 Agosto 2012, 23:09:07 »
per i file che invece devono essere scritti non puoi utilizzare un percorso assoluto oppure definire il percorso con application.path , bensi devi posizionarli in un percorso relativo, ad esempio nella home dell' utente  ( user.home).
Il DB  gestito dal programma è naturalmente soggeto a continui inserimenti, per cui ho già proceduto alle opportune modifiche nel programma per generare un indirizzamento relativo

Citazione
comunque se vuoi testare il tuo programma prima di distribuirlo mandami un deb+ i sorgenti , oppure creati una macchina virtuale in cui installi solamente il deb e controlli che tutto funzioni correttamente
Quellla della macchina virtuale è una buona idea, ma fino ad oggi non conosco assolutamente lo strumento. Quindi, se non ho capito male dovrei eseguire, nella macchina  virtuale di cui parli, un "install /percorso-attuale/Contabfam.gambas" Ciò dovrebbe, sempre virtualmente parlando, creare il relativo pacchetto in /bin/usr. Potrò a questo punto eseguire il programma in versione-da-distribuire.
Ciò mi permetterebbe di potere provare imparando, senza togliere a te del tempo prezioso,
Ciao.
:ciao: