Gambas-it

Gambas3 => Database => Topic aperto da: Golia - 28 Aprile 2020, 18:27:25

Titolo: Classe DBBox
Inserito da: Golia - 28 Aprile 2020, 18:27:25
Ciao a tutti
Nell'intento di rifarmi il gestionale ho riaperto una vecchia classe che avevo fatto qualche anno fa.
Oggi l'ho in gran parte riscritta perchè sembrava che funzionava..... vabbè.
Questa è solo una prima parte, è fatta per creare oggetti collegati al database. Tipo TextBox TexArea Numeri Decimali Valuta Data Combobox etcc, poi con poche righe di codice è già in funzione.
Comunque guardatelo e se a qualcuno interessa lo spiegherò meglio.
ps. Non è ancora attivo il controllo automatico per il salvataggio dei record quando sono modificati

La seconda parte della classe sarà dedicata alla "griglia " (tableview) nell'intento di fare una pallida imitazione di GridBox di Milio  :) :ciao:


fatemi sapere le vostre opinioni
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 10:31:49
Aggiornamento
Sistemato controllo salvataggio e altri controlli
Questa classe è pronta per test
Se volete informazioni di come funziona chiedete pure mi farà piacere confrontarmi
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 29 Aprile 2020, 11:16:58
Se volete informazioni di come funziona chiedete pure mi farà piacere confrontarmi

Hai mai usato il componente gb.db.form?
Il tuo è un clone, un complemento, dove è che si differenzia?

 :ciao:
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 12:00:54
gli oggetti hanno qualche proprietà in più per gestire meglio e facilmente il form collegato al database.
Se vedi il codice del form è quasi vuoto.
Basta solo impostare le proprietà degli oggetti vedi i 2 esempi, poi la classe gestisce formati salvataggio etcc
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 13:10:23

Hai mai usato il componente gb.db.form?
Il tuo è un clone, un complemento, dove è che si differenzia?

 :ciao:

Non l'ho mai usato, dove posso trovare un esempio?
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 29 Aprile 2020, 13:48:00
Bella domanda come al solito c'è poco e niente, in gambasdevel (o come si chiama la tua cartella gambas) in > app > examples > Database c'è l'esempio Database che contiene una finestra (FTest) basata sul componente, miserella ma ne mostra le potenzialità.
Io non l'ho mai usato perché è impossibile trovare esempi (qualcosa sul sito francese da parte di Bodard) e quando chiedi nessuno risponde perché evidentemente sono in pochi a saperlo usare.

Mi piacerebbe approfondire e scambiare opinioni sui controlli, forse tu potresti partire avvantaggiato avendo fatto qualcosa di simile.

Circa un sei mesi fa avevo avuto uno scambio epistolare con Hans Lehmann del libro tedesco che cercava lumi ma scambiandoci le conoscenze abbiamo capito di saperne veramente poco, almeno all'epoca, magari lui è andato avanti.  :-\

So che sta cercando di fare un esempio di finestra database il più possibile fedele a Gambas...

 :ciao:

P.S. Il mio secondo esempio di report ReportDemo2 contiene il collegamento che usa la finestra dell'IDE e permette l'utilizzo della grafica per agire sul database, funziona per tutti i database (SQLite, MySQL, PostgreSQL, ODBC) occorre cliccare sulla cartella connessioni, tasto destro su Connection1 > Proprietà (mostra la finestra) > Apri apre la grafica.
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 14:35:38
Grazie
Ho provato l'esempio e non mi funziona.
Sto provando a farne uno sulla scia di quello che ho capito... e non va neanche questo
Impostando le proprietà dovrebbe arrangiarsi da solo.... allego l'esempio e il database
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 29 Aprile 2020, 17:08:32

Ho provato l'esempio e non mi funziona.
L'esempio a me funziona  :rolleyes:
Citazione
Sto provando a farne uno sulla scia di quello che ho capito... e non va neanche questo
Impostando le proprietà dovrebbe arrangiarsi da solo.... allego l'esempio e il database

Mentre invece il tuo non funziona e non riesco proprio a capirne il motivo è da quando lo hai postato che ci sto impazzendo  :hard:

Eppure l'avevo già fatto, ottengo errori di ogni tipo  :hatecomputer:

La battaglia continua...  :specchio:
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 18:22:26

Ho provato l'esempio e non mi funziona.
L'esempio a me funziona  :rolleyes:
Citazione
Sto provando a farne uno sulla scia di quello che ho capito... e non va neanche questo
Impostando le proprietà dovrebbe arrangiarsi da solo.... allego l'esempio e il database

Mentre invece il tuo non funziona e non riesco proprio a capirne il motivo è da quando lo hai postato che ci sto impazzendo  :hard:

Eppure l'avevo già fatto, ottengo errori di ogni tipo  :hatecomputer:

La battaglia continua...  :specchio:

perdona  :-\

stasera ci guardo meglio
Prometto che farò un bell'esempio
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 29 Aprile 2020, 19:23:39


perdona  :-\

stasera ci guardo meglio
Prometto che farò un bell'esempio

Non è mica colpa tua, sembra che con Connection1 non funzioni.
Ma se uno non usa Connection1 (o come vuoi chiamarla) non si può creare DataSource e allora?  :hard:
Sembra come accade a questo qui https://lists.gambas-basic.org/pipermail/user/2012-February/037229.html
e la risposta di Benoit è questa https://lists.gambas-basic.org/pipermail/user/2012-February/037292.html
Però a me continua a essere disattivata

 :-\ :-\ :-\
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 29 Aprile 2020, 20:13:27
Per oggi mi arrendo, magari domani...

Se vuoi continuate tu, io proprio non riesco a capire perché non funziona, ti allego il file con i miei cambiamenti, magari ti ispira  :-\
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 23:05:05
Ecco quà... il form non andava perchè la proprietà Enabled era settata su True :hatecomputer: Non mi ero accorto oggi, avevo copiato il form per far presto... vabbe
Ho un pò capito, certo che bisognerebbe capire un pò le proprietà ed eventi per poterlo utilizzare bene. Però per progetti veloci è molto intuitivo.. un pò access diciamo.
Mi ha un pò deluso la connessione, molto facile a connettersi ma (almeno penso così) non ha un controllo se non trova il database va in errore e basta.
Inoltre vedo che quando si aggiunge un nuovo record non incrementa "Id" e si che il database è strutturato con id incrementale.
Non so che dire... se dovrei fare una rubrica veloce potrei anche usarlo... ma forse bisognerebbe avere più info

Allego la prova
Ciao Gianluigi grazie
Titolo: Re:Classe DBBox
Inserito da: Golia - 29 Aprile 2020, 23:35:20
Una prima piccola parte del gestionale, almeno per vedere se funziona la classe.
è un pò in disordine, curerò l'aspetto dopo.
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 30 Aprile 2020, 22:57:49
Ecco quà... il form non andava perchè la proprietà Enabled era settata su

E tu mi hai fatto perdere ore per una str.... starai a casa in castigo per tre ore  >:(
Citazione
Però per progetti veloci è molto intuitivo.. un pò access diciamo.
Mi ha un pò deluso la connessione, molto facile a connettersi ma (almeno penso così) non ha un controllo se non trova il database va in errore e basta.
Inoltre vedo che quando si aggiunge un nuovo record non incrementa "Id" e si che il database è strutturato con id incrementale.
Non so che dire... se dovrei fare una rubrica veloce potrei anche usarlo... ma forse bisognerebbe avere più info

Guarda che non è così se la chiave è incrementale il database si aggiorna, però devi ricordarti di ricaricarlo per aggiornare la finestra .connection.
Si, occorrerebbe avere più info ma non so come trovarle.
Ad esempio DataSource.Table può accettare qualunque richiesta SQL, oggi pomeriggio ho fatto molte prove ma non sono riuscito a farlo funzionare...

notte  :ciao:
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 01 Maggio 2020, 14:11:56
Una prima piccola parte del gestionale, almeno per vedere se funziona la classe.
è un pò in disordine, curerò l'aspetto dopo.

wow!!! ci sono anche i trigger!!!  :yeah:

 :ok:

Sbaglio o funziona solo con SQLite?  :P

 :ciao: :ciao:
Titolo: Re:Classe DBBox
Inserito da: Golia - 01 Maggio 2020, 16:12:14
Sbaglio o funziona solo con SQLite?  :P
 :ciao: :ciao:

si al momento .. e sto già riscrivendo la classe. aver guardato gli oggetti data mi ha fatto venire nuove idee.
Gianluigi dove si trovano i sorgenti di gambas?
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 01 Maggio 2020, 16:19:09
Sbaglio o funziona solo con SQLite?  :P
 :ciao: :ciao:

si al momento .. e sto già riscrivendo la classe. aver guardato gli oggetti data mi ha fatto venire nuove idee.
Gianluigi dove si trovano i sorgenti di gambas?

Era quello che speravo, intanto ti dico che ho fatto qualche timido progresso con le query su datasource.table  e ora sembra funzionare con anche gli Inner Join...

I sorgenti sono in /home/<tuo user>/gambasdevel/comp/src/gb.db.form

 :ciao:

P.S. Gli As delle query propri non li digerisce, ci deve essere un altro modo per intestare le colonne, sono fiducioso...
Titolo: Re:Classe DBBox
Inserito da: Golia - 01 Maggio 2020, 16:27:46
in questo pc non ho installato devel, ho installato un paio di anni fà non ricordo neanche come  :-[
Titolo: Re:Classe DBBox
Inserito da: Golia - 01 Maggio 2020, 16:39:35
 :rolleyes: mi perdo in un bicchiere... di vino  :D
ho scaricato  git
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 01 Maggio 2020, 16:41:48
:rolleyes: mi perdo in un bicchiere... di vino  :D
ho scaricato  git

 :) OK mi hai anticipato, meglio così  :ciao:
Titolo: Re:Classe DBBox
Inserito da: Golia - 03 Maggio 2020, 21:50:27
è difficile anche capire qualcosa leggendo il codice. È un altro livello..un altro pianeta.
Quello che mi fa rabbia è la connessione.. è fatta da dio ma non c'è un controllo se non trova il database.. se hai solo l'eseguibile di gambas e sposti o rinomini il db cosa fai? Lui va in errore e basta.
Peccato perché connette il db prima di eseguire il programma, infatti ti elenca tabelle e campi nelle proprietà degli oggetti.
Gianluigi io di progressi non ne ho fatti, vediamo la prossima settimana.
 :ciao:
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 04 Maggio 2020, 08:28:10

Gianluigi io di progressi non ne ho fatti, vediamo la prossima settimana.


Anche io mi sono bloccato, spero per via del poco tempo che ho potuto dedicare alla ricerca, anche oggi ho da fare altro ma spero di riuscire a fare qualcosa domani.
Una cosa è certa i DataSource si possono annidare e gli si può passare una query anche per codice.
Poi riuscire a fargli fare quello che voglio è un altro discorso  :rolleyes:  :hard:

 :ciao: :ciao:
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 14 Maggio 2020, 14:46:35
è difficile anche capire qualcosa leggendo il codice. È un altro livello..un altro pianeta.
Quello che mi fa rabbia è la connessione.. è fatta da dio ma non c'è un controllo se non trova il database.. se hai solo l'eseguibile di gambas e sposti o rinomini il db cosa fai? Lui va in errore e basta.
Peccato perché connette il db prima di eseguire il programma, infatti ti elenca tabelle e campi nelle proprietà degli oggetti.

Tu questa pagina(*) l'avevi letta?

(*) http://gambaswiki.org/wiki/comp/gb.db/connection/_new

 :ciao:
Titolo: Re:Classe DBBox
Inserito da: Golia - 14 Maggio 2020, 23:13:56
Molto interessante Gianluigi
Appena si libera il pc vado a provare.
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 14 Maggio 2020, 23:21:33
Appena si libera il pc vado a provare.

 :D

notte  :ciao:
Titolo: Re:Classe DBBox
Inserito da: Golia - 15 Maggio 2020, 09:12:37
No è solo un modo più semplice di passare i dati per la connessione "Tradizionale.

se guardi le proprietà di
Codice: [Seleziona]
Connections["Connection1"]
sono solo di lettura (almeno...spero di sbagliarmi) da codice non si mette mano
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 25 Maggio 2020, 11:56:46

se guardi le proprietà di
Codice: [Seleziona]
Connections["Connection1"]
sono solo di lettura (almeno...spero di sbagliarmi) da codice non si mette mano

Credo proprio che tu abbia ragione, occorre usare il metodo classico  :-\

Il test con gb.db.form l'ho finito, anche se markZ non si è espresso, credo che ci siano degli spunti interessanti.
L'ho appena aggiornato perché mi ero dimenticato del codice nei pulsanti di spostamento.

 :ciao:
Titolo: Re:Classe DBBox
Inserito da: Golia - 25 Maggio 2020, 22:20:45
Ciao Gianluigi
Non me ne volere ma ho deciso di continuare con la mia classe... abbandono gb.db.form
Negli ultimi giorni ho avuto meno tempo, per fortuna ho ricominciato a lavorare,
Ho riscritto un pò tutto, la parte DBForm è finita, basta testarla, La parte DBGrid è in costruzione ma si può già capire qualcosa.
Le classi sono in 2 cartelle separate, sotto ci sono 3 esempi/test
Titolo: Re:Classe DBBox
Inserito da: Gianluigi - 26 Maggio 2020, 09:25:08
Ciao Gianluigi
Non me ne volere ma ho deciso di continuare con la mia classe... abbandono gb.db.form
Va bene, non importa...    :violent:
 :D
Citazione
Negli ultimi giorni ho avuto meno tempo, per fortuna ho ricominciato a lavorare,
:ok:
Citazione
Ho riscritto un pò tutto, la parte DBForm è finita, basta testarla, La parte DBGrid è in costruzione ma si può già capire qualcosa.
Le classi sono in 2 cartelle separate, sotto ci sono 3 esempi/test

Scaricato, grazie  :ciao:
Titolo: Re:Classe DBBox
Inserito da: milio - 28 Maggio 2020, 15:52:53
Figata e' la versione grafica di gridbox....
Titolo: Re:Classe DBBox
Inserito da: milio - 28 Maggio 2020, 15:57:49
Ti suggerisco di mettere una proprieta' Name alle colonne in modo che anche se cambi l'ordine alle colonne le formule funzionano lo stesso....
Titolo: Re:Classe DBBox
Inserito da: Golia - 28 Maggio 2020, 18:31:20
Figata e' la versione grafica di gridbox....
;D ciao Milio! che dici ho intuito bene?  :ciao:
Ti suggerisco di mettere una proprieta' Name alle colonne in modo che anche se cambi l'ordine alle colonne le formule funzionano lo stesso....
Ottima idea!
Forse potrebbe bastare il nome oggetto.. appunto .name   :)
Si lo farò di sicuro
 :2birre:
Titolo: Re:Classe DBBox
Inserito da: Golia - 30 Maggio 2020, 11:13:11
Aggiunto la proprietà .Name, adesso le colonne funzione sono più intuitive
Citazione
VPrezzo;*;DQuantita
...figo
Fatto anche funzione somma colonna, basta aggiungere il nome colonna che si vuole sommare, nella proprietà $SumColumn dell'oggetto DBGrid.

Farò una guida una volta finito, servirà anche a me
 :2birre: