|
|
|
Процедура
|
|||
|---|---|---|---|
|
#18+
Sub UpdateHistoryDate(ByVal Part As SKBS.SKRecordset, ByVal Field As String, _ BOInt As IBSObjectInternal, Optional bdate As Date) Dim History As SKRecordset Dim i As Integer, n As Integer Dim FieldName As String, HistoryName As String Dim HistoryFields() As String Dim historyfield Dim SignificantFields() As String Dim calcPeriod As String ' Находим часть-историю для части из параметра и проверяем, ' что через параметр Field подано поле, которое исторически изменяется If Part(Field).Value = Part(Field).OldValue Then Exit Sub HistoryName = GetPartAttribute(BOInt, Part.Name, "HistoryPart") HistoryFields = StringToArray(GetPartAttribute(BOInt, Part.Name, "HistoryFields"), ",") SignificantFields = StringToArray(GetPartAttribute(BOInt, Part.Name, "SignificantFields"), ",") calcPeriod = GetPartAttribute(BOInt, Part.Name, "CalcPeriod") checkCalcPeriod Part, Field, HistoryName, calcPeriod If HistoryName <> "" And ExistsIn(Field, HistoryFields) <> -1 Then Set History = Part.BSDataObject(HistoryName) n = UBound(SignificantFields) ReDim Preserve SignificantFields(n + UBound(HistoryFields) - 1) i = 1 For Each historyfield In HistoryFields If historyfield <> Field And historyfield <> "" Then SignificantFields(n + i) = historyfield i = i + 1 End If Next If isDateNull(bdate) Then UpdateOldRecords Part, History, Field, SignificantFields ' Добавляем в историю запись и инициализируем поле BDate History.AddNew History("BDate").Value = BusinessServer.Option("BDate") Else UpdateOldRecords Part, History, Field, SignificantFields, bdate ' Добавляем в историю запись и инициализируем поле BDate History.AddNew History("BDate").Value = bdate End If End If End Sub помогите пожалуйста разобраться, как можно изменить, чтобы сделать проверку, на все значения в колонке, которые написаны раньше.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 11:54 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
ответьте хоть кто нить плис..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 10:32 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
Что это за библиотека такая SKBS ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 11:07 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
WorobjoffЧто это за библиотека такая SKBS ? не знаю, это не я код писала, помогите мне написать свой более подробно о задаче: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 11:09 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
входные параметры: имя таблицы где хранятнятся данные (дата с и дата по) значение вводимой пользователем даты выходные: если пересечение с вводимой датой нет, то ничего иначе, сообщение об ошибке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 11:12 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
"Optional bdate As Date" должно быть "Optional bdate As Variant", а " isDateNull(bdate)" нужно заменить на "IsMissing (bdate)". Дело в том, что необязательные аргументы проверяются на их наличие функцией IsMissing, которая работает правильно только с типом Variant и которая специально для этого и предназначена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 14:36 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
А насчет пересечения с датами: а нельзя разве через SELECT и ADO? Возвращаясь же к Optional bdate As Date, если не надо проверять, передано bdate или нет, то можно "As Date", а если надо, то тогда "As Variant" - из-за IsMissing. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 14:47 |
|
||
|
Процедура
|
|||
|---|---|---|---|
|
#18+
Private Sub CheckValueForDate(Part As SKBS.SKRecordset, Field As String, NewValue) Dim rs As SKBS.SKRecordset, rs1 As SKBS.SKRecordset Dim ID As Long, bdate As Date, edate As Date, id_param As Long ' определяем часть History If Part.Name = "Params_Finite_History" And Field = "bdate" Or Field = "edate" Then Set rs = Part.Clone(True, True) 'присваиваем новое значение в клон mBOInt.NoProcessEvents = True rs(Field).Value = NewValue mBOInt.NoProcessEvents = False rs.MoveFirst Do While Not rs.EOF ID = Nz(rs("ID").Value, 0) id_param = rs("id_param").Value bdate = rs("bdate").Value edate = Nz(rs("edate").Value, MaxDate) Set rs1 = Part.BSDataObject(Part.Name) rs1.SetFilter "id_param=" & Str(id_param) rs1.MoveFirst Do While Not rs1.EOF If ID <> rs1("ID").Value Then If IsDateCross(bdate, edate, rs1("bdate").Value, Nz(rs1("edate").Value, MaxDate)) Then MsgBox "Обнаружено пересечение диапазонов дат" Exit Sub End If End If rs1.MoveNext Loop Set rs1 = Nothing rs.MoveNext Loop Set rs = Nothing End If End Sub вот эта процедура, НО теперь проблема в том что она как то странно срабатывает, не всегда.... помогите кто может..... P.S. SKBS.SKRecordset - мой класс (в нем нет ошибки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 08:54 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=242&tid=2164346]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 365ms |

| 0 / 0 |
