Autore Topic: Creazione componente: gb.gridbox  (Letto 117041 volte)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #420 il: 16 Giugno 2011, 18:40:06 »
mmm sta cosa non e' implementata anche perche' l'inserimento automatico di valori, come ad esempio, il prezzo per un articolo, viene gestito direttamente con i vari eventi della griglia (quali Save o nel caso di una Searchbox SearchFound) lasciando l'onere di ricercare eventuali dati all'utilizzatore del componente... e' comunque una proposta interessante e si potrebbe vedere di implementarla... bisogna sapere solo bene come rappresentare il tutto in modo semplice e funzionale.

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #421 il: 17 Giugno 2011, 07:44:35 »
mmm sta cosa non e' implementata anche perche' l'inserimento automatico di valori, come ad esempio, il prezzo per un articolo, viene gestito direttamente con i vari eventi della griglia (quali Save o nel caso di una Searchbox SearchFound) lasciando l'onere di ricercare eventuali dati all'utilizzatore del componente... e' comunque una proposta interessante e si potrebbe vedere di implementarla... bisogna sapere solo bene come rappresentare il tutto in modo semplice e funzionale.

Searchfound:

Codice: [Seleziona]
Public Sub GridBox1_SearchFound(Row As Integer, Column As Integer, {Key} As String)
Dim Rec As Result
  Rec = $CCon.Exec("SELECT * FROM tbEsercizi WHERE SPORT = '" & Key & "';")
  Me.GridBox1[Row, "sport"].Value = Key
  Me.GridBox1[Row, "cal_std"].Value = Rec["CAL"]
  Me.GridBox1[Row, "cal_eff"].Value = ((Rec["CAL"] * Me.GridBox1[Row, "tempo"].Value) / 60) * Settings["daily/peso"]
End

questo codice funziona, ma con la stringa del campo SPORT, se volessi lavorare sull'ID della tabella la ricerca funziona?
« Ultima modifica: 18 Giugno 2011, 07:11:43 da andy60 »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #422 il: 19 Giugno 2011, 17:24:16 »
altre considerazioni:

1. dopo aver eliminato un record premo salvo e do' refresh, mi ritrovo con qialche colonna  vuota sulla destra
2. come faccio a richiamare l'evento di ricalcolo della routine GridBox1_SearchFound senza cliccare materialmente sul campo relativo?

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #423 il: 19 Giugno 2011, 21:24:49 »
Per quanto riguarda le colonne vuote mi dovresti postare un programmino di esempio con la gridbox settata in modo che generi l'errore.

Per l'evento GridBox_SearchFound() viene richiamato solamente se nella searchbox legata alla griglia viene effettivamente trovato quello che si cerca :)
Hai provato con l'evento GridBox_Save() ? Esso viene scatenato ogni qualvolta si modifica una cella... potrebbe fare al caso tuo

Allego una nuova release di GridBox con l'aggiunta di un nuovo esempio 'rubrica' creato dal nostro Golia :)
« Ultima modifica: 14 Luglio 2011, 08:12:52 da milio »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #424 il: 19 Giugno 2011, 23:43:01 »
Ti faccio ancora i complimenti, myZone4 sta 'uscendo' con una velocità ed una qualità di codice possibile grazie al componente, oltre che naturalmente alle idee riprese e sviluppate di myZone3.


Errore delle colonne aggiunte: verifico se le lo fa ancora e poi te lo posto.

Controllero' l'evento che mi hai segnalato. Intanto ho il piacere di postarvi le nuove form fresche fresche, in pratica un inno a gridbox.

Campo date: pensi di mettere al posto della maschera di inserimento un controllino calendario stile quello che textbox adibito a gestione della data?

« Ultima modifica: 19 Giugno 2011, 23:47:58 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #425 il: 20 Giugno 2011, 00:29:08 »
@ Andy

wow... uso massiccio di GridBox he?  ;)


Nuova release: corretto bug su salvataggio dati con Db MySql
« Ultima modifica: 14 Luglio 2011, 08:13:07 da milio »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #426 il: 20 Giugno 2011, 00:33:43 »
@ Andy

wow... uso massiccio di GridBox he?  ;)


Nuova release: corretto bug su salvataggio dati con Db MySql

uso massiccio si, hai fatto un lavoro 'spettacolare' :-*

aggiorno..anche l'aggiornamento della griglia per le varie app è cambiata, premendo si aggiornano tutte! wao!

errore delle colonne: non me lo fa +, evidentemente era altro..

Una riflessione sui database backend:
nell'utilizzo della base dei dati di myzone3 mi ero basato sui valori indice per le ricerche e quant'altro, in myzone4 ho semplificato notevolmente, basandomi su campi stringa e su gridbox e la gestione degli eventi search. Non so se la soluzione di non basardi sugli id seriali sia la piu' ortodossa ma funziona.
« Ultima modifica: 20 Giugno 2011, 07:17:03 da andy60 »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #427 il: 20 Giugno 2011, 11:04:30 »
c'è un limite al numero delle colonne? non riesco a fare una grid di nove colonne, non mi visualizza INFO2, questo il codice:

Codice: [Seleziona]
 'griglia nutrizione
  
  With GridBox2
    .Connection = $CCon
  End With
  
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.Date
    .Field = "GMA"
    .Text = "GMA"
    .Name = "gma2"
    .DefaultValue = Date(Now)
    .Required = True
    .w = 100
    .Alignment = 3
  End With
  
   Inc Col_b
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.float
    .Field = "GRAMMI"
    .Text = "GRAMMI"
    .Name = "grammi"
    .Required = True
    .Format = "0.00"
    .w = 100
    .Alignment = 3
  End With
 
 Inc Col_b
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    '.DataType = Grid.DataType.String
    .Field = "ALIMENTO"
    .Text = "ALIMENTO"
    .Name = "alimento"
    .EnabledSearch = True
    .Box.ListSearch = GridBox1.ReturnCollection("SELECT ALIMENTO,ALIMENTO FROM tbAlimenti ORDER BY ALIMENTO;")
    .Required = True
    .w = 250
  End With
 
   Inc Col_b
    With GridBox2.Columns[Col_b]
    .Hide = True
    .Type = Grid.Type.Field
    .Field = "IDPASTO"
    .DataType = Grid.DataType.Serial
    .Text = "id2"
    .IsFieldKey = True
'     .w = 10
  End With  
  
  Inc Col_b
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.float
    .Field = "P"
    .Text = "PROT (mnbl)"
    .Name = "proteine"
    .Required = True
    .w = 100
    .Format = "0.00"
    .Alignment = 3
  End With

Inc Col_b
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.float
    .Field = "G"
    .Text = "GRA (mnbl)"
    .Name = "grassi"
    .Required = True
    .w = 100
    .Format = "0.00"
    .Alignment = 3
  End With

Inc Col_b
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.float
    .Field = "C"
    .Text = "CARB (mnbl)"
    .Name = "carboidrati"
    .Required = True
    .w = 100
    .Format = "0.00"
    .Alignment = 3
  End With
  
  Inc Col_b
  With GridBox2.Columns[Col_b]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.float
    .Field = "CALORIE"
    .Text = "CALORIE"
    .Name = "calorie"
    .Required = True
    .w = 100
    .Format = "0.00"
    .Alignment = 3
  End With
  
  Inc Col_b
  With GridBox2.Columns[Col]
    .Hide = False
    .Type = Grid.Type.Field
    .Field = "INFO"
    .Text = "INFO"
    .Name = "info2"
    .w = 100
    .Alignment = 1
  End With  
  
 Inc Col_b
  With GridBox2.Columns[Col]
    .Hide = False
    .Type = Grid.Type.Field
    .Alignment = Align.Center
    .DataType = Grid.DataType.Boolean
    .Field = "POST"
    .Text = "POST"
    .Box.ValueCheck = 1
    .Box.ValueUncheck = 0
    .DefaultValue = 0
    .w = 100
    .Name = "post2"
    .Alignment = 3
 End With

 With GridBox2
    .Expand = True
    .Color.RowAlternating = Color.RGB(230, 230, 230)
    .AutoDataType = True
    .GridOnly = True
    .TableName = "tbPasti"
    .LoadData("SELECT * FROM tbPasti ORDER BY GMA;")
    .ColorRowAlternating = True
    .AlwaysEditable = True ' sempre editabile
    .ReadOnly = False ' solo lettura
    .AutoNew = True '
  End With
  
End

'calcolo griglia nutrizione

'es -----wuestel di pollo---- 55 gr.----- 1 prot--- 3.5 g ---0.5 c---

Public Sub GridBox2_SearchFound(Row As Integer, Column As Integer, {Key} As String)
Dim Rec As Result
  Rec = $CCon.Exec("SELECT * FROM tbAlimenti WHERE ALIMENTO = '" & Key & "';")
  Me.GridBox2[Row, "alimento"].Value = Key
  Me.GridBox2[Row, "proteine"].Value = (Me.GridBox2[Row, "grammi"].Value * Rec["P"]) / Rec["GRAMMI"]
  Me.GridBox2[Row, "grassi"].Value = (Me.GridBox2[Row, "grammi"].Value * Rec["G"]) / Rec["GRAMMI"]
  Me.GridBox2[Row, "carboidrati"].Value = (Me.GridBox2[Row, "grammi"].Value * Rec["C"]) / Rec["GRAMMI"]
  Me.GridBox2[Row, "calorie"].Value = (Me.GridBox2[Row, "proteine"].Value * 30) + (Me.GridBox2[Row, "grassi"].Value * 30) + (Me.GridBox2[Row, "carboidrati"].Value * 40)
End

allego struttura tabella sqlite
« Ultima modifica: 20 Giugno 2011, 11:07:54 da andy60 »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #428 il: 20 Giugno 2011, 20:52:05 »
Ciao Andy
mi sembra che hai dichiarato col_b e poi hai messo col

Citazione
Inc Col_b
  With GridBox2.Columns[Col]

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #429 il: 20 Giugno 2011, 20:58:05 »
Ciao Andy
mi sembra che hai dichiarato col_b e poi hai messo col

Citazione
Inc Col_b
  With GridBox2.Columns[Col]

se è questo ti offro lo champagne :-*

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #430 il: 20 Giugno 2011, 20:59:30 »
E' vero non l'avevo notato  ;D

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #431 il: 22 Giugno 2011, 09:57:39 »
Refresh dei dati della gridbox

Ho inserito la gridbox principale nella FMain del programma. Chiamata dall'evento _new. Se vado a modificare le tabelle anagrafiche del programma (forms secondarie) e ritorno alla FMain neanche con refresh il programma mi carica i dati aggiornati delle anagrafiche. Ho provato con .LoadData ma mi sembra di non aver risolto. Cosa suggerite?

Formato del campo data
Vi rimando a questo post http://www.gambas-it.org/smf/index.php?topic=1804.0
« Ultima modifica: 22 Giugno 2011, 11:21:21 da andy60 »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #432 il: 22 Giugno 2011, 14:53:37 »
Citazione
Refresh dei dati della gridbox
Prova prima di uscire dal form secondario a dargli in pasto questo
FMain.Gridbox1.LoadData(query_che_hai_usato_per_gridbox)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #433 il: 22 Giugno 2011, 15:17:32 »
@ golia

provato: nessun risultato..il recordset non viene aggiornato

per la questione della data hai visto? hai qualche idea?

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #434 il: 22 Giugno 2011, 17:24:42 »
impossibile, deve andar per forza.
Prova a fare un pulsante nel form Fmain, una volta che con gli altri form hai modificato le tabelle (devi aver modificato e salvato il database) clicca sul pulsante con questo evento.
Citazione
me.Gridbox1.LoadData(query)
la query deve essere la stessa che hai caricato gridbox.
Ci scommetto un pacco di birre  ;D
appena ho tempo vedo per la data