begin process at 2010 02 10 05:17:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Base de données

 > 

ADO & DAO

 > 

base access 2 200 000 lignes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

base access 2 200 000 lignes

mercredi 15 octobre 2008 à 11:59:25 | base access 2 200 000 lignes

m2rtech

Bonjour,

je dispose d'une base access (jet pour être exact)
et je souhaite améliorer les temps d'access. (2,2 million d'enregistrement)
mon problème est de trouver les meilleurs réglages.
voici mon code .

en ouverture 4.30 sec avec adUseServer (convenable)
en ouverture  plus de 30 sec avec adUseClient (pas bon du tout !)


Private Sub Requete_complete()
    On Error GoTo fin

    Screen.MousePointer = 11  'sablier
    deb = Timer
    Set rs = New ADODB.Recordset
    With rs
        .CursorLocation = adUseServer
        .ActiveConnection = CN
        .Properties("IrowSetIdentity") = True
        .Source = Requete_Articles_Complete
        .Open , , adOpenStatic, adLockOptimistic, adCmdText
    End With

    Set DataGrid1.DataSource = rs
    Label30 = Timer - deb
    Screen.MousePointer = 0
    Exit Sub
fin:
   Trape_Erreur Me.name, "Requete_complete"

End Sub

lorsque je recherche dans un champs lors de chaque frappe
le compteur s'affole et je dépasse les 30 sec
j'ai testé avec le curseur AdOpenForwardOnly, mais il ne marche pas avec access

Private Sub txtrech_Change()
      If Len(txtrech) > 2 Then 'on entre en recherche au 3eme caratère,
            deb = timer
            Requete_Articles = Requete_Articles_De_base & _
            " where désignation LIKE ""%" & txtRech & "%"" "
            Screen.MousePointer = 11  'sablier
            Set rs = New ADODB.Recordset
            With rs
                .CursorLocation = adUseServer
                .ActiveConnection = CN
                .Properties("IrowSetIdentity") = True
                .Source = Requete_Articles
                .Open , , adOpenStatic, adLockOptimistic, adCmdText
            End With
        
            Set DataGrid1.DataSource = rs
            Set Adodc1.Recordset = rs
            Label30 = Timer - deb
     End if
End Sub

y'a t-il un moyen de naviguer dans le recordset
sans le rédefinir à chaque requete ? (Set rs = New ADODB.Recordset)
merci de votre aide
mercredi 15 octobre 2008 à 12:21:14 | Re : base access 2 200 000 lignes

lillith212

Membre Club
Salut,

Alors j'ai pas regarder ton code complétement...
Par contre peux tu préciser : lorsque je recherche dans un champs lors de chaque frappe
le compteur s'affole et je dépasse les 30 sec
j'ai testé avec le curseur AdOpenForwardOnly, mais il ne marche pas avec access

Ensuite quand tu marque :
y'a t-il un moyen de naviguer dans le recordset
sans le rédefinir à chaque requete ? (Set rs = New ADODB.Recordset)
Tu détruit ton recordset ou tu recharge ton recordset à chaque requete??? Quel type de requete tu fais???
Merci

S.L.B.


-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras --
<

mercredi 15 octobre 2008 à 12:25:17 | Re : base access 2 200 000 lignes

m2rtech

Salut,

je détruit le recordset à chaque fois
que préconises tu ?

sachant que j'ai testé la conservation du recordet et pratiqué
la navigation dans le jeu avec :
rs.find "désignation like '"%toto%'""
qui marche pas mieux
mercredi 15 octobre 2008 à 13:01:20 | Re : base access 2 200 000 lignes

lillith212

Membre Club
Re:

Le fait de détruire ton recordset et de le recharger te fait perdre du temps. ca c'est sur!
Quel est ton temps de traitement en utilisant le find???


S.L.B.


-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras --
<

mercredi 15 octobre 2008 à 13:18:32 | Re : base access 2 200 000 lignes

nhervagault

Administrateur CodeS-SourceS
Salut,

Il y a la propriete filter sur les recordset
cela doit etre plus facile à gérer.

Regarde si tu peux placer des index

NB ce n'est pas tres conseillé de mettre dans des evenements
comme les appui de touche des requetes
car si tu écris 10 lettre access fait 10-2 requetes comme tu commences au deuxieme caractères.

Regardes du coté de filter.
Enleve le premier % dans la recherche les perf seront améliorée aussi.

Access n'est pas fait pour traiter des grosses tables
Compacte la base ca peut aider aussi.

Sinon il peut etre interessant de passer sur une base sqlserver express

Bon courage


Cette discussion est classée dans : set, access, recordset, rs, requete


Répondre à ce message

Sujets en rapport avec ce message

recordset deconnecté + creation dynam datareport [ par kick71 ] Bonjour,J'ai un probleme entre l'utilisation d'un Rs + ouverture d'un data-report avec ce RS :Si j'ai un état (ReprotSet) standard, sans regroupement Requete SQL sur un Recordset [ par PaulScholes ] J'ai une table, dans laquelle, je veux faire 2 requêtes successives, une requete pour la periode, une autre pour le nom de l'entreprise, je suis oblig VB/ACCESS Requête parametrée stockée dans ACCESS [ par toof ] J'ai une requête ACCESS stockée dans ma base de donnée, avec un paramètreIl y a deux colonnes, une avec un type Numérique, l'autre avec un type TexteL Probleme VBA help [ par yaya31 ] bonjour a tousVoila mon probleme:J ai un formulaire qui me calcul le nombre de composant necessaire a la fabrication de produit. Or j aimerais que dan list + recordset [ par Sk8yo ] salut,j' ai un probleme hyper simple mais la je caleje crée une requete a l aide d un querydef"select Nom from Client" toute simple la requeteje recup datagrid [ par Simaifou ] Salut tout le mondeJ' essaie en vain de charger la datasource d'une datagrid avec un adodb.recordset voici mon affaireform_load() dim rs as adodb.re Temp d'execution d'un Recordset [ par Ricou13 ] J'ai un pb de temps d'accès à ma base de données. Pour mieux expliquer, j'ai fait un bout de code de démo. Un form avec une combo et un bouton. Le pri une question sur l'objet MSHFlexGrid [ par MissJo ] j'utilise un objet MSHFlexGrid pour afficher des enregistrements d'une table avec une requete SQL, le probleme c quand je modifie ma table et lorsque PB à la déclaration d'un recordset ! [ par doomVB ] DoomVBSalut tout le monde,J'essaie de déclarer un recordset puis de l'instancier et c'est là que ça coince !Voilà mon code : Dim DB As Database executer requete access sous VB [ par Thalyee ] Bonjur tous et toutes, Est il possible d'éxécuter une requete access stockée à partir de vb?, je pense que oui mais je tourne en rond et pas moyen d'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales