Pagina 1 di 1

[Risolto]Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 10:54
da maxrome84
Salve a tutti, torno sull'argomento gridcontrol in finestre di dialogo perché mi sono accorto di un'altro problemino.
Questa mia griglia prende i dati tra le altre cose, da una colonna formattata come Data.Ora giustamente nella griglia invece di es. 12/02/2017 vedrò una serie di numeri es.45539
C'È modo per aggirare il problema o devo cambiare la formattazione sul foglio?Non vorrei visto che poi non potrei ordinare per data.
Tra l'altro questo problema è comune anche a listbox e combobox.
Grazie.

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 11:25
da Gaetanopr
No, devi leggere i dati come string quindi cambiare la macro

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 12:02
da maxrome84
Grazie intanto per la risposta Gaetanopr. Visto che popolo la griglia con un array come mi hai mostrato tu, ho provato a dichiarare string l'array ma il risultato non cambia...

dim arr() as string
Arr() = archivio.getcellRangeByName("A2:I" & LastRow+1).GetDataArray
datamodel.addRows(Arr, Arr)

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 12:07
da Gaetanopr
Non ho detto di dichiarare l'array come string ma di acquisire i dati come testo.
Una soluzione è popolare l'array e poi andare a cambiare solo la colonna interessata.
Riprendendo il tuo vecchio file, quindi colonne A B C , consideriamo che la colonna A è quella con le date, puoi fare in questo modo.

Codice: Seleziona tutto

 Arr() = archivio.getcellRangeByName("A2:I" & LastRow+1).GetDataArray
  For i = 1 To LastRow
    Arr() = archivio.getcellByPosition(0, i).String
  Next i
  datamodel.addRows(Arr, Arr)

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 12:37
da maxrome84
Si inizialmente avevo pensato la stessa cosa, ma avevo scartato questa soluzione perché avendo moltissime righe, leggere riga per riga mi rallenterebbe troppo l'esecuzione.
A me andrebbe bene anche leggere l'intero range come string.C'é modo di farlo?
Grazie ancora.

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 12:45
da Gaetanopr
Guarda ho provato con 50000 righe ed è immediato, deve leggere solo una colonna gli array sono velocissimi non è come andare a leggere riga per riga, colonna per colonna ed inserirla nel grid come facevi inizialmente tu.
Comunque come dici tu si può fare solamente se formatti la cella come testo

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 13:36
da maxrome84
È vero scusa, non avevo considerato la differenza.
Quindi volendo lasciare la formattazione come DATA , dovrei convertire da codice la data in stringa?

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 15:26
da Gaetanopr
La macro che ti ho allegato fà questo

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 15:59
da maxrome84
Scusa Gaetanopr ma a me continua a visualizzare le date in modo sbagliato.Avrò sbagliato a modificare qualcosa.Ti allego un file di esempio.

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 16:13
da Gaetanopr
Ho sbagliato nel messaggio precedente

Codice: Seleziona tutto

 For i = 1 To 28 'LastRow
    Arr(i-1)(1) = sheet.getcellByPosition(1, i).String
  Next i
  datamodel.addRows(Arr, Arr)

Re:Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 16:30
da maxrome84
Grazie ancora tanto per la pazienza! Inserisco risolto!

Re: Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 16:41
da Gaetanopr

Re: [Risolto]Grid control visualizzare Date

Inviato: mercoledì 1 marzo 2017, 18:19
da maxrome84
Sistemato! Alla prima botta non ci azzecco mai!