for l2=l1 to l-1
Call aData.SetItem(L2, mst_list,M_list)
next
M_list = ""
l1 = l
end if
M = aData.GetItem (L, mst)
if M_list<>"" then
M_list = M_list + ", "
end if
M_list = M_list + M
next
if M_list<>"" then
for l2=l1 to RC
Call aData.SetItem(L2, mst_list,M_list)
next
end if
end sub
Option Explicit
Dim gSelAcc ' Запрос к БД
sub AccountRetrieve
Dim lRow, lRecSet, aEmpty(), lCon, lCmd
if not IsObject(gSelAcc) then
' Подключиться к БД Координатора, если еще не подключены
Set lCon = CreateObject("ADODB.Connection")
Call lCon.Open("Provider=MSDASQL;Dsn=Trade_TestSQL10;uid=mainadmin;pwd=main")
' Сформировать запрос
Set lCmd = CreateObject("ADODB.Command")
lCmd.CommandText = "select Cast(id as varchar), number2, state, AccountSum " + _
"from lsdbo.Account where datedoc = ?"
lCmd.CommandType = 1 'adCmdText
lCmd.Prepared = True
lCmd.Parameters.Append lCmd.CreateParameter("aDate", 7) 'adDate
lCmd.ActiveConnection = lCon
Set gSelAcc = lCmd
end if
' Выполнить запрос к БД по указанной дате
gSelAcc("aDate") = LsJob.GetVarValue("aDate")
Set lRecSet = gSelAcc.Execute
' Очистить переменные
LsJob.SetVarValue "aID", aEmpty
LsJob.SetVarValue "aNumber", aEmpty
LsJob.SetVarValue "aState", aEmpty
LsJob.SetVarValue "aSum", aEmpty
' Считать данные по всем счетам и занести их в массивы построчно
lRow = 0
Do While Not lRecSet.EOF
LsJob.SetVarValue "aID", lRecSet(0).Value
LsJob.SetVarValue "aNumber", lRecSet(1).Value
LsJob.SetVarValue "aState", lRecSet(2).Value
LsJob.SetVarValue "aSum", lRecSet(3).Value
lRow = lRow + 1
lRecSet.MoveNext
Loop
end sub
if not IsObject(gSelAcc) then
' Подключиться к БД, если еще не подключены
Set lCon = Application.GetADOConnect()
' Сформировать запрос
. . .
' Выполнить запрос к БД
gSelAcc("aDate") = LsJob.GetVarValue("aDate")
Set lRecSet = gSelAcc.Execute
' Считать целиком результат запроса
lRow = 0
Do While Not lRecSet.EOF
if lRow mod 100 = 0 then
' Увеличить размер массивов для хранения результата
ReDim Preserve aID((lRow / 100 + 1) * 100)
ReDim Preserve aNumber((lRow / 100 + 1) * 100)
ReDim Preserve aState((lRow / 100 + 1) * 100)
ReDim Preserve aSum((lRow / 100 + 1) * 100)
end if
aID(lRow) = lRecSet(0).Value
aNumber(lRow) = lRecSet(1).Value
aState(lRow) = lRecSet(2).Value
aSum(lRow) = lRecSet(3).Value
lRow = lRow + 1
lRecSet.MoveNext