Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
Внизselect and between Найти похожие ветки
← →
Roka (2003-04-04 21:42) [0]Нужно отобрать из базы записи, попадающие в интервал дат между датами в DateEdit
Где порылась ошибка?
MyQuery.SQL.Add("select count(*) as Colich from zzz where BETWEEN(pole,DateEdit1.Date,DateEdit2.Date)");
Пишет "Invalid use of keyword. Token: BETWEEN(pole,DateEdit1.Date,DateEdit2.Date)"
В данном случае поле pole в формате даты, но бывает что приходится работать с символьными
полями приводя их к дате.
Вобще помогайте. Что-то после фокса никак неосвоюсь.
P.S.: Как забить на региональные установки при работе с датой? Т.е. всегда работать
с разделителем ".", независимо установлено ли "/" или "-".
← →
Cranium (2003-04-04 22:02) [1]
> P.S.: Как забить на региональные установки при работе с
> датой? Т.е. всегда работать
> с разделителем ".", независимо установлено ли "/" или "-".
Через предопределенные переменные форматов вот к примеру
var DateSeparator: Char;
^^^^^^^^^^^^^^^^^^^^^^^^^^
Это для даты.........
var ShortDateFormat: string;
var LongDateFormat: string;
var TimeSeparator: Char;
var TimeAMString: string;
var TimePMString: string;
var ShortTimeFormat: string;
var LongTimeFormat: string;
var ShortMonthNames: array[1..12] of string;
var LongMonthNames: array[1..12] of string;
var ShortDayNames: array[1..7] of string;
var LongDayNames: array[1..7] of string;
var SysLocale: TSysLocale;
var EraNames: array[1..7] of string;
var EraYearOffsets: array[1..7] of Integer;
var TwoDigitYearCenturyWindow: Word = 50;
← →
Johnmen (2003-04-05 02:56) [2]>"select count(*) as Colich from zzz where BETWEEN
>(pole,DateEdit1.Date,DateEdit2.Date)"
Ты не находишь странным, что сервер вдруг должен что-то знать про твое приложение ? И не стоит ли подучить SQL ?
Короче - "Читать, читать, читать..."..................
← →
ЮЮ (2003-04-05 02:58) [3]Это текст запроса, переданный БДЕ.
select count(*) as Colich from zzz where BETWEEN(pole,DateEdit1.Date,DateEdit2.Date)
Как ты думаешь, что означает на SQL выражение вида "DateEdit1.Date"? Правильно, поле Date таблицы DateEdit1! Ты это подразумевал, когда писал запрос?
Как правильно составить запрос.
Написать его текст в SQL Explorer-е, подставляя реальные данные в условиях и добиться правильного выполнения:
Сначала
select *from zzz where pole BETWEEN "01.01.2003" AND "31.12.2003"
Затем, когда убедишься, что это именно те записи
select count(*) as Colich from zzz where pole BETWEEN "01.01.2003" AND "31.12.2003"
Теперь фактические значения заменяешь на параметры
select count(*) as Colich from zzz where pole BETWEEN :Date1 AND :Date2
и кладем текст запроса в Query.SQL. Определяем типы параметров в Query.Params.
Теперь когда надо изменить параметры пишем
qMain.Close;
qMain.Params[0].asDate := DateEdit1.Date;
qMain.Params[1].asDate := DateEdit2.Date;
qMain.Open;
← →
roka (2003-04-07 21:04) [4]Срасибо ЮЮ, размусолил. Стало прорисовываться :)
Но дальше оказалось хуже. Книжек нет, а почитать негде.
А SQL в VFP я так понимаю нестандартный ибо половина моих запросов непроходит.
Поэтому еще тут попристаю.
Вобщем поле "pole" стринговое содержащее данные типа:
"??????????YYYYMMDD??????????????", где YYYY-год, MM-месяц, DD-день
Нужно участок YYYYMMDD перевести в формат даты и проверить на вхождение в
интервал дат DateEdit1.Date и DateEdit2.Date
MyQuery.Close;
MyQuery.SQL.Clear;
MyQuery.SQL.Add("select count(*) as Colichdoc from zzz.dbf where StrToDate(midstr(Table2.FieldByName("pole").AsString,17,2)+"."+midstr(Table2.FieldByName("pole").AsString,15,2)+"."+midstr(Table2.FieldByName("pole").AsString,11,4)) BETWEEN :Date1 AND :Date2");
MyQuery.Params[0].AsDate := DateEdit1.Date;
MyQuery.Params[1].asDate := DateEdit2.Date;
MyQuery.Open;
colich:= MyQuery.FieldByName("colichdoc").AsInteger;
← →
ЮЮ (2003-04-08 03:36) [5]>Книжек нет, а почитать негде.
C:\Program Files\Common Files\Borland Shared\BDE\LOCALSQL.HLP
>"where StrToDate("
Опять смешиваешь SQL и код Delphi :-)
StrToDate(<string>) в D <==> CAST(<string> AS DATE)
midstr(Table2.FieldByName("pole").AsString,17,2) <==>
SUBSTRING(POLE FROM 12 FOR 2)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c