Почему эти утверждения отличаются?
Я счел, что лучше всего перейти от переменных string a date для проверки дубликатов к простой проверке строка за строкой, используя информацию, которая была в datarow.
Однако я попытался преобразовать переменные моего класса только в источник datarow.
вот исходный код:
If newindividual.First_name = matchedfirstname And newindividual.Last_name = matchedlastname _ And newindividual.Date_of_birth = matchedDOB Then matched = True GoTo found ElseIf newindividual.First_name = matchedfirstname And newindividual.Last_name = matchedlastname _ And newindividual.Date_of_death = matchedDOD And newindividual.Date_of_birth = matchedDOB Then matched = True GoTo found ElseIf newindividual.First_name = matchedfirstname And newindividual.Last_name = matchedlastname _ And newindividual.Date_of_death = matchedDOD Then matched = True GoTo found End If
Вот во что я попытался превратить эту информацию
If StrConv(Trim(temptable.Rows(I)("First_name").ToString), vbProperCase) = StrConv(Trim(dt.Rows(I2)("First_name").ToString), vbProperCase) And StrConv(Trim(temptable.Rows(I)("Last_name").ToString), vbProperCase) = StrConv(Trim(dt.Rows(I2)("Last_name").ToString), vbProperCase) Then If temptable.Columns.Contains("Date_of_birth") And Not IsDBNull(temptable.Rows(I)("Date_of_birth")) And temptable.Columns.Contains("Date_of_death") And Not IsDBNull(temptable.Rows(I)("Date_of_death")) Then If Not IsDBNull(dt.Rows(I2)("Date_of_birth")) And Not IsDBNull(dt.Rows(I2)("Date_of_death")) Then If CDate(Trim(temptable.Rows(I)("Date_of_birth").ToString)) = CDate(Trim(dt.Rows(I2)("Date_of_birth").ToString)) And CDate(Trim(temptable.Rows(I)("Date_of_death").ToString)) = CDate(Trim(dt.Rows(I2)("Date_of_death"))) Then matched = True GoTo found End If End If ElseIf temptable.Columns.Contains("Date_of_birth") And Not IsDBNull(temptable.Rows(I)("Date_of_birth")) Then If Not IsDBNull(dt.Rows(I2)("Date_of_birth")) Then If CDate(Trim(temptable.Rows(I)("Date_of_birth").ToString)) = CDate(Trim(dt.Rows(I2)("Date_of_birth").ToString)) Then matched = True GoTo found End If End If ElseIf temptable.Columns.Contains("Date_of_death") And Not IsDBNull(temptable.Rows(I)("Date_of_death")) Then If Not IsDBNull(dt.Rows(I2)("Date_of_death")) Then If CDate(Trim(temptable.Rows(I)("Date_of_death").ToString)) = CDate(Trim(dt.Rows(I2)("Date_of_death").ToString)) Then matched = True GoTo found End If End If End If End If
Когда я запускаю новый код во вложенном цикле, в цикле 2 появляется больше итераций, однако исходный код имеет правильное количество итераций. Разве это не одно и то же?
Что я уже пробовал:
Я попытался изменить утверждения if вокруг, чтобы увидеть, будет ли выход другим.