Frage : Datenbankzugriffleistung erhöhen - Ms-access

Ich lasse einen Code [anbringen] der zwei Tabellen auf einmal von den Datenbanken eines Zugangs nimmt, vergleiche Werte für jede Reihe und Spalte und wenn es irgendwelche Unterschiede findet, die es das user.

Unfortunately berichtet, wird es langsamer und langsamer, während die Datenbank grow.

I es wirklich schnell wünschen und ich nicht was weiß zu tun. ich wenn, verwenden den Durchzug. Ich angebracht das code

Anthony

, das r allgemeine Funktion showDifferences (ByVal ds als Schnur, ByVal Co als System.Data.OleDb.OleDbConnection) als Boolean
z als Integer
schwaches v verdunkeln, p, sind vname als String

z = 0

showDifferences = False
'dort einige Tabellen und auswählen ein an time- sie sind im Tabelle tblRecords
'z.B. vergleichen Werte in der Tabelle [Meister] gegen die Tabelle [vmaster] im

für t als lang = 0 mit tblRecords.Rows.Count - 1
Application.DoEvents ()
„ausschließen dieses tables
wenn sectionsToEculude/> (tblRecords. Columns („recname" ) .ColumnName) = ausrichten fortsetzen dann For
wenn Ordnung/> (mainver). Länge = 0 Then
tstr = „VORWÄHLEN * VON [“ u. tblRecords.Rows (t) („recname“) u.“] „u. ds
Else
VORWÄHLEN tstr = „en * VON [“ u. mainver u. tblRecords.Rows (t) („recname“) u.“] „u. ds
Ende If

cm = neues OleDb.OleDbCommand
cm.CommandText = tstr
cm. Anschluss- = co
Dr. = cm.ExecuteReader
wenn dr.HasRows Then
während Dr. Read
Kriterien = ""
„Konstruieren die sql-Kriterien für jedes table
die Kriterien = Ordnung (mittler (ds, 1, ds. Länge - 1)) u.“ und „
für i als Int16 = 1 zu tblRecords.Rows (t) („nid“)
, wenn nicht IsDBNull (Dr. (tblRecords.Rows (t) („Identifikation“ u. (i - 1).ToString))) Then
, wenn nicht IsNumeric (Dr. (tblRecords.Rows (t) („Identifikation " u. (i - 1).ToString))) Then
Kriterien = Kriterien u. tblRecords.Rows (t) („Identifikation“ u. i - 1) u. „=““ u. Dr. (tblRecords.Rows (t) („Identifikation " u. (i - 1).ToString)) u.““ und „
Else
Kriterien = Kriterien u. tblRecords.Rows (t) („Identifikation“ u. i - 1) u. „=“ u. Dr. (tblRecords.Rows (t) („Identifikation " u. (i - 1).ToString)) u.“ und „
Ende If
Else
Kriterien = Kriterien u. tblRecords.Rows (t) („Identifikation“ u. i - 1) u.“ ist ungültige und „
Ende If
Next
Kriterien = mittler (Kriterien, 1, Kriterien. Länge - 5)

wenn Ordnung (mainver). Länge = 0 Then
tstr = „VORWÄHLEN * VON [v“ u. tblRecords.Rows (t) („recname“) u.“] „u. Kriterien u.“; „
Else
tstr = „VORWÄHLEN * VON [“ u. tblRecords.Rows (t) („recname“) u.“] „u. Kriterien u.“; „
Ende If

'jetzt habe ich die gesamte SQL-Aussage und die Kriterien, die it.

zum cmd = neues OleDb.OleDbCommand
cmd.CommandText = tstr
cmd angefügt. Anschluss = co

DDR = cmd.ExecuteReader
, wenn tblRecords.Rows (t) („recname“) = „Meister“ dann recordExists = falscher 'nicht in verification
'Leser [Dr.] ist Holdingwerte für Tabelle [Vorlagen]
'Leser [DDR] ist Holdingwerte für Tabelle [vmaster] zum Beispiel

wenn ddr.HasRows Then
recordExists = True
'Überprüfung duplicates
dup1.Clear ()
dup2.Clear ()
                        Während DDR. Read
'vergleichen Feldwert durch Feldwert
, 'wenn überhaupt, das [showDifferences] ist ist true
'Report
für f als Int16 = idNames.Count zu dr.FieldCount - 1
vname = dr.GetName (f)
unterschiedlich, wenn IsDBNull (Dr. (f)) Dann: V = nichts: Sonst: V = Ordnung (Dr. (f)) : Ende If
, wenn IsDBNull (DDR (vname)) Dann: p = nichts: Sonst: p = Ordnung (DDR (vname)) : Ende If
wenn nicht variablesToExclude (vname) Then
wenn v <> p Then
showDifferences = True
DDR. ()
schließen DDR = Nothing
cmd. ()
Ausgang Function
Ende If
Ende If
Next
Ende While

Else
abschaffen 'erklären Benutzer, wenn die Aufzeichnung nicht [vmaster] im
wenn tblRecords.Rows gefunden (t) („recname“) = „Meister“ dann recordExists = False
Ende If
DDR. ()
schließen DDR = Nothing
cmd. ()
Application.DoEvents ()
Ende While

abschaffen            If
Dr. beenden. ()
Dr. = Nothing
cm schließen. ()
Next
cmd abschaffen. ()
Ende Function
abschaffen

Antwort : Datenbankzugriffleistung erhöhen - Ms-access

OkayAaaaahh… das Problem ist, dass Sie das Datenelement… alles nicht zur Verfügung stellen müssen, das Sie sind zum procide der Name der Funktion tun.
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:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:


	
		
	
	
		
	
	
	
	
	
	
		
			
		
	


Weitere Lösungen  
 
programming4us programming4us