Базы данных для новичков

  • Автор темы _DeMiUrG_
  • Дата начала
D

_DeMiUrG_

#1
Здравствуйте столкнулся с такой проблемой

пишу запрос на выборку из базы данных Access

'SELECT Name,Company,Number FROM orders where ''Дата''<'+chr(39)+edEndDate.text+chr(39)+
' and ''Дата''>'+chr(39)+edBegDate.text+chr(39);

поле данных Дата в базе DataTime и почему то
даты за период не выбираются.


Может подсказать красивый вариант получения выборки
на основе сравнения дат?
 
S

Silver Wind

#2
Что поле в базе так и называется по-русски Дата? Не все базы корректно с такими именами полей работать будут, а тут вобще какая-то смесь - судя по началу select`а поля дожны быть английскими.

Ну а по сути логические связки and, or и.т.п. имеют более высокий приоритет, чем операции сравнения. Обрамляй условия скобками, примерно так:
Код:
'SELECT Name,Company,Number FROM orders where (''Дата''<'''+edEndDate.text+''') and (''Дата''>'''+edBegDate.text+''')';
Далее я бы еще проверил в каком формате edXXXDate.text возвращает дату. Тоже заморочки могут быть, если движок базы не разберется в таком строковом представлении даты.
 
D

_DeMiUrG_

#3
edXXXDate.text формат __.__.___ это TMaskEdit
поля названы по русски просто я обозвал их тут для упрощения.

если я ищу конкретную дату и ставлю "=" запрос работает корректно
а вот с ">" и "<" не работает как правильно вообще
сделать поля в таблице БД и оформить запрос с получением данных из TMaskEdit?
 
A

AnEi

#4
попробуй оператор between:

Between «Выражение» And «Выражение»
 
D

_DeMiUrG_

#5
пробовал все варианты кроме Parameters
неполучается
 
D

_DeMiUrG_

#6
в вобщем получилось когда оформил так
[cod]...where Дата<#месяц/день/год# [/cod]