Я имею Кодего [быть прикрепленным] принимает 2 таблицы одновременно от баз данных доступа, сравниваю значения для каждого рядка и колонка и если оно находит любые разницы, котор оно сообщает к user.
Unfortunately оно будет более медленным и более медленным по мере того как база данных grow.
I реально хочет его быстро а я не знаю сделать. если я использовать продевать нитку. Я прикреплял code
Anthony
общественные showDifferences функции, котор (ByVal ds как шнур, ByVal co как System.Data.OleDb.OleDbConnection) как Boolean затемняют z как Integer тусклый v, p, vname как String
showDifferences z = 0
= False 'там будет несколько таблиц и выбирает одно на time- они находится в tblRecords таблицы 'например сравнивает значения в таблице [оригинале] против тех в
таблицы [vmaster] для t как длиной = 0 к tblRecords.Rows.Count - 1 Application.DoEvents () «исключает эт tables если sectionsToEculude, то (tblRecords. Columns («recname" ) .ColumnName) = True после этого продолжает For если уравновешивание, то (mainver). Длина = 0 tstr Then = «ВЫБИРАЕТ * ОТ [» & tblRecords.Rows (t) («recname») &»] «& tstr ds Else = «ВЫБИРАЕТ * ОТ [» & mainver & tblRecords.Rows (t) («recname») &»] «& конец If
ds cm = новое OleDb.OleDbCommand cm.CommandText = tstr cm. Др. соединения = co = cm.ExecuteReader если dr.HasRows Then пока Др. Критеря по Read = "" стройка «критеря по sql для каждого критери по = уравновешивания table (средних (ds, 1, ds. Длина - 1)) &» и « для I как Int16 = 1 к tblRecords.Rows (t) («nid») если не IsDBNull, то (Др. (tblRecords.Rows (t) («удостоверение личности» & (I - 1).ToString))) Then если не IsNumeric, то (Др. (tblRecords.Rows (t) ( «удостоверения личности " & (I - 1).ToString))) Критеря по Then = критерии & tblRecords.Rows (t) («удостоверение личности» & I - 1) & «=»» & Др. (tblRecords.Rows (t) ( «удостоверения личности " & (I - 1).ToString)) &»» и «критеря по Else = критерии & tblRecords.Rows (t) («удостоверение личности» & I - 1) & «=» & Др. (tblRecords.Rows (t) («удостоверение личности " & (I - 1).ToString)) &» и «критеря по If Else конца = критерии & tblRecords.Rows (t) («удостоверение личности» & I - 1) &» будет критеря по нулевых и « конца If Next = средний (критерии, 1, критерии. Длина - 5)
если уравновешивание, то (mainver). Длина = 0 tstr Then = «ВЫБИРАЕТ * ОТ [v» & tblRecords.Rows (t) («recname») &»] «& критерии &»; «tstr Else = «ВЫБИРАЕТ * ОТ [» & tblRecords.Rows (t) («recname») &»] «& критерии &»; «конец If
'теперь я имею все заявление SQL и критерии приложенные к cmd it.
= новое OleDb.OleDbCommand cmd.CommandText = cmd tstr . Соединением = co
ГДР = cmd.ExecuteReader если tblRecords.Rows (t) («recname») = recordExists «оригинала» после этого = ложный 'не в читатель verification '[Др.] будет значениями удерживания для dup2.Clear duplicates dup1.Clear проверки 'читатель, то [ГДР] будут значения удерживания для
таблицы [vmaster] например если recordExists ddr.HasRows Then = True 'таблицы [мастерского] () () /> пока ГДР. Read 'сравнивает значение поля отчете о true значения поля 'если любое друг [showDifferences] будет 'для f как Int16 = idNames.Count к dr.FieldCount - vname 1 = , то dr.GetName (f) если IsDBNull, то (Др. (f)) После этого: v = ничего: Еще: v = уравновешивание (Др. (f)) : Конец If если IsDBNull, то (ГДР (vname)) После этого: p = ничего: Еще: p = уравновешивание (ГДР (vname)) : Конец If если не variablesToExclude (vname) Then если showDifferences p Then <> v = True ГДР. Закройте () ГДР = cmd Nothing . Размещайте () конец While
Else If Next конца If конца Function выхода 'скажите потребителю если показатель не в [vmaster] если tblRecords.Rows (t) («recname») = recordExists «оригинала» после этого = конец If ГДР False . Закройте () ГДР = cmd Nothing . Размещайте () конец While
Application.DoEvents () Др. If конца/>. Закройте () Др. = Nothing cm. Размещайте () cmd Next . Размещайте () конец Function
class=
|