Итак, у меня есть приложение Access, которое имеет такую функцию;
Function PutNum() As Boolean
On Error GoTo Err_PutNum
Dim t_ct As Integer, rst As ADODB.Recordset, Str As String
Set rst = New ADODB.Recordset
rst.Open "qrySelectUpdatePrior", CurrentProject.Connection, _
adOpenStatic, adLockOptimistic, adCmdTableDirect
t_ct = 49
With rst
Str = .Fields("ssn")
Do While Not .EOF
If Str = .Fields("ssn") Then
t_ct = t_ct + 1
.Fields("PRIOR") = "0" & t_ct
Else
t_ct = 50
.Fields("PRIOR") = "0" & t_ct
Str = .Fields("ssn")
End If
.MoveNext
Loop
.Close
End With
Set rst = Nothing
PutNum = True
Exit_PutNum:
Exit Function
Err_PutNum:
MsgBox Error$
PutNum = False
Resume Exit_PutNum
End Function
Запрос для набора записей выглядит следующим образом;
SELECT DRS_FILE.SSN, DRS_FILE.PRIOR
FROM DRS_FILE
ORDER BY DRS_FILE.SSN, DRS_FILE.P1, DRS_FILE.P2;
Цель этой функции - получить набор записей, проанализировать номер социального страхования, чтобы определить, сколько раз номер социального страхования появляется в наборе записей, а затем обновить поле набора записей «ПРИОР».с результатами.Последовательность следующая:
1.При первом определении номера социального страхования поле «ПРИОР» обновляется с 050
2.Во второй раз, когда идентифицируется номер социального страхования, поле «ПРИОР» обновляется с 051
3.В третий раз, когда идентифицируется номер социального страхования, поле «ПРИОР» обновляется с 052
4.Etc…
Как вы можете видеть, есть образец.Теперь передо мной стоит задача воссоздать эту функциональность, но я не знаю, каков наилучший вариант, если я должен выполнить эту задачу только в SQL Server (хранимые процедуры и функции) или использовать C # в сочетании с SQL Server длязавершить эту задачу.Наборы записей составят более 100 тысяч записей, и я боюсь обрабатывать так много записей на стороне приложения, что передача данных между внешним интерфейсом приложения и SQL-сервером кажется мне очень сложной, но я могу ошибаться.Моя цель - не рисковать производительностью.
Если у кого-то есть какие-либо идеи о том, как выполнить эту задачу, пожалуйста, поделитесь, поскольку я уже некоторое время ломал голову.Если у вас есть пример кода для обмена, это также будет полезно.