Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите пожалуйста
 
 автор: Алексей   (05.06.2008 в 09:21)   личное сообщение
 
 

Доброго времени суток, подскажите пожалуйста есть ли способо решить задачу а то голову сломал уже
Есть таблица с двумя полями "счетчик" и "время" , время идет так
13.05.2008 12:25:50
13.05.2008 12:27:51
13.05.2008 12:29:50
13.05.2008 12:29:51
13.05.2008 12:31:53
13.05.2008 12:33:53
и так несколько месяцев , время записей почти рандомное .. стоит задача ввод к примеру даты
и времени допустим 13.05.2008 12:30 .... каким образом можно (если вообще можно ) выделить запись максимально из всех близкую к этой дате и времени ? помогите пожалуйста а то вообще никак не могу ...

  Ответить  
 
 автор: osmor   (05.06.2008 в 09:40)   личное сообщение
 
 

с помощью запроса:

PARAMETERS [Введите Дату и время] DateTime;
SELECT TOP 1 id, Дата
From таблица
ORDER BY Abs([Дата]-[Введите Дату и время]);

Этот запрос вернет одну запись с нужным вам кодом и временем.
еще можно с Dmin поиграться, то все равно запрос нужен

  Ответить  
 
 автор: Алексей   (05.06.2008 в 13:54)   личное сообщение
 
 

Спасибо за ответ, но я не сильно рублю еще вба (( ... Я делал через цикл который бежит и проверяет условие.. но он работает не так как хотелось бы... не можете глянуть одним глазком на него, пожалуйста ...

  Ответить  
 
 автор: Алексей   (05.06.2008 в 13:56)   личное сообщение
 
 

Sub вводдат ()
Dim d, v, dv As String
Dim dd As Date
Dim rst As Recordset
Dim q As Variant
Set rst = CurrentDb.OpenRecordset("Архив")

d = InputBox("Введите дату", "Дата")
v = InputBox("Введите время", "Время")
dv = d + " " & v
dd = CDate(dv)
temp = MsgBox(dv, vbOKOnly, "Правильность склеивания")
rst.Move 1

Do Until rst.EOF
pp = Abs(dd - rst.Fields(1))
rst.MovePrevious
gg = Abs(dd - rst.Fields(1))
rst.MoveNext
If pp < gg Then aa = rst.Fields(1)
rst.MoveNext
Loop


temp = MsgBox(aa, vbOKOnly, "aa")
End Sub

  Ответить  
 
 автор: osmor   (05.06.2008 в 15:15)   личное сообщение
13 Кб.
 
 

как один из возможных вариантов

  Ответить  
 
 автор: Алексей   (05.06.2008 в 17:04)   личное сообщение
 
 

Спасибо большое все работает теперь буду разбираться как ... можно еще попросить (извняюсь за наглость - очень надо .. ) как можно в этом куске кода
If rst.RecordCount <> 0 Then
MsgBox "ближайшая дата = " & rst![dt] & ", ID записи = " & rst![id]
вставить что нибудть чтобы по выполнению кода открывалась эта таблица с выделенной найденно записью ? спасибо еще раз...

  Ответить  
 
 автор: osmor   (05.06.2008 в 17:48)   личное сообщение
15 Кб.
 
 

с таблицей возни много. Список пойдет?

  Ответить  
 
 автор: Алексей   (06.06.2008 в 16:59)   личное сообщение
 
 

Спасибо Вам большое .. все получилось

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList