Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Процедура / 9 сообщений из 9, страница 1 из 1
05.03.2007, 11:54
    #34370833
нач
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
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

помогите пожалуйста разобраться, как можно изменить, чтобы сделать проверку, на все значения в колонке, которые написаны раньше....
...
Рейтинг: 0 / 0
06.03.2007, 10:32
    #34373442
нач
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
ответьте хоть кто нить плис.....
...
Рейтинг: 0 / 0
06.03.2007, 11:07
    #34373596
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
Что это за библиотека такая SKBS ?
...
Рейтинг: 0 / 0
06.03.2007, 11:09
    #34373608
нач
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
WorobjoffЧто это за библиотека такая SKBS ?
не знаю, это не я код писала, помогите мне написать свой
более подробно о задаче:
...
Рейтинг: 0 / 0
06.03.2007, 11:12
    #34373623
нач
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
входные параметры:
имя таблицы где хранятнятся данные (дата с и дата по)
значение вводимой пользователем даты

выходные:
если пересечение с вводимой датой нет, то ничего
иначе, сообщение об ошибке
...
Рейтинг: 0 / 0
06.03.2007, 14:36
    #34374626
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
"Optional bdate As Date" должно быть "Optional bdate As Variant", а " isDateNull(bdate)" нужно заменить на "IsMissing (bdate)". Дело в том, что необязательные аргументы проверяются на их наличие функцией IsMissing, которая работает правильно только с типом Variant и которая специально для этого и предназначена.
...
Рейтинг: 0 / 0
06.03.2007, 14:47
    #34374696
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
А насчет пересечения с датами: а нельзя разве через SELECT и ADO?
Возвращаясь же к Optional bdate As Date, если не надо проверять, передано bdate или нет, то можно "As Date", а если надо, то тогда "As Variant" - из-за IsMissing.
...
Рейтинг: 0 / 0
14.03.2007, 08:54
    #34389117
нач
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
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 - мой класс (в нем нет ошибки)
...
Рейтинг: 0 / 0
15.03.2007, 16:02
    #34393901
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура
Вот это вот:

Part.Name = "Params_Finite_History" And Field = "bdate" Or Field = "edate"

Там точно нигде круглые скобочки не нужны?

И зачем вы все параметры передаете ByRef? И NewValue у вас Variant...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Процедура / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]