Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    datagrid: visualizzare non più di n righe

    In un DataGrid debbo visualizzare non più di 10 righe di una query Access.
    Ho pensato di utilizzare la clausola top 10 ma non mi funziona.

    La query è una query di unione tipo

    SELECT CAMPO1, CAMPO2 FROM TABELLA1 UNION SELECT CAMPO1, CAMPO2 FROM TABELLA2

    Ho pensato di fare così, ma non va

    SELECT TOP 10 * FROM (SELECT CAMPO1, CAMPO2 FROM TABELLA1 UNION SELECT CAMPO1, CAMPO2 FROM TABELLA2) ORDER BY CAMPO1

    che non va assolutamente.

    allora ho pensato di ricavare un DataTable e cancellare A POSTERIORI le righe non necessarie
    For i As Integer = dt.Rows.Count - 1 To numero Step -1
    dt.Rows.RemoveAt(i)
    Next
    Per funzionare, funziona: ma non mi piace di certo.

    Domande:

    1) come scrivere la giusta query
    2) come scrivere un DataTable leggendo solo le prime righe e non caricando tutto e cancellando dopo

    ciao
    Pietro

  2. #2
    la "top10" funziona se riesci a sapere qual è il valore di un campo che funzioni da discriminante per la tua tabella.
    Esempio: select top 10 id,nomeutente from Utenti where 1=1 (poi capirai il perchè dell' "1=1)
    e sai che alla prima estrazione ti estrae 10 records. Se sai qual è l'id del decimo record, alla seconda estrazione concateni alla query già presente solo " and id>" & ultimoid
    La terza volta in ultimoid ci sarà il valore diciamo del ventesimo record e così via....
    La presenza di "1=1" ti può essere utile perchè:
    -hai già scritto nella query iniziale la clausola where
    -puoi concatenare diverse altre condizioni (AND,OR,NOT) senza preoccuparti di gestire la presenza /assenza della "where" oppure in quali occasioni metterla e in quali altre no.


    Se invece vuoi una soluzione un tantino più ricercata, ti consiglio di leggere quest'articolo:
    Articolo aspitalia.com

    La loro soluzione inerente la paginazione l'ho provata ma non mi funzionava bene e, visto che nel mio progetto il numero di record da estrarre non dovrebbe superare le 50 unità, ho fatto una select senza limiti.
    Fammi sapere....

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti ringrazio.
    La soluzione dell'articolo citato, ossia il metodo DbDataAdapter.Fill, lo uso sempre, e l'ho usato anche questa volta. Però dicono che non sia molto efficiente

    Pietro

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419

    Re: datagrid: visualizzare non più di n righe

    Originariamente inviato da pietro09

    SELECT TOP 10 * FROM (SELECT CAMPO1, CAMPO2 FROM TABELLA1 UNION SELECT CAMPO1, CAMPO2 FROM TABELLA2) as table1 ORDER BY CAMPO1
    Io non uso access ma sqlserver ma, se non metti un'alias non può funzionare.
    Ciao
    Legnetto

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: Re: datagrid: visualizzare non più di n righe

    Originariamente inviato da Legnetto
    Io non uso access ma sqlserver ma, se non metti un'alias non può funzionare.
    Ciao
    Legnetto

    chi non muore si rivede

    ringrazio
    Pietro

  6. #6
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    In effetti sono stato un po' lontano dal forum in quest'ultimo periodo....

    Ciao

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non mi funziona :master:
    Pietro

  8. #8
    Originariamente inviato da pietro09
    Ti ringrazio.
    La soluzione dell'articolo citato, ossia il metodo DbDataAdapter.Fill, lo uso sempre, e l'ho usato anche questa volta. Però dicono che non sia molto efficiente

    La non efficienza sta nel fatto che se tu vuoi estrarre 10 righe , non devi essere costretto ad estrarre tutta la tabella per poi visualizzarne appunto solo 9.
    Con il secondo (o terzo??) metodo illustrato, specifichi l'intervallo di record ed è fatta. Se funzionasse però....

  9. #9
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da pietro09
    non mi funziona :master:
    Come ho detto prima access non lo uso e quindi non so che dire, con sqlserver va benone(chiaramente ho provato).
    Mi spiace.
    Per quanto riguarda il metodo Fill e le performance, io ormai sono anni che uso quel sistema con tabelle enormi e, sinceramente analizzando con profiler la query eseguita, non vedo problemi. Se l'inefficienza è dovuta al metodo fill con i parametri per intercettare solo i record desiderati questo non lo so.
    Quello che non mi piace è l'obbligo di dover eseguire almeno una volta la count per sapere quanti sono i record totali. Se la query è complessa, le prestazioni alla prima esecuzione sono un disastro.
    Ciao

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Legnetto
    Come ho detto prima access non lo uso e quindi non so che dire, con sqlserver va benone(chiaramente ho provato).
    Mi spiace.
    Per quanto riguarda il metodo Fill e le performance, io ormai sono anni che uso quel sistema con tabelle enormi e, sinceramente analizzando con profiler la query eseguita, non vedo problemi. Se l'inefficienza è dovuta al metodo fill con i parametri per intercettare solo i record desiderati questo non lo so.
    Quello che non mi piace è l'obbligo di dover eseguire almeno una volta la count per sapere quanti sono i record totali. Se la query è complessa, le prestazioni alla prima esecuzione sono un disastro.
    Ciao
    questo mi mette il cuore in pace: la uso anch'io da secoli e va. Ma gli Autori specializzati dicono il contrario Per quanto riguarda la query access che ho fatto, con e senza alias, funziona bene con tabella normali: non mi funziona perchè le query che ho sono abbastanze complesse ed Access ci si perde

    da anni uso questa versione overload e, sinceramente, è talmente comoda che non so più cosa c'è dentro


    Public Overloads Function GetDataTable(ByVal stringaConnessione$, ByVal stringaSQL$, ByVal Pagina%, ByVal RighePagina%) As DataTable
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.