Pergunta : aumentar o desempenho do acesso de base de dados - ms-access

Eu tenho um código [unido] que tome duas tabelas de cada vez das bases de dados de um acesso, comparo valores para cada fileira e coluna e se encontra quaisquer diferenças que relatar ao user.

Unfortunately torna-se mais lento e mais lento enquanto a base de dados grow.

I o quer realmente rapidamente e eu não sei o que fazer. se eu usam o rosqueamento. Eu uni o code

Anthony

que os showDifferences públicos da função (ByVal ds como a corda, ByVal co como System.Data.OleDb.OleDbConnection) como Boolean
escurecem z como Integer
v não ofuscante, p, o vname como String

showDifferences de z = de 0

= False
'lá é diversas tabelas e escolhe um em um time- eles está no tblRecords
da tabela 'por exemplo compara valores na tabela [mestre] de encontro àqueles no

da tabela [vmaster] para t como por muito tempo = 0 a tblRecords.Rows.Count - o
de 1
Application.DoEvents () “exclui este o tables
se sectionsToEculude (tblRecords. Columns (“recnameo " ) .ColumnName) = retifica continua então For
se guarnição (mainver). O comprimento = 0 tstr de Then
= “SELECIONA * DE [” & tblRecords.Rows (t) (“recname”) &”] “& o tstr do ds
Else
= “SELECIONA * DE [” & mainver & tblRecords.Rows (t) (“recname”) &”] “& extremidade If

do ds
cm = OleDb.OleDbCommand
cm.CommandText = tstr
cm. Dr. da conexão = do co
= cm.ExecuteReader
se dr.HasRows Then
quando Dr. Critérios de Read
= "" construção do
“os critérios do sql para cada os critérios = a guarnição do table
(meados de (ds, 1, ds. Comprimento - 1)) &” e “
para i como Int16 = 1 a tblRecords.Rows (t) (“nid”)
se não IsDBNull (Dr. (tblRecords.Rows (t) (“identificação” & (i - 1) .ToString))) Then
se não IsNumeric (Dr. (tblRecords.Rows (t) ( & (i - 1) .ToString) da “identificação ")) Critérios de Then
= critérios & tblRecords.Rows (t) ( & (i - 1) .ToString) da “identificação” & o i - 1) & “=”” & Dr. (tblRecords.Rows (t) (“identificação ") &”” e do “critérios
Else
= critérios & tblRecords.Rows (t) ( & (i - 1) .ToString) “da identificação” & o i - 1) & “=” & Dr. (tblRecords.Rows (t) (“identificação ") &” e “critérios de If
Else
do fim do
= critérios & tblRecords.Rows (t) (“identificação” & i - 1) &” são os critérios nulos e “do
do fim de If
Next
= meados de (critérios, 1, critérios. Comprimento - 5)

se guarnição (mainver). O comprimento = 0 tstr de Then
= “SELECIONA * DE [v” & tblRecords.Rows (t) (“recname”) &”] “& critérios &”; do “o tstr
Else
= “SELECIONA * DE [” & tblRecords.Rows (t) (“recname”) &”] “& critérios &”; do “extremidade If


'agora eu tenho a indicação de SQL inteira e os critérios adicionados ao cmd de it.

= OleDb.OleDbCommand
cmd.CommandText = cmd do tstr
. A conexão = o co

RDA = cmd.ExecuteReader
se tblRecords.Rows (t) (“recname”) = os recordExists do “mestre” então = 'não leitor falso do verification
'[Dr.] são valores da terra arrendada para o
do
dup2.Clear do duplicates
dup1.Clear da verificação do
'o leitor [RDA] são valores da terra arrendada para o

da tabela [vmaster] por exemplo se os recordExists de ddr.HasRows Then
= True
'da tabela () ()                        Quando RDA. Read
'compara o valor do campo pelo
do valor do campo 'eventualmente é que diferente [showDifferences] é o
do relatório do true
'para f como Int16 = idNames.Count a dr.FieldCount - vname de 1
= dr.GetName (f)
se IsDBNull (Dr. (f)) então: v = nada: Mais: v = guarnição (Dr. (f)): Extremidade If
se IsDBNull (RDA (vname)) Então: p = nada: Mais: p = guarnição (RDA (vname)) : variablesToExclude de If
do fim se não (vname) Then
se showDifferences do <> p Then
de v = True
RDA. Fechar () o
RDA = cmd de Nothing
. Dispr () a extremidade While

Else
de If
Next
do fim de If
do fim de Function
da saída do
'dizem a usuário se o registro não está encontrado no
[do vmaster] se tblRecords.Rows (t) (“recname”) = recordExists do “mestre” então = extremidade If
RDA de False
. Fechar () o
RDA = cmd de Nothing
. Dispr () a extremidade de While

do fim do
do
Application.DoEvents () Dr. de If
. Fechar () o Dr. do
= o Nothing
cm. Dispr () o cmd do
Next
. Dispr () a extremidade Function
do
class= do

Resposta : aumentar o desempenho do acesso de base de dados - ms-access

Aaaaahh… aprovado o problema é que você não tem que fornecer o elemento de dados… tudo que você faz é ao procide o nome da função.
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:

	
		
	
	
		
	
	
	
	
	
	
		
			
		
	


Outras soluções  
 
programming4us programming4us