169 messaggi dal 01 agosto 2003
Ciao a tutti
vorrei estrapolare TUTTI i dati che ha una tabella
ho fatto questo


sub page_load (obj as object, e as eventargs)


  dim objcmd3 as new oledbdataadapter (" select * from mov  ", objconn)
    
    dim ds3 as dataset=new dataset()
    objcmd3.fill (ds3,"mov")
    
    mydatagrid.datasource=ds3.tables("mov").defaultview
    mydatagrid.databind




end sub





</script>

<form runat="server" id="prova">



<asp:datagrid id="mydatagrid"     runat="server"  DataKeyField="protocollo" AutoGenerateColumns="true" Width="3500"      >
<columns>




</columns>
</asp:datagrid>





</form>




pero' mi sono accorto che me ne estrae solo una parte.

Attendo vostre considerazioni

Grazie

victor
11.726 messaggi dal 09 febbraio 2002
Contributi
Ciao,
bisogna capire innanzitutto se il problema è l'OleDbDataAdapter (che non sta estraendo tutto) o il DataGrid (che non sta visualizzando tutto).

Fornisci più dettagli a proposito:
  • Che database stai usando (es. access)?
  • Quante righe hai nella tabella?
  • Quante righe sono state caricate nel DataTable? (Lo scopri esaminando il valore di ds3.tables("mov").Rows.Count)
  • Quante righe sono state visualizzate nel DataGrid? (Lo scopri esaminando il valore di mydatagrid.Rows.Count)


Per il momento prova ad abilitare la paginazione sul DataGrid, per vedere se riesci a visualizzare tutte le righe. Modifica il valore dell'attributo PageSize per determinare quante righe devono essere mostrate in ogni pagina.
<asp:datagrid id="mydatagrid"AllowPaging="True" PageSize="5" runat="server"  DataKeyField="protocollo" AutoGenerateColumns="true" Width="3500">


ciao,
Moreno

Enjoy learning and just keep making
169 messaggi dal 01 agosto 2003
Ciao carissimo Moreno
come sempre grazie di tutto.

Alla fine ho abbandonato il datagrid, in quanto non ce la faceva proprio.
Si tratta di una tabella con 70.000 righe.

Ho girovagato un po qua e la ed ho adottato questa soluzione

Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

  Dim cn As OleDbConnection
  Dim cmd As OleDbCommand
  Dim rdr As OleDbDataReader

  Dim ConnString As String = "stringa connessione"

  cn = New OleDbConnection(ConnString)

  cn.Open()

  Dim sql As String = "SELECT * from mov"

  cmd = New OleDbCommand(sql, cn)

  rdr = cmd.ExecuteReader()

  Response.Write("<html><head><title>Visualizzare i record di un DataBase con ASP.NET</title></head><body>")

  Response.Write("<table border=1 width=3000 cellspacing=0 cellpadding=2 align=center>")
 
 
  While (rdr.Read())
    Response.Write("<tr>")
  

  
  for i=0   to  rdr.fieldcount -1 
    Response.Write("<td>"&rdr(i)&"</td>")
  next
   
    Response.Write("</tr>")
  End While

  Response.Write("</table>")

  Response.Write("</body></html>")

  rdr.Close()

  cn.Close()

End Sub




In questo modo riesco a vedere tutte le colonne e tutte le righe della mia tabella..

pero' fa comunque fatica a visualizzare tutto....o meglio inizia a visualizzare ma ad un certo punto si impalla il monitor.

Troppe righe !!!

Diciamo che mi sarebbe piaciuto potere visualizzare tutta la tabella. Era un mio personale sfizio

victor
169 messaggi dal 01 agosto 2003
pero' ti chiedo:

1) come faccio a contare il numero di colonne?
2) come faccio a contare il numero di righe?
3) come faccio a vedere il peso di una tabella?

grazie mille !!!!!!!!!!

victor
169 messaggi dal 01 agosto 2003
Ciao
alla fine provando e riprovando ho fatto sta paginetta
che mi stampa le righe che voglio io da un db (dalla N alla N)

mi dice anche quante colonne e righe ci sono

che ne dici?

Sub vai(obj as object, e as eventargs)

  Dim cn As OleDbConnection
  Dim cmd As OleDbCommand
  Dim rdr As OleDbDataReader

  Dim ConnString As String = "stringa connessione"

  cn = New OleDbConnection(ConnString)

  cn.Open()


' questa query seleziona il record 1 lasciando perdere il recordo 0

'  Dim sql As String = "Select top 1 * From mov Where protocollo Not In(Select top 0 protocollo From mov Order By protocollo) Order By protocollo"




' questa query seleziona i 5 record successivi rispetto al record 1

dim varfini as integer=fin.text
dim varini as integer=ini.text

  Dim sql As String = "Select top "& varfini &" * From mov Where protocollo Not In(Select top "& varini &" protocollo From mov Order By protocollo) Order By protocollo"

  cmd = New OleDbCommand(sql, cn)

  rdr = cmd.ExecuteReader()

  Response.Write("<html><head><title>Visualizzare i record di un DataBase con ASP.NET</title></head><body>")

  Response.Write("<table border=1 width=3000 cellspacing=0 cellpadding=2 align=center>")
 


 While (rdr.Read())
    Response.Write("<tr>")
  

  
  for i=0   to  rdr.fieldcount -1 
  
   
    Response.Write("<td>"&rdr(i)&"</td>")
  
  
  next
  
  
   
    Response.Write("</tr>")
  End While

  
  
  
  
  

  Response.Write("</table>")

  Response.Write("</body></html>")

  rdr.Close()

  cn.Close()

End Sub


Sub page_load(obj as object, e as eventargs)

  Dim cn As OleDbConnection
  Dim cmd As OleDbCommand
  Dim rdr As OleDbDataReader

  Dim ConnString As String = "stringa connessione"

  cn = New OleDbConnection(ConnString)

  cn.Open()


' questa query seleziona il record 1 lasciando perdere il recordo 0

'  Dim sql As String = "Select top 1 * From mov Where protocollo Not In(Select top 0 protocollo From mov Order By protocollo) Order By protocollo"




' questa query seleziona i 5 record successivi rispetto al record 1

dim conte as integer=0
dim conte2 as integer=0

  Dim sql As String = "Select  * From mov "

  cmd = New OleDbCommand(sql, cn)

  rdr = cmd.ExecuteReader()



 While (rdr.Read())
 conte=conte+1
 
 

   
  End While
  
     for i=0   to  rdr.fieldcount -1 
  
   
  conte2=conte2+1
  
  
  next
response.Write("righe tabella" & conte & "<br>")
response.Write("n° colonne" & conte2 & "<br>")


  rdr.Close()

  cn.Close()

End Sub


</script>






<form runat="server" id="prova">
inizio<asp:textbox runat="server" ID="ini"/> (in pratica non fa vedere questi-per vedere il primo elemento devo mettere qui lo zero e fare ad esempio da 0 a 10 cosi in effetti mi fa vadere dal n 1 a 10)<br>
fine<asp:textbox runat="server" ID="fin"/> (e va avanti con questi)<br>
<asp:button runat="server" OnClick="vai"/>




</form>

victor
11.726 messaggi dal 09 febbraio 2002
Contributi
Ciao victor,
sì, è meglio non visualizzare tutte le righe che hai una tabella. Infatti, oltre ad essere lento come hai potuto constatare, è anche inutile perché di solito l'utente ne consulta al massimo una ventina e al limite va alla pagina successiva che gli mostra le successive 20.
Se vuoi consentire all'utente di trovare velocemente un'informazione, dovrai implementare anche la ricerca.


che ne dici?

Eh, ormai hai fatto tutto da te quindi probabilmente non vale la pena mettersi a modificare il codice. Altrimenti esistono controlli come la GridView (e la DataGrid prima di lei) che consentono appunto di implementare la paginazione in maniera più semplice e leggibile, come puoi vedere in questo articolo.

Inoltre, non uso Access da moltissimo tempo quindi non ti so consigliare un modo efficiente di inviare query per estrarre solo la pagina di record che poi visualizzerai.

Per ora dovresti giusto modificare la query che usi che ottenere il conteggio totale delle righe. Attualmente stai usando:
Dim sql As String = "Select  * From mov "

  cmd = New OleDbCommand(sql, cn)

  rdr = cmd.ExecuteReader()



 While (rdr.Read())
 conte=conte+1
 

Che è molto inefficiente perché recuperi i dati di 70000 righe solo per sapere quante sono. Dovresti invece inviare una query del genere, che usa la funzione di aggregazione COUNT:
Dim sql As String = "Select COUNT(*) FROM mov "
cmd = New OleDbCommand(sql, cn)
Dim conto As Integer = CType(cmd.ExecuteScalar(), Integer)


Inoltre, a proposito dell'uso delle risorse: non è sufficiente invocare il metodo .Close(). Dovresti invocare il metodo Dispose() su ogni OleDbConnection, OleDbCommand e OleDbDataReader che crei. Ancora meglio sarebbe usare i blocchi Using, che invocano il metodo Dispose automaticamente, anche ne caso in cui si verifichino errori. In questa discussione c'è un esempio di come usare i blocchi Using.
https://forum.aspitalia.com/forum/post/421620/Cancellazione-File-Inibita.aspx

ciao,
Moreno

Enjoy learning and just keep making
169 messaggi dal 01 agosto 2003
Ciao Moreno
grazie.

Io uso mssql su aruba.

Una domanda:
come faccio ad elencare tutte le tabelle presenti nel mio db?

Grazie

victor

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.