Fråga : förhöjningdatabas tar fram kapaciteten - ms-access

Jag har en kodifiera [att fästas] som tar två bordlägger i sänder från databaser för en ta fram, jämför värderar för varje ror, och kolonnen och, om den finner några skillnader, den anmäler till user.
Unfortunately som den blir långsammare, och långsammare, som databasen grow.

I önskar egentligen den, fasta och mig vet inte vad för att göra. bör jag, använder dragning. Jag har fäst allmänheten för code

Anthony

fungerar showDifferences (ByVal ds som stränger, ByVal co som System.Data.OleDb.OleDbConnection) som Boolean
dunkelt z som Integer
dunkelt v, p, vname som String

z- = för 0

showDifferences = False
'där är flera bordlägger och väljer en på ett time- dem är i bordläggatblRecords 'jämför e.g. värderar bordlägger in [styra], mot de bordlägger in [

för vmaster] för t som Long = 0 till tblRecords.Rows.Count -
för 1
Application.DoEvents () ”uteslutar dessa tables
om sectionsToEculude (tblRecords. Columns (”recname" ) .ColumnName) = True fortsätter därefter For
om klippning (mainver). Längden = 0 Then
tstr = ”VÄLJER * FRÅN [” & tblRecords.Rows (t) (”recname”) &”] ”& tstr för ds
Else
= ”VÄLJER * FRÅN [” & mainver & tblRecords.Rows (t) (”recname”) &”] ”, & ds
avslutar If

cm = ny OleDb.OleDbCommand
cm.CommandText = tstr
cm. Anslutnings- = för co
dr = cm.ExecuteReader
, om dr.HasRows Then
fördriver dren. Read
kriterier = "" tankeskapelse för
”sql-kriterierna för varje mitt-, kriterier = klippning för table
((ds, 1, ds. Längd - 1)) &” och ”
för I som Int16 = 1 till
för tblRecords.Rows (t) (”nid”), om inte IsDBNull (dren (tblRecords.Rows (t) (”ID” & (I - 1) .ToString))) Then
, om inte IsNumeric (dren (tblRecords.Rows (t) (”ID-" & (I - 1) .ToString))) Then
kriterier = kriterier & tblRecords.Rows (t) (”ID” & I - 1) & ”=”” & dren (tblRecords.Rows (t) (”ID-" & (I - 1) .ToString)) &”” och ”kriterier för
Else
= kriterier & tblRecords.Rows (t) (”ID” & I - 1) & ”=” & dren (tblRecords.Rows (t) (”ID " & (I - 1) .ToString)) &” och ”
avslutar If
Else
kriterier = kriterier, & tblRecords.Rows (t) (”ID” & I - 1) &” är ogiltigt, och ”
avslutar If
Next
kriterier = mitt- (kriterier, 1, kriterier. Längd - 5)

om klippning (mainver). Längden = 0 Then
tstr = ”VÄLJER * FRÅN [v” & tblRecords.Rows (t) (”recname”) &”] ”& kriterier &”; ”tstr för
Else
= ”VÄLJER * FRÅN [” & tblRecords.Rows (t) (”recname”) &”] ”& kriterier &”; ”
avslutar If

, 'nu som jag har det hela SQL-meddelandet och kriterierna som fästas till cmd för it.

= ny OleDb.OleDbCommand
cmd.CommandText = cmd för tstr
. Anslutning = co

ddr = cmd.ExecuteReader
, om tblRecords.Rows (t) (”recname”) = ”ledar-” därefter recordExists = den falska 'inte i avläsaren för verification
'[dr] är hållande, värderar för bordlägger [styra],
, 'avläsaren [ddr] är som hållande värderar för bordlägger [vmaster] for example

om recordExists för ddr.HasRows Then
=
dup2.Clear för True
'kontrollduplicates
dup1.Clear () () -/>stunder ddr. Read
'jämför sätter in värderar sätter in by värderar
för rapporten för true
för
', om någon är olik [showDifferences] är 'för f som Int16 = idNames.Count till dr.FieldCount - vname för 1
=
för dr.GetName (f), om IsDBNull (dr (f)) Därefter: v = ingenting: Annars: v = klippning (dr (f)) : Avsluta If
, om IsDBNull (ddr (vname)) Därefter: p = ingenting: Annars: p = klippning (ddr (vname)) : Avsluta If
om inte variablesToExclude (vname) Then
om showDifferences för v-<> p Then
= True
ddr. Nära ()
ddr = Nothing
cmd. Ordna ()
går ut Function
avslutar If
avslutar If
Next
avslutar While

Else
'berättar användaren, om rekordet inte finnas i [
för vmaster], om tblRecords.Rows (t) (”recname”) = ”ledar-” därefter recordExists = False
avslutar If
ddr. Nära ()
ddr = Nothing
cmd. Ordna ()
för
Application.DoEvents () avslutar While

avslutar den If
dren. Nära () dr för
= Nothing
cm. Ordna () cmd för
Next
. Ordna ()
avslutar Function
" klar "

Svar : förhöjningdatabas tar fram kapaciteten - ms-access

Ok Aaaaahh… problemet är att du inte måste att ge databeståndsdelen… all som du gör är till prociden det känt av fungera.
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:


	
		
	
	
		
	
	
	
	
	
	
		
			
		
	


Andra lösningar  
 
programming4us programming4us