Forum > Databases

[RISOLTO]ZEOSLib, visualizzazione di TDateTime da DB MS Access

(1/2) > >>

giacomarko:
Buona sera,

sto incontrando difficoltà nel formattare correttamente l'output dati su una normalissima DBGrid, (DisplayFormat) in pratica il mio test è il seguente:

il test è composto da una form con due DBGrid che si collegano ad un DB MS Access, il classico demo "Northwind.mdb",

-> la prima DBGrid si collega utilizzando TZConnection (Zeoslib) via ADO e legge i dati con TZQuery
-> la seconda si collega utilizzando TODBCConnection (SQLDB) e legge i dati con TSQLQuery

chiaramente entrambe interrogano con una query select identica, e sulla stessa tabella.  :)   a questo punto eseguo e noto che:

-> la prima DBGrid collegata via Zeos, non mostra la formatazione € per i tipo dati valuta e che i due DateTime mostrano solo la data e non data e ora
-> la seconda via (SQLDB) mostra correttamente sia il campo valuta che il DateTime completo.
    (pic DBGrid_as_is.jpg)


a questo punto in modo brutale, applico il formato da visualizzare su entrambe le griglie, con il formato valuta solo su quella Zeos


--- Codice: ---
   // Zeoslib
    DBGrid.Columns[2].DisplayFormat:='###,###.00 €';
    DBGrid.Columns[3].DisplayFormat:='dd/mm/yyyy';
    DBGrid.Columns[3].Alignment:=taRightJustify;
    DBGrid.Columns[4].DisplayFormat:='hh:m:ss';
    DBGrid.Columns[4].Alignment:=taRightJustify;

    // TODBCConnection
    DBGrid1.Columns[3].DisplayFormat:='dd/mm/yyyy';
    DBGrid1.Columns[3].Alignment:=taRightJustify;
    DBGrid1.Columns[4].DisplayFormat:='hh:mm:ss';
    DBGrid1.Columns[4].Alignment:=taRightJustify;

--- Termina codice ---

risultato :

-> sulla prima nulla è cambiato nel campo valuta, il campo data è ok e il campo time segna 0
-> sulla seconda tutto a posto
    (pic DBGrid_DisplayFormat.jpg)

ora, uno potrebbe anche dire "be, usiamo TODBCConnection e morta lì...", ma a parte il non capire perchè... non mi dispiacerebbe utilizzare Zeos, se non altro perchè le connessioni disponibili sono tante e belle che pronte.

Qualcuno di voi è incappato in questa scocciatura ?

Marco

nomorelogic:
ciao
Non ho esperienze con Access, ma ho notato che zeoslib ha alcune piccole differenze a seconda del db a cui ci si connette.
Ad esempio con postgres, se in una select si usa un alias per un campo

esempio:

--- Codice: ---
select campo1 as CampoA from ...
--- Termina codice ---

e con Zeoslib si richiedono i metadati di quella query, il nome della colonna è nullo (ma per fortuna si riesce a recuperare da un'altra parte).

Mi viene da pensare se il problema di zeoslib sia con access.
Sarebbe da provare con un DBMS diverso (in cui effettuare la stessa query) per vedere se si hanno gli stessi risultati.

nomorelogic



Edit:
ho trovato questo thread di cui riporto 2 link, forse ti può essere utile
https://zeoslib.sourceforge.io/viewtopic.php?t=23289
https://zeoslib.sourceforge.io/viewtopic.php?f=33&t=2818&p=13439

giacomarko:
Può essere un problema di Zeos, e certo MS Access non aiuta in quanto l'unico tipo di dato relativo al tempo è TDateTime, che poi si differenzia in visualizzazione nelle varie forme, da un certo punto di vista l'anomalia la si vede anche con il controllo SQLDB.

Quello però che mi fà specie di Zeos (e anche un pò incaz...re), è che d'accordo non "capisce" il tipo di dato corretto, ma il fatto che neanche DisplayFormat sortisce effetto, mentre su SQLDB funziona e di fatto visualizza il dato seguendo la maschera che gli si passa come formato,

Perchè Zeos non fà una piega ?
il metodo DisplayFormat viene eseguito sul DBGrid direttamente ...  ???

posso creare una tabella con tutti i tipi di dati, su diversi DB, e poi vediamo cosa succede, anche se non penso aiuti in qualche modo a capire ne il perchè, e ne a come aggirare il problema.

M

DragoRosso:

--- Citazione da: giacomarko - Gennaio 24, 2023, 01:23:09 pm ---Può essere un problema di Zeos, e certo MS Access non aiuta in quanto l'unico tipo di dato relativo al tempo è TDateTime, che poi si differenzia in visualizzazione nelle varie forme, da un certo punto di vista l'anomalia la si vede anche con il controllo SQLDB.

Quello però che mi fà specie di Zeos (e anche un pò incaz...re), è che d'accordo non "capisce" il tipo di dato corretto, ma il fatto che neanche DisplayFormat sortisce effetto, mentre su SQLDB funziona e di fatto visualizza il dato seguendo la maschera che gli si passa come formato,

Perchè Zeos non fà una piega ?
il metodo DisplayFormat viene eseguito sul DBGrid direttamente ...  ???

posso creare una tabella con tutti i tipi di dati, su diversi DB, e poi vediamo cosa succede, anche se non penso aiuti in qualche modo a capire ne il perchè, e ne a come aggirare il problema.

M

--- Termina citazione ---

Il problema potrebbe essere la specializzazione di Zeos, in poche parole in database di Access (ODBC o ADO) è stato modificato come accesso da diversi anni, tanto è vero che il supporto ODBC installato nel SO è stato interrotto anni fà (occorre installare un pacchetto gratuito fornito sempre da Microsoft per consentire l'accesso ad Access da programmi esterni a quelli di Microsoft stessa). Se ne è parlato in un altro post sempre in questo forum.

D'altronde Access non è proprio un database largamente usato negli ultimi 10 anni .....

Ciao

giacomarko:
Ok ci sta,

Access avrà i suoi difetti... secondo me anche uno o due pregi... non di più però... :)

ma questo può spiegare il motivo della "incerta" interpretazione dei dati letti da Zeos,
ma non spiega perché il metodo DisplayFormat che agisce su DBGrid, non sortisce nessun effetto, almeno io non capisco

m

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa