Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

SQL и функции   Найти похожие ветки 

 
KidMan ©   (2002-10-17 23:01) [0]

Здравствуйте Мастера!
Такой вот запрос
with Query1 do begin
SQL.Clear;
SQL.Close;
SQL.Add("SELECT * FROM BASE.DBF");
SQL.Add("WHERE (ПОЛЕ ТИПА TDate) = PARAM);
ParamByName("PARAM").Value := "только день и месяц без года";
Open;
end;
Что мне делать чтобы из поля даты в запросе вытащить только dd:mm ? DBF под винды...

Заранее благодарю...


 
sniknik ©   (2002-10-17 23:17) [1]

можно попробовать
SQL.Add("SELECT * FROM "BASE.DBF"");
SQL.Add("WHERE SUBSTRING(CAST(ПОЛЕТИПАTDate AS CHAR(10)) FROM 1 FOR 5) = SUBSTRING(CAST(:PARAM AS CHAR(10)) FROM 1 FOR 5)");
ParamByName("PARAM").Value := "день и месяц с любым годом";

ну или сразу ограничить CAST(ПОЛЕТИПАTDate AS CHAR(5)) если только день месяц первые идут, не помню.

p.s. нет такого DBF под винды... У тебя скорей всего Local SQL под BDE (но это тоже не тип базы а доступ, тип будет dBase или может быть Foxpro).


 
KidMan ©   (2002-10-17 23:50) [2]

Можно попробовать или это все же бум работать? Вообще есть ли какое нибудь правило использоваия функций в строке запроса?

Есть такой по крайней мере когда создаешь БД через DataBase Desktop - dBASE for Windows ....

Спасибо...


 
oss ©   (2002-10-18 00:07) [3]

вытаскивать можешь все, укажи в свойствах поля маску вывода и едита, и наслаждайся :)


 
KidMan ©   (2002-10-18 00:17) [4]

oss
Сорри... не понял (((


 
sniknik ©   (2002-10-18 00:18) [5]

должно по непроверенным данным (всетаки на память писал и без проверок негарантированно), проверять тебе.
првило конечно есть и не одно SQL называется!
найди у себя в файл LOCALSQL.HLP (после установки дельфей образуется)

"dBASE for Windows" и "DBF под винды" есть всетаки разница!

Пожалуйста...


 
KidMan ©   (2002-10-18 00:27) [6]

sniknik
Спасио за LOCALSQL.HLP - почитаю как смогу...

Касательно - "dBASE for Windows" и "DBF под винды" ... никакой разницы... по мне... ламеру во всяком случае ;)) 7 лет бью ДБФ и что с клипером что с фокспро что с ДБЕЙС... никогда с проблемами не сталкивался... ))



 
sniknik ©   (2002-10-18 00:43) [7]

клипер и фокспро сами по себе базы достаточно сказать пишу на фоксе и все понятно (особенно если и версию укажеш).
а с дельфями все не так это не база данных а язык у которого просто есть возможность подключатся к различным базам через различные интерфейсы отсюда и требования к точности иначе тебя просто не "поймут".
или что хуже будут давать советы по другому типу баз(SQL) в итоге только время потеряеш.
в итоге разница есть. кстати "DBF"-ом называют еще какуюто базу или даже SQL сервер. Так что вот! :-)))


 
KidMan ©   (2002-10-18 01:42) [8]

sniknik
Спасибо за лекцию... (улыбается) о я все же кое что узнал за эти 10 лет общения с дбф... и поверь мне по большому счету нет никакой разницы между фокспро дбф и визуал дебейс например...
Чичас проблем конвертации одной БД в другую практически нет...
А вот попробовал бы ты гонять БД под ДОС лет этак 7 тому назад да с учетом нац языка... (смеется)

Это теперь легко тем у кого есть книги... инет... а тогда убивались за каждый листок бумаги распечатанного на епсон fx-1000... доков просто не было )))

Еще раз сэнкс...


 
sniknik ©   (2002-10-18 08:56) [9]

KidMan © (18.10.02 01:42)
нет никакой разницы между фокспро дбф и визуал дебейс

поспорим?

7 лет назад я на фоксе сидел. А под Дос (клипер) и сейчас. :(. Доки были, только чаще на английском (хотя наверно у кого как,).
(будут ли при коммунизме деньги? армянское радио отвечает "у кого будут а у кого нет" :-))

Не за что.


 
KidMan ©   (2002-10-19 22:57) [10]

sniknik

У меня не заработал твой вариант... Может есть еще какие идеи?

Заранее благодарю!


 
sniknik ©   (2002-10-20 01:05) [11]

И тем не менее вариантик рабочий, теперь уже попроверенным данным. (пришлось :о( )
Query1.Close;
Query1.SQL.Text:= "SELECT * FROM "CASHSAIL.DBF" WHERE "+
"SUBSTRING(CAST("CASHSAIL.DBF"."DATE" AS CHAR(10)) FROM 1 FOR 5) = "+
"SUBSTRING(CAST(:DAT AS CHAR(10)) FROM 1 FOR 5)";
Query1.ParamByName("Dat").AsDateTime:= StrToDate("02.11.2005");
Query1.Open;

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

можеш еще попробовать более наглядный вариант.
Query1.Close;
Query1.SQL.Text:= "SELECT * FROM "CASHSAIL.DBF" WHERE "+
"EXTRACT(MONTH FROM "CASHSAIL.DBF"."DATE") = :dMonth AND "+
"EXTRACT(DAY FROM "CASHSAIL.DBF"."DATE") = :dDay";
Query1.ParamByName("dMonth").AsInteger:= MonthOf(StrToDate("02.11.2005"));
Query1.ParamByName("dDay").AsInteger:= DayOf(StrToDate("02.11.2005"));
Query1.Open;

выводит то же самое.


 
KidMan ©   (2002-10-20 01:14) [12]

Я попробую и это...!

В любом случае спасибо за терпение и внимание!


 
KidMan ©   (2002-10-21 23:37) [13]

sniknik
-------
Спасибо большое!
У меня все получилось... а главное я понял как это делается ;))

Всяческих удач!



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
14-21820
Forever
2002-10-20 21:59
2002.11.07
Как возвести в квадрат методом рекурсии ?


3-21389
b-Ars
2002-10-15 15:49
2002.11.07
Чем обусловлено появление временных файлов?


1-21679
RTZ
2002-10-28 10:31
2002.11.07
Народ возникли два вопроса по компоненту WebBrowser


1-21487
DN
2002-10-28 17:17
2002.11.07
Работа с TStringList


1-21647
Anatoly P
2002-10-27 12:29
2002.11.07
TColor в String