Gambas-it

Programmazione => Progetti degli utenti => Topic aperto da: Golia - 18 Marzo 2010, 01:36:04

Titolo: Esempio inserimento su tableview
Inserito da: Golia - 18 Marzo 2010, 01:36:04
Ciao a tutti,
Sto creando un esempio di inserimento dati su tableview.
Grazie al codice di Dex tableview funziona molto bene, tableview è collegato al database mysql quindi c'è anche l'esempio di collegamento e creazione tabelle.
L'esempio che stò facendo è una maschera di inserimento dati scritti manualmente oppure importati da listino.
Nell'esempio c'è una maschera listino dove potete inserire vari codici, per poi andarli a pescare nella maschera di inserimento. Dalla maschera listino è possibile importare anche da file csv.
Fino adesso i problemi sono 2
1) Ho provato a caricare un listino con 22.000 record e aprire il listino ci mette circa 12 secondi..troppo ci mette di più popolare la gridview che importare dal file csv (di questo problema ho parlato anche con Milio che ha risolto lo stesso problema a Dex...ma non ho capito come  ;D)

2)Nell'inserimento codici da listino adesso funziona solo se voglio inserire un nuovo dettaglio, volevo anche potere cambiare dei dettagli precedenti. Comunque capirete meglio guardando il progetto.

Mi sembra sia un bell'esempio per chi deve fare un programma con database, quindi spero che mi aiutate a farlo bello funzionante da mettere poi in sezione download
Inutile dirvi che se cambiate anche tutto il mio codice "in meglio", fà solo piacere

Ciao grazie
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 18 Marzo 2010, 02:36:18
Ciao Golia...

Puoi allegare un file csv con i tuoi 22000 articoli?

Cosi' mi popolo il db e faccio due test  ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 18 Marzo 2010, 14:36:37
Ciao Milio
Ecco quà, ho allegato di nuovo il programma perchè avevo dimenticato di scrivere 2 righe di codice nella funzione sustituisci riga
Ciao
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 18 Marzo 2010, 23:48:48
Prova a vedere se i tempi di attesa dell'inserimento record nella tabella listini ti puo' sembrare 'ragionevole'... ;)

Col tuo permesso, vorrei cambiarti la TableView nel form inserimento dettagli...

ciau.
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 19 Marzo 2010, 00:22:02
Ciao Milio, tutto il permesso che vuoi :D grazie.
Stasera mi spiace ma proprio non posso guardare il tuo lavoro, domani ti faccio sapere
Ciao
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 19 Marzo 2010, 01:06:55
Non ho reresistito ;) sono venuto giù dal letto!!
Caspita non ci mette neanche una frazione di secondo!!
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 19 Marzo 2010, 01:12:02
 ;D

sembra magia vero?
22000 record inseriti in una griglia in un batter d'occhio....
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 19 Marzo 2010, 01:46:49
Ho provato a sostituire il codice anche nel form insdalistino, apre subito tutti i record però non mi permette di filtrare con la ricerca, si pianta alla quarta lettera che scrivo nella casella di ricerca. Mi sà che devi proprio metterci le mani tu ;D
Grazie, aspetto le nuove modifiche al form inserimento dettagli ;D
Ciao
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 19 Marzo 2010, 06:53:50
prova a inserire questo codice nell'evento GridView1_Data

Codice: [Seleziona]
PUBLIC SUB GridView1_Data(Row AS Integer, Column AS Integer)

  IF MyRS.Count THEN
    IF Row <= MyRS.Max THEN
      MyRS.MoveTo(Row)
      GridView1.Data.Text = MyRS[Column + 1]
    ENDIF
  ENDIF

END
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 19 Marzo 2010, 11:53:04
Perfetto!
Altro problema, quando inserisco un codice da listino, non nuovo ma "Sostituisci riga da listino", lui viene inserito però se ad esempio al momento dell'inserimento mi trovo col cursore in descrizione (naturalmente nella riga che devo sostituire) viene sostituito solo codice e prezzo, descrizione non cambia. Stesso se mi trovo in codice, cambia solo descrizione e prezzo.
Però forse mi conviene aspettare il tuo tableview
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 19 Marzo 2010, 13:46:20
Si ho visto, ma per adesso li non ho ancora toccato il codice... :D

Stasera credo di riuscire ad adattare la mia tableview e vediamo come risolverla...
Titolo: Re: Esempio inserimento su tableview
Inserito da: dex - 19 Marzo 2010, 14:42:11
Perfetto!
Altro problema, quando inserisco un codice da listino, non nuovo ma "Sostituisci riga da listino", lui viene inserito però se ad esempio al momento dell'inserimento mi trovo col cursore in descrizione (naturalmente nella riga che devo sostituire) viene sostituito solo codice e prezzo, descrizione non cambia. Stesso se mi trovo in codice, cambia solo descrizione e prezzo.
Però forse mi conviene aspettare il tuo tableview

ciao golia
vedo che vai avanti alla grande.
non ho scaricato il codice ma da quello che dici mi sembra un problema su tableview.
Tableview inserisce i dati nelle cella in uscita dalla stessa, evidentemente avendo il focus su quella cella non immette i nuovi dati, prova a fargli cambiare focus prima o dopo l'immissione dei dati.
nel mio programma ho lo stesso problema, esempio immetto i dati nella cella se dopo non sposto il focus su un'altra cella o su un'altra riga i dati immessi non vengono salvati nel database.
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 19 Marzo 2010, 23:38:53
Citazione
ciao golia
vedo che vai avanti alla grande
Gran parte del codice è tuo  ;)
Si penso che sia proprio così, bisogna spostare il focus.
Questo non è solo un esempio di come usare tableview, per chi usa database è indispensabile avere una griglia comoda per inserire i dati. Potrebbe diventare una classe, pensa a PdfWriter, crei dei bei report in pochi minuti. Potrebbe essere uno strumento pratico e veloce per creare griglie di inserimento, visualizzazione ricerca etcc. Certo questo progetto non è alla mia altezza...però insieme.. :)
Ciao!
Titolo: Re: Esempio inserimento su tableview
Inserito da: dex - 20 Marzo 2010, 00:23:09
ti sottovaluti  ;)

e poi su questo forum c'è un ottimo supporto e anche di qualità.
vedrai che ce la farai.

ps non vedo ceskho  in giro, che  sia in sciopero?  ;D
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 20 Marzo 2010, 00:35:25
E' venerdì sera... alla sua età avrei dato un calcio al pc.. se ce l'avessi avuto :P
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 20 Marzo 2010, 03:31:36
Prova questa TableView se puo' andare bene...

Ho abilitato solo il Form Listino per fare dei test.
Per modificare i dati nella griglia basta che premi F2 (il cursore si posiziona alla fine del testo) oppure un qualsiasi tasto 'stringa' (il testo viene completamente riscritto)...

E' solo una bozza e non c'e' ancora una funzione che controlli la tipologia dei dati inseriti...
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 20 Marzo 2010, 10:48:25
Proprio quello che volevo :-*
Una bella classe in modo di scrivere meno codice possibile ;D

Visto che stai andando alla stragrande, è possibile controllare lo spostamento col tasto tab? ;D

Direi che una volta sistemato la classe per eliminare aggiungere ( se possibile anche di inserire una riga vuota tra le altre come l'esempio che avevo fatto) etcc siamo a cavallo. Scusa se sono esigente ma ormai mi hai lanciato ;)
Ciao grazie
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 20 Marzo 2010, 11:03:10
per il tasto tab non c'e' problema ;)

per l'inserimento del record tra le righe devo studiarmela...
Titolo: Re: Esempio inserimento su tableview
Inserito da: Ceskho - 20 Marzo 2010, 12:56:25
E' venerdì sera... alla sua età avrei dato un calcio al pc.. se ce l'avessi avuto :P

La folla chiama e la rockstar risponde!!!! 8)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 20 Marzo 2010, 16:42:50
Citazione
per l'inserimento del record tra le righe devo studiarmela...
Non perderci tanto, è un problema secondario
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 21 Marzo 2010, 16:35:34
Ho inserito lo spostamento con il tab (e backtab) solo quando sei in modifica...

Fammi sapere se per te va bene...
Titolo: Re: Esempio inserimento su tableview
Inserito da: Ceskho - 21 Marzo 2010, 16:36:37
Ho inserito lo spostamento con il tab (e backtab) solo quando sei in modifica...

Fammi sapere se per te va bene...

Manca l'allegato...
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 21 Marzo 2010, 16:40:17
Scusate ma questa notte ho dormito poco  :-[

eccolo qua...
Titolo: Re: Esempio inserimento su tableview
Inserito da: Ceskho - 21 Marzo 2010, 16:49:51
Scusate ma questa note ho dormito poco  :-[

eccolo qua...

Noto... ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 21 Marzo 2010, 16:52:08
 :D
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 21 Marzo 2010, 16:58:36
Ho appena corretto un errore sull'intercettazione del BackTab...

Adesso vado a farmi un pisolino   ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 21 Marzo 2010, 17:38:50
Spero che tu abbia fatto tanta festa stanotte, e non sul pc  ;D
Stò dando un'occhiata veloce perchè oggi faccio il bambinaio ;D
Stasera guardo meglio e poi ti dico, bravo milio e grazie per l'impegno che ci metti per questo progetto
Buon pisolino ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 21 Marzo 2010, 22:40:16
Ho provato un pò.
Ti dico cosa ho trovato che non va :-[ però stanotte dormi ;D
Il backtab non funziona bene
Quando si fà un record nuovo non sempre lo salva,
Quando crei un nuovo record è voluto che inserisce l'ultimo record modificato? si potrebbe aggiungere una riga vuota in automatico quando si và giù?
Scusami ma stai facendo un ottimo lavoro, puntiamo alla perfezione :P
Ciao buona notte
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 21 Marzo 2010, 23:42:30
Ho provato un pò
Ti dico cosa ho trovato che non va :-[ però stanotte dormi ;D

Tranquillo... ho appena messo giu' i bimbi a nanna e penso che tra un'oretta ci andro' anch'io ;)

Citazione
Il backtab non funziona bene

Strano a me funziona benissimo... hai scaricato l'ultima modifica che ho fatto?

Citazione
Quando si fà un record nuovo non sempre lo salva,
Quando crei un nuovo record è voluto che inserisce l'ultimo record modificato? si potrebbe aggiungere una riga vuota in automatico quando si và giù?
Scusami ma stai facendo un ottimo lavoro, puntiamo alla perfezione :P
Ciao buona notte

Vedro' che posso fare... conta che ci lavoro quando posso e alcune cose sono buttate giu' in un primo momento solo per avere l'idea di cosa fare.
La seconda fase e' affinare il tutto ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 21 Marzo 2010, 23:58:13
Comunque credo che per fare le cose fatte bene, dobbiamo creare un componente e non una semplice classe...

Bisognera' rivedere il codice e trasformare la classe, che e' praticamente una estensione di una gridview in un controllo vero e proprio...
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 22 Marzo 2010, 01:08:30
Ho riscritto un po' di roba  ;D
Adesso la classe da GridView e' diventata un componente...
Pensavo di metterci dei tasti laterali, che so per la cancellazione del record selezionato... fammi sapere se l'idea e' buona.

Adesso vado a nanna anch'io... buona notte a tutti!
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 22 Marzo 2010, 08:04:34
Ciao milio, adesso vad al lavoro, stasera guardo.
Bene l'idea del componente.
Citazione
conta che ci lavoro quando posso
Siamo in due  ;) non preocc. nessuno ci corre dietro.
Buona giornata
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 22 Marzo 2010, 18:48:27
Si ottima l'idea di mettere i pulsanti per le operazioni "standard"
Salva, elimina..

Ho provato l'ultima versione, se provo a eliminare una riga mi dà questo errore.
 " Unknown symbol "row" in class 'gridbox' "

se provo a scrivere qualcosa al momento che do invio o cambio cella mi riporta questo
 "Not an array "

Premetto che non ne sò niente di componenti, devo attivare qualcosa?
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 22 Marzo 2010, 22:30:48
No diciamo che mancano ancora dei 'pezzi' quindi non tutto funziona a dovere...
appena la famiglia va a nanna vedo di sistemare un po di codice... ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 22 Marzo 2010, 23:09:41
 :) la mia ci è appena andata...sperando che la piccolina non si svegli ::)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 23 Marzo 2010, 00:34:38
Stasera, proprio per non guardare "Amici". :P.. ho completato il progetto iniziale.
Volevo finirlo e metterlo comunque nell'area download anche se il progetto che stà portando avanti Milio è molto più accativante ;D,

@Ceskho
Lo posto quà perchè non trovo dove inserirlo... :-[

"ESEMPIO TABLEVIEW CON INSERIMENTO ARTICOLI"

Titolo: Re: Esempio inserimento su tableview
Inserito da: fsurfing - 23 Marzo 2010, 09:42:50
ti consiglio di realizzare i sorgenti per l' area download seguendo questa procedura http://www.gambas-it.org/smf/index.php?topic=869.0 (http://www.gambas-it.org/smf/index.php?topic=869.0)
altrimenti in futuro non potremo individuare le nuove versioni del programma.
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 23 Marzo 2010, 23:37:23
Non lo sapevo.. non mi ero mai chiesto cosa fosse quel pulsante ;D

Ecco quà, ciao grazie
Titolo: Re: Esempio inserimento su tableview
Inserito da: fsurfing - 24 Marzo 2010, 01:19:34
aggiunto in area download
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 24 Marzo 2010, 09:12:25
Ciao Golia, scusa se non mi sono fatto sentire ma incombono altre priorità al momento...

Ho riguardato un po' il codice per lo spostamento tra le celle e ho aggiunto le proprietà Alignment, Format, ReadOnly alle Columns e aggiunto la proprietà ReadOnly all'intera griglia.

Ho anche dato la possibilita' di creare l'oggetto con solo la griglia per magari visualizzare solo i dati...
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 24 Marzo 2010, 15:00:06
Ciao, non preoccuparti. Prima famiglia e lavoro ;)
Bene, stasera mi guardo bene.
Ciao
Titolo: Re: Esempio inserimento su tableview
Inserito da: leo72 - 24 Marzo 2010, 16:05:25
@milio:
ho dato un'occhiata al tuo progetto. E'... eccezionale! :-)
Sei veramente bravo, ha praticamente riscritto da zero un componente quale la gridview :-)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 24 Marzo 2010, 19:37:21
Milio imperatore dei gamberi ;D ;D ;D ;D
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 24 Marzo 2010, 19:58:59
@Leo

Sono contento che la pensi cosi' sul lavoro che sto facendo... Stasera mi dedichero' ancora al progetto e.. chissà in futuro potrebbe essere un componente integrato nella versione di gambas plus! (o di gambas versione ufficiale ;) )

@Golia
Esagerato!!!!  :P :P :P
Titolo: Re: Esempio inserimento su tableview
Inserito da: Ceskho - 24 Marzo 2010, 20:05:12
@Leo

Sono contento che la pensi cosi' sul lavoro che sto facendo... Stasera mi dedichero' ancora al progetto e.. chissà in futuro potrebbe essere un componente integrato nella versione di gambas plus! (o di gambas versione ufficiale ;) )


Se chiedi a pixel lo fa sicuramente con piacere....oppure se sei capace puoi farlo tu stesso: scarica i sorgenti di gambas plus dall'area download, integri il tuo componente e riposti i sorgenti qui così possiamo caricare il file.... ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 24 Marzo 2010, 23:55:14
Sto provando l'ultima versione.
Intanto ho notato che lo spostamento con le frecce è più snello di prima.
Ho visto che hai tolto il pulsanti sotto, forse si potrebbero vedere o no con una variabile.
GridView1.ReadOnly = TRUE , geniale
perfetti gli alineamenti e i format con l'euro
Non mi funziona bene il salvataggio, se faccio un nuovo record non lo salva, se ne creo di più non salva l'ultimo.
Non va il tab ne backtab.

Mi spiace ma posso solo farti da beta tester, il  codice che scrivi è troppo avanzato per me ;D. Complimenti.
Vorrà dire che farò una bella guida una volta completato ;)
Ciao, aspetto nuove versioni (senza fretta)

edit:
Dimenticavo, bella la funzione elimina che segni in rosso il record eliminato, si può anche annullare la selezione?
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 25 Marzo 2010, 00:10:27
Si, effettivamente il tab e backtab avevano un problema (gia' risolto) da quando ho aggiunto la possibilita' di dare il ReadOnly sulla singola colonna...

Per quanto riguarda il salvataggio dei dati l'ho lasciato per ultimo, in quanto c'e' da gestire prima l'integrita' dei dati inseriti (esempio se data, se numero ecc... ecc... ) con annessa formattazione se presente...

Per adesso non allego nulla; vediamo piu' tardi ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 25 Marzo 2010, 03:01:47
Eccomi qua... osteria che tardi!  :o

Allora ho aggiunto la possibilita' di 'pilotare' la scrittura del record nelle colonne con la seguente proprieta':
 
Codice: [Seleziona]
TableView.Columns[<Column>].Field = Nome del campo che si vuole inserire nella colonna.

Altra 'chicca' ;) ripresa da un mio 'rozzo' tentativo di creare un foglio di calcolo: possibilita' di creare colonne con formula...
es.

Codice: [Seleziona]
TableView.Columns[<Column>].Formula = "=C(4) * 5"

in questo caso recupera il valore della cella[Riga, 4] e la moltiplica x 5 ripetuto su tutta la colonna.

Queste due proprieta' devono essere 'attivate' dalla proprieta' .Columns[<Column>].Type passandogli le seguenti costanti: Grid.Field o Grid.Formula

Per adesso funziona il tutto solo in modalita' ReadOnly... prossimamente (finito di mettere proprieta' alle colonne) faro' i vari Refresh all'inserimento dei dati...

@Golia
Il prossimo invio di sorgenti, con il tuo permesso ovviamente, volevo passare il db su sqlite3 (integrandolo nel progetto) e lasciare solo la form 'Listino' come FormTest.
Cosi' facendo anche chi non ha mysql installato puo' fare da  beta testing ;)
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 25 Marzo 2010, 03:02:58
opps..  :-[ i sorgenti  ;D
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 25 Marzo 2010, 12:58:35
Ciao Milio, non devi chiedere nessun permesso!! :)
Certo meglio con sqlite .
Hai dato un nome a questo progetto? pensavo di chiudere questa discussione, "esempio inserimento su tableview" non è appropriata, e aprirne un'altra col nome del progetto (forse meglio se la apri tu, questo progetto è tutto tuo ;)).
Stasera provo gli aggiornamenti ;D
Ciao
Titolo: Re: Esempio inserimento su tableview
Inserito da: dex - 25 Marzo 2010, 13:06:28
Ciao Milio, non devi chiedere nessun permesso!! :)
Certo meglio con sqlite .
Hai dato un nome a questo progetto? pensavo di chiudere questa discussione, "esempio inserimento su tableview" non è appropriata, e aprirne un'altra col nome del progetto (forse meglio se la apri tu, questo progetto è tutto tuo ;)).
Stasera provo gli aggiornamenti ;D
Ciao

buona idea x sqlite, cosi posso inserirla nel mio programma.

per il nome posso suggerire tablemilio?
Titolo: Re: Esempio inserimento su tableview
Inserito da: milio - 25 Marzo 2010, 15:23:53
per il nome posso suggerire tablemilio?

 :D

Pensavo piuttosto ad un anonimo GridBox...
Che dici?
Titolo: Re: Esempio inserimento su tableview
Inserito da: Ceskho - 25 Marzo 2010, 17:18:22
Gridbox è adatto secondo me...oppure PlusGridView
Titolo: Re: Esempio inserimento su tableview
Inserito da: Golia - 25 Marzo 2010, 18:08:06
Mi piace Gridbox