Faccio [allegare] un codice che prende due tabelle alla volta dalle basi di dati di accesso, confronto i valori per ogni fila e colonna e se trova qualunque differenze che segnala al user.
Unfortunately diventa più lento e più lento mentre la base di dati grow.
I realmente lo vuole velocemente e non conosco che cosa fare. se usano la filettatura. Ho attaccato il code
Anthony
che gli showDifferences pubblici di funzione (ByVal ds come stringa, ByVal co come System.Data.OleDb.OleDbConnection) come Boolean oscurano la z come Integer v fioca, p, il vname come String
showDifferences di 0
= False 'là è parecchie tabelle e seleziona uno ad un time- è nel tblRecords della tabella 'per esempio compara i valori in tabella [padrone] a quelli nel
della tabella [vmaster] per la t come lungamente = 0 a tblRecords.Rows.Count - il di 1 Application.DoEvents () “esclude questo il tables se sectionsToEculude (tblRecords. Columns (“recname" il ) .ColumnName) = allinea allora continua For se la disposizione (mainver). La lunghezza = 0 tstr di Then = “SELEZIONA * A PARTIRE [„ & tblRecords.Rows (t) (“recname„) &„] “& il tstr del ds Else = “SELEZIONA * A PARTIRE [„ & mainver & tblRecords.Rows (t) (“recname„) &„] “& estremità If
del ds cm = nuovo OleDb.OleDbCommand cm.CommandText = tstr cm. Dott. del co = cm.ExecuteReader se dr.HasRows Then mentre Dott. Test di verifica di Read = "" costruzione del “i test di verifica di sql per ogni i test di verifica = la disposizione del table (metà di (ds, 1, ds. Lunghezza - 1)) &„ e “ per la i come Int16 = 1 a tblRecords.Rows (t) (“nid„) se non IsDBNull (Dott. (tblRecords.Rows (t) (“identificazione„ & (i - 1).ToString))) Then se non IsNumeric (Dott. (tblRecords.Rows (t) ( “di identificazione " & (i - 1).ToString))) Test di verifica di Then = test di verifica & tblRecords.Rows (t) (“identificazione„ & i - 1) & “=„„ & Dott. (tblRecords.Rows (t) ( “di identificazione " & (i - 1).ToString)) &„„ e “test di verifica del Else = test di verifica & tblRecords.Rows (t) (“identificazione„ & i - 1) & “=„ & Dott. (tblRecords.Rows (t) (“identificazione " & (i - 1).ToString)) &„ e “test di verifica di If Else di conclusione del = test di verifica & tblRecords.Rows (t) (“identificazione„ & i - 1) &„ è test di verifica del di conclusione di If Next = metà di (test di verifica, 1, test di verifica. Lunghezza - 5)
se disposizione (mainver). La lunghezza = 0 tstr di Then = “SELEZIONA * A PARTIRE [v„ & tblRecords.Rows (t) (“recname„) &„] “& test di verifica &„; “il tstr del Else = “SELEZIONA * A PARTIRE [„ & tblRecords.Rows (t) (“recname„) &„] “& test di verifica &„; “estremità If
del 'ora ho l'intera dichiarazione di SQL ed i test di verifica allegati al cmd di it.
= nuovo OleDb.OleDbCommand cmd.CommandText = cmd del tstr . Il collegamento = il co
la RDT = cmd.ExecuteReader se tblRecords.Rows (t) (“recname„) = i recordExists “del padrone„ allora = 'non il lettore falso del verification '[Dott.] è i valori della tenuta per il del dup2.Clear del duplicates dup1.Clear del controllo del 'lettore [RDT] è i valori della tenuta per il
della tabella [vmaster] per esempio se recordExists di ddr.HasRows Then = True 'della tabella () () Mentre la RDT. Read 'confronta il valore del campo dal di rapporto del true del di valore del campo 'se c'è ne è differente [showDifferences] è 'per la f come Int16 = idNames.Count a dr.FieldCount - vname di 1 = dr.GetName (f) se IsDBNull (Dott. (f)) allora: v = niente: Altrimenti: v = disposizione (Dott. (f)): Estremità If se IsDBNull (RDT (vname)) Allora: p = niente: Altrimenti: p = disposizione (RDT (vname)) : variablesToExclude di If di conclusione se non (vname) Then se showDifferences del <> p Then di v = True RDT. Chiudere () il la RDT = cmd di Nothing . Disporre () l'estremità While
Else di If Next di conclusione di If di conclusione di Function dell'uscita del 'dicono ad utente se l'annotazione non è trovata nel [del vmaster] se tblRecords.Rows (t) (“recname„) = recordExists “del padrone„ allora = estremità If RDT di False . Chiudere () il la RDT = cmd di Nothing . Disporre () l'estremità di While
di conclusione del del Application.DoEvents () Dott. di If . Chiudere () il Dott. del = Nothing cm. Disporre () il cmd del Next . Disporre () l'estremità Function del
class= del
|