Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2014, 12:08   #1
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию Запрос если дата пустая

Здравствуйте уважаемые программисты. Подскажите как записать условие запроса, выбрать записи где в столбце FDATEND пусто (FDATEND = {d '1900-01-00'}-не работает)
Код:
Sub ImportVFPdbf()
    'путь к папке с dbf-файлом(ами)
    Const dbPath = "C:\Users\Vladimir\Desktop"
    Dim sSQL As String, sConn As String
    Dim pSheet As Worksheet, pQTable As QueryTable
    'в скобках имя dbf-файла
    sSQL = "Select * From [База] WHERE FDATEND = {d '1900-01-00'}"
    Set pSheet = ActiveSheet
    sConn = "OLEDB;Provider=vfpoledb;Mode=1;Data Source=" & dbPath & ";Codepage=1251;Collating Sequence=russian;"
    Set pQTable = pSheet.QueryTables.Add(sConn, pSheet.Range("A1"), sSQL)
    pQTable.Refresh 'False
    pQTable.Delete
End Sub
Вложения
Тип файла: rar Запрос и База.rar (18.4 Кб, 12 просмотров)
agregator вне форума Ответить с цитированием
Старый 25.05.2014, 13:17   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

дык, это надо смотреть, что там хранится..

я бы, навскидку, сначала проверил варианты:
Код:
WHERE FDATEND IS NULL
Код:
WHERE EMPTY(FDATEND)
Код:
WHERE FDATEND = {}
Код:
WHERE FDATEND = { .  . }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2014, 13:38   #3
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Serge_Bliznykov, спасибо. Все коды срабатывают как надо, кроме
Код:
WHERE FDATEND IS NULL
он не выбрал ниодной строки
agregator вне форума Ответить с цитированием
Старый 25.05.2014, 14:26   #4
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Скажите пожалуйста как ещё можно написать в условии дату кроме например {d '2014-05-01'}.
И ещё как можно использовать в условии дату, которая записана в ячейке Range("C1").
(кроме dt = Format(Range("C1"), "yyyy-mm-dd") и {d '" & dt & "'})

Последний раз редактировалось agregator; 25.05.2014 в 14:49.
agregator вне форума Ответить с цитированием
Старый 25.05.2014, 14:45   #5
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Код:
sDate=format([c1].value,"DD-MM-YYYY")
sSQL = "Select * From [База] WHERE FDATEND = {d '" & sDate &"'}"
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 25.05.2014, 15:02   #6
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Почему WHERE FDATEND = { . . } работает, а WHERE FDATEND > {01.05.2014} не работает.

Последний раз редактировалось agregator; 25.05.2014 в 15:10.
agregator вне форума Ответить с цитированием
Старый 25.05.2014, 15:03   #7
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

а собственно чем такой вариант не устраивает?
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 25.05.2014, 15:30   #8
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Эту запись {d '2014-05-01'} я получил макрорекордером и я хочу узнать можно дату по другому записать или по другому не понимает. Может можно обойтись без Format(Range("C1"), "yyyy-mm-dd")
Видел #01.05.2014#, но WHERE FDATEND > #01.05.2014# не работает, может что то не так пишу или надо где нибудь в настройках изменить формат даты или ...

Последний раз редактировалось agregator; 25.05.2014 в 15:38.
agregator вне форума Ответить с цитированием
Старый 25.05.2014, 15:52   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
Select * From [База] WHERE FDATEND > {^2014-05-01}
Select * From [База] WHERE FDATEND > Date(2014,5,1)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.05.2014, 17:19   #10
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Спасибо всем за ответы.
agregator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
складывание значений в диаграмме если одинаковая дата pirat2k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 17.04.2014 20:05
Пустая ячейка не воспринимается как пустая SvetlanaF Microsoft Office Excel 3 24.02.2014 05:34
Формат дата и функция ЕСЛИ VladMar Microsoft Office Excel 20 21.02.2014 16:59
если дата m,d,y предшествует дате m1,d1,y1, иначе t=false. с++ Lers Помощь студентам 12 13.12.2012 23:58
Pl/sql Не обновлять поле если переменная пустая GenniY БД в Delphi 7 24.10.2010 13:28