Question : augmenter l'exécution d'accès aux bases de données - ms-access

Je fais [joint] un code qui prend deux tables à la fois des bases de données d'un accès, compare des valeurs pour chaque rangée et colonne et s'il trouve n'importe quelles différences qu'il fait rapport à l'user.

Unfortunately il devient plus lent et plus lent pendant que la base de données grow.

I le veulent vraiment rapidement et je ne sais pas quoi faire. si j'emploient le filetage. J'ai attaché le code

Anthony

les showDifferences que publics de fonction (ByVal ds comme corde, ByVal Co comme System.Data.OleDb.OleDbConnection) comme Boolean
obscurcissent z comme Integer
faible v, p, le vname comme String

des showDifferences de z = de 0

= False
'là sont plusieurs tables et sélectionnent un à un time- ils sont dans le tblRecords
de table 'par exemple comparent des valeurs dans la table [maître] contre ceux dans le

pour t en tant que longtemps = 0 à tblRecords.Rows.Count - le
de 1
Application.DoEvents () « excluent ces le tables
si sectionsToEculude (tblRecords. Columns (« recnamele " ) .ColumnName) = rectifient continuent alors For
si équilibre (mainver). La longueur = 0 tstr de Then
= « CHOISISSENT * À PARTIR [ » et tblRecords.Rows (t) (« recname ») et »] « et le tstr du ds
Else
= « CHOISISSENT * À PARTIR [ » et mainver et tblRecords.Rows (t) (« recname ») et »] « et extrémité If

du ds
cm = nouvel OleDb.OleDbCommand
cm.CommandText = tstr
cm. Dr. de raccordement = de co
= cm.ExecuteReader
si dr.HasRows Then
tandis que Dr. Critères = "" construction de
de Read
« les critères de SQL pour chaque les critères = l'équilibre du table
(mi (ds, 1, ds. Longueur - 1)) et » et « 
pour I en tant qu'Int16 = 1 à tblRecords.Rows (t) (« nid »)
sinon IsDBNull (Dr. (tblRecords.Rows (t) (« identification » et (I - 1).ToString))) Then
sinon IsNumeric (Dr. (tblRecords.Rows (t) ( de « identification " et (I - 1).ToString))) Critères de Then
= critères et tblRecords.Rows (t) (« identification » et I - 1) et « = » » et Dr. (tblRecords.Rows (t) («  d'identification " et (I - 1).ToString)) et » » et « critères du
Else
= critères et tblRecords.Rows (t) (« identification » et I - 1) et « = » et Dr. (tblRecords.Rows (t) (« identification " et (I - 1).ToString)) et » et « critères d'If
Else
de fin du
= critères et tblRecords.Rows (t) (« identification » et I - 1) et » est des critères nuls et « du
de fin d'If
Next
= mi (critères, 1, critères. Longueur - 5)

si équilibre (mainver). La longueur = 0 tstr de Then
= « CHOISISSENT * À PARTIR [v » et tblRecords.Rows (t) (« recname ») et »] « et des critères et » ; le « tstr du
Else
= « CHOISISSENT * À PARTIR [ » et tblRecords.Rows (t) (« recname ») et »] « et des critères et » ; « extrémité If

du
'maintenant j'ai la commande SQL Entière et les critères apposés au cmd d'it.

= nouvel OleDb.OleDbCommand
cmd.CommandText = cmd du tstr
. Le raccordement = le co

la RDA = le cmd.ExecuteReader
si tblRecords.Rows (t) (« recname ») = les recordExists de « maître » puis = 'pas dans lecteur faux du verification
'[Dr.] est des valeurs de possession pour le
du
dup2.Clear du duplicates
dup1.Clear de contrôle du
le 'lecteur [RDA] est des valeurs de possession pour le

de table [vmaster] par exemple si les recordExists = le True
de table de ddr.HasRows Then
'() ()                        Tandis que la RDA. Read
'comparent la valeur de champ par le
de valeur de champ 'le cas échéant est que différent [des showDifferences] est
de rapport du true
le 'pour f en tant qu'Int16 = idNames.Count à dr.FieldCount - vname de 1
= dr.GetName (f)
s'IsDBNull (Dr. (f)) puis : v = rien : Autrement : v = équilibre (Dr. (f)) : Extrémité If
s'IsDBNull (RDA (vname)) Puis : p = rien : Autrement : p = équilibre (RDA (vname)) : variablesToExclude d'If
de fin sinon (vname) Then
si showDifferences du <> p Then
de v = True
RDA. Fermer () le
la RDA = le cmd de Nothing
. Disposer () l'extrémité While

Else
d'If
Next
de fin d'If
de fin de Function
de sortie du
'disent à utilisateur si le disque n'est pas trouvé dans [le
de vmaster] si tblRecords.Rows (t) (« recname ») = les recordExists de « maître » puis = l'extrémité If
RDA de False
. Fermer () le
la RDA = le cmd de Nothing
. Disposer () l'extrémité de While

de fin du
du
Application.DoEvents () Dr. d'If
. Clôturer () le Dr. = Nothing
cm du
. Disposer () le cmd du
Next
. Disposer () l'extrémité Function
du
class= de

Réponse : augmenter l'exécution d'accès aux bases de données - ms-access

Aaaaahh… correct le problème est que vous ne devez pas fournir l'élément d'informations… tout que vous faites est au procide le nom de la fonction.
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :

	
		
	
	
		
	
	
	
	
	
	
		
			
		
	


Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us