Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-21367
SkyWalker
2002-10-17 12:29
2002.11.07
BDE


1-21464
Peter Gluhiy
2002-10-28 12:15
2002.11.07
Как программно проверить, есть ли у объекта свойство?


1-21568
Di_wind
2002-10-25 23:00
2002.11.07
WebBrowser


3-21351
ddorixe
2002-10-16 10:58
2002.11.07
Помогите восстановить базу


1-21557
Шурик Ш
2002-10-29 18:00
2002.11.07
Передача параметра в приложение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский