Формирование имени поля документа

  • Автор темы Автор темы Kizarek86
  • Дата начала Дата начала
<!--QuoteBegin-kizarek+23:01:2008, 13:10 -->
<span class="vbquote">(kizarek @ 23:01:2008, 13:10 )</span><!--QuoteEBegin-->как на скрипте программно стек почистить?))
[snapback]94705" rel="nofollow" target="_blank[/snapback]​
[/quote]
ну вот сюда то лезть не стоит

Кидайте весь код, потому что у Вас может быть всё что угодно , т.к. строки
Dim Detal(40,20,2) As String 'собраные из док. за месяц данные
Dim VybDet(800,2) As String 'вспомогательный массив

есть правильными
 
Код:
 	Dim db As NotesDatabase
Dim doc, docST As NotesDocument
Dim collection As NotesDocumentCollection	
Dim uidocST As NotesUIDocument
Dim session As New NotesSession
Set db = session.CurrentDatabase
Dim workspaceST As New NotesUIWorkspace 
Set uidocST = workspaceST.CurrentDocument
Set docST = uidocST.Document 
uidocST.Refresh
Dim Detal(40,20,2) As String 'собраные из док. за месяц данные
Dim VybDet(800,2) As String 'вспомогательный массив
'*** Коллекция документов за текущий месяц
Set collection = db.Search({Form = "Form_KC_SV1" &	
(@Matches(@Text(@Month(KC_SV1_Date));"} + Cstr(Month(docST.KC_SV1_Date(0))) + {")) & 
(@ToNumber(@Day(KC_SV1_Date)) < @ToNumber( "} + Day(docST.KC_SV1_Date(0)) + {" )) }, Nothing, 0)	
n = collection.Count
'*** Перебор коллекции с бор данных в массив Detal
NumDoc=1
If n<=40 Then
While NumDoc <= n
Set doc = collection.GetNthDocument(NumDoc)
Print "Обработка информации в документе:" + NumDoc " из:" +n
'* Сбор всех деталей, принятой и забракованной продукции по ним
'* 0-Название детали,1-принято,2-Брак
For i = 1 To 20
Names1 = "KC_SV1_Det_"	+ Cstr(i) 
Names2 = "KC_SV1_1_"		+ Cstr(i)
Names3 = "KC_SV1_3_"		+ Cstr(i)
Detal(NumDoc,i,0) =doc.GetItemValue(Names1)(0) 'заполнение массива Деталями
Detal(NumDoc,i,1) =Cstr(doc.GetItemValue(Names2)(0)) 'заполнение массива приными дет.
Detal(NumDoc,i,2) =Cstr(doc.GetItemValue(Names3)(0)) 'заполнение массива брак дет.
Next
NumDoc=NumDoc+1
Wend

'*** Обработка собраной информации, в массив VybDet, помещаем инф.о введённых дет.
z=1
For i=1 To 40
If Not (Detal(i,1,0)="") Then
For j=1 To 20
If Not (Detal(i,i,0)="") Then
VybDet(z,0)=Detal(i,j,0)
VybDet(z,1)=Detal(i,j,1)
VybDet(z,2)=Detal(i,j,2)
z=z+1
End If
Next
End If
Next

'Подсчёт принятой прод. и брака и вывод на форму
For m = 1 To 20
Tmp1=0
Tmp2=0
Name1 = "KC_SV1_Det_"	+ Cstr(m)'деталь
Name2= "KC_SV1_2_" + Cstr(m) 'принято за месяц
Name3= "KC_SV1_4_" + Cstr(m) 'брак за месяц
Name4= "KC_SV1_1_" + Cstr(m) 'принято текущий документ
Name5= "KC_SV1_3_" + Cstr(m) 'брак текущий документ
For i=1 To z
If Not (VybDet(i,0)="") Then
If (VybDet(i,0) = docST.GetItemValue(Name1)(0)) Then
Tmp1=Tmp1+Cint(VybDet(i,1))	
Tmp2=Tmp2+Cint(VybDet(i,2))
End If
End If
Next
Call docST.ReplaceItemValue(Name2,Cint(Tmp1)+Cint(docST.GetItemValue(Name4)(0)))'вывод Принятой
Call docST.ReplaceItemValue(Name3,Cint(Tmp2)+Cint(docST.GetItemValue(Name5)(0)))'вывод брака
Next	
Else
Messagebox("Чёта многовато в это месяце ежедневных сводок, больше 40!Непорядок!правим ошибки, потом рботаем дальше!")
End If
uidocST.Refresh
Дебагер тормозит именно на инициализиции. повторюсь, шас код отработал нормально.пока опять добиться ошибки не получилось.

а не, вот опять вылезла ошибочка)
 
Для: kizarek
скрин в студию, у тебя там негде в глобальных переменнах одинаковых нет ?
 
Продвину под шумок идею: глобальные переменные - гогно.
 
Для: kizarek
Хелп говорит:
One of the following conditions could have caused this error:
You wrote a recursive function that never reaches its base case, and therefore never terminates itself.
Rewrite the function so that it reaches its base case.
You declared too many local variables in a procedure.
Remove a sufficient number of variable declarations in the procedure to free up stack space by rewriting it as several smaller procedures. If you are using fixed arrays, declare them as dynamic.
 
Откуда этот код вызывается? Не из события формы-ли? Тогда у вас бесконечная рекурсия
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab