2015-09-04 2 views
1

При добавлении нового DataRow, на из пунктов получает случайное число от 100000000 до 999999999.Перебор базы данных с генерации случайных чисел

мне нужно Переберите данных, когда это число создается, чтобы убедиться, что ISN Уже там. (да, для числа это большие шансы, что он никогда не будет там). Во избежание того, что он есть, мне нужно сгенерировать новый номер и снова перебрать данные.

Мне нужно создать случайное число, пока случайное число не будет соответствовать одному в базе данных. Я просто не могу понять, что сегодня логично.

Вот единственное, что я мог придумать, и я не уверен, что это сработает.

Dim TaskID As Integer 
Do 
    intMergeID = Merge.RandomNumber() 

    For Each GetTask As DataRow In MasterDBDataSet.DBTasks 
     TaskID = GetTask.Item("MergeID") 
     If TaskID = intMergeID Then 
      Exit For 
     End If 
    Next 
Loop Until intMergeID <> TaskID 
+0

Я на самом деле думаю, что это сработает. Это сложно проверить, но он работает, когда ничего не найдено. – xRuhRohx

+0

Вы можете использовать 'Dim dr как DataRow = MasterDBDataSet.DBTasks.Select (" MergeID = "+ intMergeID.ToString) (0)', а затем 'If dr Is Nothing' нет числа в datatable. – nelek

ответ

0

Кажется, это довольно простой бит логики.

Вам нужно:

  1. Сформировать число
  2. Проверить значение в базе данных
  3. Если он существует вернуться к 1
  4. Если он не существует, то добавить его

Рекурсивная функция может сделать это довольно хорошо. Некоторый псевдокод для функции:

Function CheckDatabase(ByVal number As Long) as Bool 
    Run database query 
    if(queryResult returns true) 
     generate new number 
     CheckDatabase(newNumber) 
    Else 
     Add to database 
End Function 
Смежные вопросы