Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Диапазон между двумя датами с помощью именуемой ячейки
 
Доброй ночи, уважаемые.
Есть макрос, который осуществляет импорт данных из нашей Baza  в таблицу Excel 2003  с помощью SQL
Сейчас за основу извлечения данных берется одна дата: "dd" (D2)
Помогите пожалуйста в макросах прописать еще одну дату: "dv" (D3) чтобы данные вытягивались с учетом дат (D2) и (D3) и включали количество дней между ними.
Заранее бесконечно благодарна Вам за помощь. На Вас последняя надежда.
 
Проект VBA запаролен.
 
Простите и извините пожалуйста.
Данный файл без пароля.
Спасибо заранее огромное.
Изменено: Marija - 23 Мар 2015 20:16:09
 
На форумах нашла, что наверное нужно использовать в коде вместо :
Код
Sub makros(dd As Variant)
Dim strSQL As String
Dim Rs As ADODB.Recordset
Call sClear
If IsDate(dd) Then
    strSQL = "select qwe, wer, ert, rty from adsfw.asfws where rty in ('01')and ert=" & DCIshort(dd)
    Set Rs = fRSBaza(strSQL, strConnBaza)
    Call Range("StartRng").CopyFromRecordset(Rs)
End If
End Sub

Такое:
Код
Sub makros(dd As Variant,dv As Variant)   'ТУТ Я ИЗМЕНЕНИЛА ПО ПРИМЕРАХ ФОРУМА
Dim strSQL As String
Dim Rs As ADODB.Recordset
Call sClear
If IsDate(dd) Then                         'ТУТ НАВЕРНОЕ НАДО ГДЕ ТО ДОБАВИТЬ dv
    strSQL = "select qwe, wer, ert, rty from adsfw.asfws where rty in ('01')and ert between " & DCIshort(dd) & " and " & DCIshort(dv)  'ТУТ ОШИБКА !!!!! ГДЕ ТО...
    Set Rs = fRSBaza(strSQL, strConnBaza)
    Call Range("StartRng").CopyFromRecordset(Rs)
End If
End Sub
И тут незнаю как сделать:
Код
Private Sub btn1_Click()
If Len(Sheets(1).Range("dd").Value) > 0 Then    'ТУТ НАДО ДОБАВИТЬ УСЛОВИЕ ПРИ dv
    Call makros(Sheets(1).Range("dd").Value)    'И ТУТ НАВЕРНОЕ...
End If
End Sub
Помогите исправить пожалуйста.
Изменено: Marija - 21 Мар 2015 22:54:05
 
Не спец в ADODB и SQL, и не уверен, что формат даты из функции DCIshort правильный - судя по всему, у вас там даты хранятся в формате YYMMDD, т.е. это по факту не даты, а числа. Не знаю, имеет ли это значение.
Попробуйте так:
Код
Sub makros(dd As Variant,dv As Variant)
Dim strSQL As String
Dim Rs As ADODB.Recordset
Call sClear
If IsDate(dd) And IsDate(dv) and dv>=dd Then
strSQL = "select qwe, wer, ert, rty from adsfw.asfws where rty in ('01')and ert>=" & DCIshort(dd) & " and ert<=" & DCIshort(dv)
' или strSQL = "select qwe, wer, ert, rty from adsfw.asfws where rty in ('01')and ert between " & DCIshort(dd) & " and " & DCIshort(dv)
    Set Rs = fRSBaza(strSQL, strConnBaza)
    Call Range("StartRng").CopyFromRecordset(Rs)
End If
End Sub

Private Sub btn1_Click()
If Len(Sheets(1).Range("dd").Value) > 0 And Len(Sheets(1).Range("dv").Value) > 0 Then
    Call makros(Sheets(1).Range("dd").Value, Sheets(1).Range("dv").Value)
End If
End Sub
F1 творит чудеса
Страницы: 1
Читают тему (гостей: 1)