Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

TrendWorX VBA (вычисление значений для точек графика)

 Ответить Ответить Страница  <12
Автор
Сообщение
MuadDib Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Июль 2006
Online Status: Offline
Публикации: 304
Свойства публикации Свойства публикации   Ответить, цитируя автора - MuadDib Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: TrendWorX VBA (вычисление значений для точек графика)
    Опубликовано: 18 Февраль 2008 10:52
Первоначально опубликовано DubAlex


У меня сконфигурировано так, что таблица одна



В таком случае, при накоплении данных за установленный период, таблица будет удалена, и данные начнут копиться с нуля.
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как.
Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Февраль 2008 12:03

сейчас пытаюсь поставить фильтр в запросе, но возникла трудность при работе с датами.

Фильтр примерно следующий:

FROM seria1 WHERE ((seria1.Signal_Index = 13) OR (seria1.Sample_TDate_20 BETWEEN  06.02.2008 9:51:52 AND 06.02.2008 9:54:52))

Не работает, говорит пропущен оператор. Пробовал по-разному:

1) WHERE ((seria1.Signal_Index = 13) OR (seria1.Sample_TDate_20 >  06.02.2008 9:51:52 AND seria1.Sample_TDate_20 < 06.02.2008 9:54:52))

2) WHERE ((seria1.Signal_Index = 13) OR (seria1.Sample_TDate_20 >  #06.02.2008 9:51:52# AND seria1.Sample_TDate_20 < #06.02.2008 9:54:52#))

3)WHERE ((seria1.Signal_Index = 13) OR (seria1.Sample_TDate_20 >  '06.02.2008 9:51:52' AND seria1.Sample_TDate_20 < '06.02.2008 9:54:52'))

Но все равно неправильно.

Кто-нибудь сталкивался с датами в SQL-запросах? В чем ошибка?

З.Ы. Даты, конечно не постоянные, вместо них будут переменные.

Наверх
Kanzi Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Сентябрь 2006
Online Status: Offline
Публикации: 125
Свойства публикации Свойства публикации   Ответить, цитируя автора - Kanzi Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Февраль 2008 12:29

У меня такой запрос выполнился без ошибок: 

SELECT COUNT(*)

FROM Mains

WHERE (MeasureDate BETWEEN '06.02.2006 9:51:52' AND '06.02.2008 9:51:52')

Может быть оператор пропущен выше?

Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Февраль 2008 12:53
Первоначально опубликовано Kanzi

У меня такой запрос выполнился без ошибок: 

SELECT COUNT(*)

FROM Mains

WHERE (MeasureDate BETWEEN '06.02.2006 9:51:52' AND '06.02.2008 9:51:52')

Может быть оператор пропущен выше?

нет, выше все нормально, т.к. с др. условиями работает (WHERE index=1, например).

Возможно у меня такие строки не работают потому, что я SQL использую в скрипте, т.е.:

    qryText = "SELECT Sample_TDate_1,Sample_TDate_2,Sample_TDate_3,Sample_TDate_4,Sample_TDate_5,Sample_TDate_6,Sample_TDate_7,"
    qryText = qryText & "FROM seria1 WHERE (seria1.Sample_TDate_2 BETWEEN 06.02.2008 9:54:52 AND 06.02.2008 9:54:52)"

И если даты заключать в ' ' , то сообщение выдается уже о несовпадении типов.

Наверх
Kanzi Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Сентябрь 2006
Online Status: Offline
Публикации: 125
Свойства публикации Свойства публикации   Ответить, цитируя автора - Kanzi Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 19 Февраль 2008 17:34
Первоначально опубликовано DubAlex

   qryText="...,Sample_TDate_7,"
    qryText = qryText & "FROM ...

перед FROM оказалась запятая, а нужен пробел 

Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Февраль 2008 08:37
Первоначально опубликовано Kanzi

Первоначально опубликовано DubAlex

   qryText="...,Sample_TDate_7,"
    qryText = qryText & "FROM ...

перед FROM оказалась запятая, а нужен пробел 

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

Проблема, как мне кажется в том, что если этот запрос находится в VB-скрипте, то его синтаксис немного отличается от того синтаксиса, который, к примеру, дается в документации на тот же DataMining. И я этих "тонкостей" синтаксиса не знаю пока.

Пример: я добавил компонент DataMining Control и в его настройках подключения добавил несколько полей и поставил фильтр. Компонент мне сформировал следующий запрос:

SELECT
   Sample_TDate_1,
   Sample_TDate_2
FROM
   Серия_1
WHERE
   Серия_1.Sample_TDate_1 < #25.12.2007 9:49:06#

Как видите, дата заключается в #-ки.

У меня в скрипте запрос работает только в одном случае - если сравниваются 2 поля, а не поле с константой или поле с переменной: 

WHERE Серия_1.Sample_TDate_1 < Серия_1.Sample_TDate_2

Может дело в несовместимости типов? Какой тип у полей в БД Access: дата или строка?

 

Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Февраль 2008 16:12

Разобрался.

Правильный запрос:

WHERE Серия_1.Sample_TDate_1 BETWEEN #25/12/2007 9:49:06# AND #25/12/2007 9:49:06#

Немного странно, ведь в региональных настройках формат даты следующий: 25.12.2007 9:49:06

Сформировать правильный запрос мне помог сам Access: открыл приложение, создал фильтр по дате, сохранил как запрос, вывел запрос в SQL-режиме.

Наверх
 Ответить Ответить Страница  <12

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz