Всем привет! Господа, помогите с написанием SQL запроса. Беру данные из файла с расширением .dbf В нем мне нужны два столбца - summa и index. В столбце индекс данные хранятся в формате хх.х хххххххх, где: хх - номер счета .х - субсчет хххххххх - дата в формате гггг.мм.дд. А теперь, непосредственно перейду к сути. Мне нужна сумма по столбцу summa, при том, что номер счета равен 50, а дата меньше даты, указанной в ячейке Р1.
Написал следующий запрос: Set дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16) Set rs = .Execute("SELECT SUM (summa), FROM znach WHERE MID(operind1, 1, 2) = '50' AND CDATE(MID(operind1, 8, 4) + '-' + MID(operind1, 12, 2) + '-' + MID(operind1, 14, 2)) " < " дата ")
Дальше, соответственно вывод. Однако, он не работает - точнее, ничего не выводит. Что я делаю не так? В поле Р1 значения находятся в формате "дата".
Буду признателен! [moder]Нужны примеры файлов[/moder]
Всем привет! Господа, помогите с написанием SQL запроса. Беру данные из файла с расширением .dbf В нем мне нужны два столбца - summa и index. В столбце индекс данные хранятся в формате хх.х хххххххх, где: хх - номер счета .х - субсчет хххххххх - дата в формате гггг.мм.дд. А теперь, непосредственно перейду к сути. Мне нужна сумма по столбцу summa, при том, что номер счета равен 50, а дата меньше даты, указанной в ячейке Р1.
Написал следующий запрос: Set дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16) Set rs = .Execute("SELECT SUM (summa), FROM znach WHERE MID(operind1, 1, 2) = '50' AND CDATE(MID(operind1, 8, 4) + '-' + MID(operind1, 12, 2) + '-' + MID(operind1, 14, 2)) " < " дата ")
Дальше, соответственно вывод. Однако, он не работает - точнее, ничего не выводит. Что я делаю не так? В поле Р1 значения находятся в формате "дата".
Буду признателен! [moder]Нужны примеры файлов[/moder]Black_Storm
дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16) 'без Set Set rs = .Execute("SELECT SUM(summa) FROM znach WHERE MID(operind1, 1, 2) = '50' AND MID(operind1, 6, 8) < '" & Format(дата, "yyyymmdd") & "'")
[/vba]
Ну попробуйте как-то так: [vba]
Код
дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16) 'без Set Set rs = .Execute("SELECT SUM(summa) FROM znach WHERE MID(operind1, 1, 2) = '50' AND MID(operind1, 6, 8) < '" & Format(дата, "yyyymmdd") & "'")
Ни в жисть не поверю, что и по-моему (более короткому и простому) не получилось! Или не проверяли?
P.S. И не надо "Set дата" делать. Set - это для объектных переменных, не для простых. Для простых, если уж так хочется, напишите Let. А так вообще - просто дата, без всяких дополнительных слов.
P.P.S. И кстати, почему с 8-го символа начинаете год извлекать? В шаблоне "хх.х хххххххх" первая цифра года получается 6-я... Или чего-то не договорили нам?
Ни в жисть не поверю, что и по-моему (более короткому и простому) не получилось! Или не проверяли?
P.S. И не надо "Set дата" делать. Set - это для объектных переменных, не для простых. Для простых, если уж так хочется, напишите Let. А так вообще - просто дата, без всяких дополнительных слов.
P.P.S. И кстати, почему с 8-го символа начинаете год извлекать? В шаблоне "хх.х хххххххх" первая цифра года получается 6-я... Или чего-то не договорили нам?Gustav
Gustav, там еще два пробела, как оказалось. Set убрал - случайно попало снова. Ваш метод проверял - не сработал. Скорее всего из-за того, что не посмотрел с какого символа начинается извлечение. Сейчас попробую еще раз.
Gustav, там еще два пробела, как оказалось. Set убрал - случайно попало снова. Ваш метод проверял - не сработал. Скорее всего из-за того, что не посмотрел с какого символа начинается извлечение. Сейчас попробую еще раз. Black_Storm
Сообщение отредактировал Black_Storm - Понедельник, 12.01.2015, 15:48