Pb chargement acces dans listview

cs_pipiche Messages postés 9 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 13 avril 2007 - 6 nov. 2004 à 10:27
cs_pipiche Messages postés 9 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 13 avril 2007 - 6 nov. 2004 à 16:06
Bonjour tout le monde,

je ne suis pas trés doué et j'ai un pb de temps de chargement avec une listview.
je charge un base de donnée acces comportant 30000 lignes sur 2 colones code postal, ville.
Hormis le nombre de ligne la base fait 300ko donc rien de super lourd et pourtant ça met au minimum 10nm pouir s'afficher!!!!
est-ce normale? si oui y a t-il une autre solution de chargement plus rapide.
voici mon code.
Private Sub OuvreBase()
Dim req As String
Dim Compt As String
req = "Select * FROM Codpostal"
Dim Rs As dao.Recordset
Rs = MaBase.OpenRecordset(req)
Dim LviItem As ListViewItem
Dim LsiSubItem As ListViewItem.ListViewSubItem
ListView6.Visible = False

ListView6.Clear() ListView6.AllowColumnReorder True ListView6.FullRowSelect True
ListView6.View = View.Details
ListView6.Columns.Add("", 0, HorizontalAlignment.Left)
ListView6.Columns.Add("CP", 80, HorizontalAlignment.Left)
ListView6.Columns.Add("Ville", 300, HorizontalAlignment.Left)
Rs = MaBase.OpenRecordset(req)
ListView6.Items.Clear()
Do While Not Rs.EOF
With ListView6.Items.Add("")
.SubItems.Add(CStr(Rs.Fields("CP").Value))
.SubItems.Add(CStr(Rs.Fields("Ville").Value))
End With
Rs.MoveNext()
Loop
Rs.Close()
ListView6.Visible = True
End Sub
Si quelqu'un peu m'aider car moi je ne vois plus comment faire.
ps : il faut que je puisse selectionner un ligne complete dans la listview pour la réécrire ailleur!!!!
Merci d'avance.

2 réponses

metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
6 nov. 2004 à 13:52
Salut,

J'ai fait un test avec une base perso contenant 57000 enregistrement, j'ai mis 9s pour remplir ma listview.

J'ai changé ton code je te le marque ici regarde si tu peut l'adapter.

Dim req As String
Dim Compt As String
Set rs = dbs.OpenRecordset("SELECT * FROM [codpostal]")
rs.MoveLast
rs.MoveFirst
ListView6.ColumnHeaders.Clear
ListView6.ListItems.Clear
r = SendMessageLong(ListView6.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, LVS_EX_FULLROWSELECT)
ListView6.ColumnHeaders.Add , , "", ListView6.Width / 6
ListView6.ColumnHeaders.Add , , "CP", ListView6.Width / 3, lvwColumnCenter
ListView6.ColumnHeaders.Add , , "Ville", ListView6.Width / 4, lvwColumnCenter
ListView6.View = lvwReport
ListView6.Visible = False
ListView6.ListItems.Clear
Do While Not rs.EOF
Set itmX = ListView6.ListItems.Add(, , "")
itmX.SubItems(1) = CStr(rs.Fields("CP").Value)
itmX.SubItems(2) = CStr(rs.Fields("Codpos").Value)
rs.MoveNext
Loop
rs.Close
ListView6.Visible = True

Bon c'est du vite fait, mais ca fonctionne...
Metalcoder
0
cs_pipiche Messages postés 9 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 13 avril 2007
6 nov. 2004 à 16:06
je te remercie de ton aide mais apparement ça ne fonctionne pas il y a peut-être une précision de j'ai omis de donner c'est que je suis en vb.net et visible les "set" n'existe plus. D'autre part j'ai deja devellopé une applie avec cette même base en vb6 et effectivement ça va beaucoup mais alors beaucoup plus vite.....
malheureusement en vb.net je ne sais pas pour pas moyen de le faire correctement. Don si tu a une autre soluce en vb.net je si toujours preneur.
0
Rejoignez-nous