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

Вниз

IBTable1.Filtered - Дата1 - Дата2 ?   Найти похожие ветки 

 
Filat   (2003-05-19 09:27) [0]

Доброго утра всем (для кого утро)!!!
Делаю такой фильтр, работает.
IBTable1.Refresh;
IBTable1.Filter:="(DATA="+#39+DateToStr(Date)+#39+")";
IBTable1.Filtered:=True;
А как сделать фильтр на промежуток м/у датами?

P.S.: SELECT ... не предлагать!!!
Спасибо!


 
Соловьев   (2003-05-19 09:30) [1]

(Data>=D1) and (Data<=D2)

> SELECT ... не предлагать!!!

а что так не любим SQL? :)


 
Anatoly Podgoretsky   (2003-05-19 09:42) [2]

Не надо было уроки математики пропускать, а задача чисто для SQL была бы еще не клиент серверная база, а так извращение, тянуть записи на клиента, чтобы потом там делать ограничение.


 
Johnmen   (2003-05-19 09:56) [3]

В математике кроме знака = есть еше знаки < и >


 
Filat   (2003-05-19 14:18) [4]

Соловьев © IBTable1.Filter:="(DATA="+#39+DateToStr(Date)+#39+")"; Надо сюда вставить интервал.

Почему не нужен SQL. Дело в том, что поставив фильтр и сделав ещё один фильтр юзер найдёт (а указатель в базе переместится) на нужную юзеру запись. Юзер закроет дополнительную форму и в основной сможет откорректировать данные. Если сделать select то в нем уже не откорректируешь, либо потом извратом надо сохранять изменения в базу, ... нафига коту баян? :)
Если можно сделать, как спрашивал, то отлично, если нет, хуже, придётся изголятся по другому.
А SQL я люблю, между прочим, особенно когда поработал с DB2!! Улетная штука, и главное гибкая.

Anatoly Podgoretsky © Это будет не часто, и база, ну за год я думаю 40 тыс. записей тока наберётся, учитывая мощность компов и 100Mb сетку это не критично, хотя в общем подходе к написанию кода - вы абсолютно правы и я 4 конечностями за!
Анатолий, учитывая ваше замечание, как можно через select сделать то что мне надо, может у меня опыта мало и я чего то не знаю?

Спасибо!


 
NickBat   (2003-05-19 14:25) [5]

DATA between "01.01.2003" and "31.01.2003"
Хоть в SQl хоть в Filter.

Только неправильно это, тащить на клиента 40 тысяч записей.


 
Anatoly Podgoretsky   (2003-05-19 14:32) [6]

Каждый раз как хочу привести конкретный код, кто нибудь его уже привел, так что общии замечания. Все равно SQL запрос, неверно работать навигационными методами с SQL серверами и отказаться от IBTable в пользу соответсвующих компонент.
Только к ответу NickBat © (19.05.03 14:25) учитывай тип оля если не чистый DATE то последния дата может и не войти, здесь по умолчанию до "31.01.2003 00:00:00" включительно!!!


 
Filat   (2003-05-19 17:11) [7]

Anatoly Podgoretsky - понял, спасибо, но тогда как сделать следующее:
- после select будет идти поиск уже чего то конкретного.
- юзер нашел в select и поиске то что ему надо, как сделать чтобы запись на которой он стоит в select-е при закрытии дополнительной формы была текущей в главной, в DBGrid (т.е. в самой таблице)


 
NickBat   (2003-05-19 17:16) [8]

1. Ну у TQuery тоже есть Filter.
2. Запоминай ID записи.




 
Filat   (2003-05-20 09:42) [9]

Где я его возьму или как получить ID записи, если у меня он специально не проставляется? Или сам FireBerd их ещё нумерует?


 
Соловьев   (2003-05-20 09:45) [10]


> Filat © (20.05.03 09:42)

id - это ключевое поле(или набор ключевых)? в общем случае - набор всех атрибутов(полей).


 
Zacho   (2003-05-20 09:47) [11]


> Filat © (20.05.03 09:42)

В твоей таблице нет первичного ключа ???
Немедленно сделай, иначе проблем не оберешься, и почитай что-нибудь о разработке БД в РСУБД, например К. Дж. Дейт "Введение в системы баз данных"


 
Filat   (2003-05-20 13:48) [12]

Давай так, как я мыслю об ID. В моём понимании после это некоторое значение записи в спец. поле, которое ведёт сама база.
Если вопрос стоит о ключевом поле, т.е. уникальном я так понимаю, то для этой задачи, я так думаю, ... оно мне не надо. Хотя после объяснений Анатолия Подгоретского есть вариант что оно то меня и спасёт. Так о чем речь? Об уникальном поле или спец ID, как например делает сама база? (похоже что путаем термины, а разговор об одном и том же).
Да, каким тогда делать это уникальное поле, автоинкрементным или самому ставить значение? Автоинкрементное не подходит, нужна возможность вставить запись в середину таблицы по № п/п.
Спасибо!


 
Соловьев   (2003-05-20 13:55) [13]


> Автоинкрементное не подходит, нужна возможность вставить
> запись в середину таблицы по № п/п.

как раз подходит. автоинкрементное на то и придумано, чтобы по авто заполнять id записи. А "вставка в середину" № п/п - это уже отдельное поле, в котором ты можешь все что угодно писать.


 
Zacho   (2003-05-20 13:55) [14]

ПК - это поле (или набор полей) значение которого уникально в пределах таблицы. "Сама база" ничего не делает, но можно сделать искуственный (т.е. генерируемый искуственно, и не имеющий смысла вне БД) ПК, например с помощью генератора.
ПК нужен обязательно ! Почитай того же Дейта - у него подробно описаны возможные аномалии при работе с ненормализированными данными.
Если тебе нужен номер по порядку (кстати, какому порядку ? В порядке ввода записей ?) - то сделай такое поле, только подумай, как избежать конфликтов при многопользовательской работе.


 
Filat   (2003-05-20 15:48) [15]

Понятно, тогда где в Инете почитать Дейта, и как сделать автоинкрементное поле в FireBerd, как в Paradox я знаю, с FireBerd не приходилось как то.


 
Соловьев   (2003-05-20 15:54) [16]


> Filat © (20.05.03 15:48

www.ibase.ru


 
Anatoly Podgoretsky   (2003-05-20 16:15) [17]

Без первичного ключа, как тебе уже сказали делать нечего, можешь сразу хоронить базу, еще хуже жить без базовых знаний, без основы, тут вообще полный капут. Так что сначала немного почитать, посмотреть примеры в Дельфи, посещать www.ibase.ru и покопаться там и только потом за базы.


 
Zacho   (2003-05-20 16:51) [18]


> Filat © (20.05.03 15:48)

В инете - не знаю, лучше купи книжку, очень пригодится.
Только имей в виду, что издания разных годов очень сильно отличаются.
И, как уже сказали, читай статьи на http://www.ibase.ru
Еще очень может помочь конференция news://forums.demo.ru/epsylon.public.interbase - почитай архив, весьма полезно.


 
Filat   (2003-05-20 17:49) [19]

Хорошо, уболтали :))))))
Дело в том что с локальными базами у меня все ок.
Вот с IB или FireBerd будем разбираться.
Спасибо! Если что, я тогда снова обращусь...


 
Filat   (2003-05-20 19:25) [20]

Коллеги, прошу прощения, но:
1. Что можно использовать вместо Outlook Express для чтения новостей? The Bat не имеет такой возможности :(((
2. Если нетрудно, дайте ссылку на http://www.ibase.ru где конкретно есть по первичным ключам. Не понятно, какой тип поля для него ставить, или все равно?
3. Если я удалю записи, все, значение первичного ключа тоже сбросится на "0", если оно изначально = "0" или надо чего то делать как в Paradox.


 
Zacho   (2003-05-20 19:59) [21]


> Filat © (20.05.03 19:25)
> Коллеги, прошу прощения, но:
> 1. Что можно использовать вместо Outlook Express для чтения
> новостей? The Bat не имеет такой возможности :(((
Я использую FidoLook SL - надстройка над OutlookExpress. Меня устраивает. URL не помню, но найдешь без труда любым поисковиком.

> 2. Если нетрудно, дайте ссылку на http://www.ibase.ru где
> конкретно есть по первичным ключам. Не понятно, какой тип
> поля для него ставить, или все равно?
> 3. Если я удалю записи, все, значение первичного ключа тоже
> сбросится на "0", если оно изначально = "0" или надо чего
> то делать как в Paradox.

Сначало разберись, что такое вообще первичный ключ. Почитай того же Дейта, или что-нибудь еще по теории РСУБД и/или разработке БД.
После этого можно читать что-нибудь типа http://www.ibase.ru/devinfo/generator.htm , http://www.ibase.ru/devinfo/NaturalKeysVersusAtrificialKeysByTentser.html , http://www.alexus.ru/russian/articles/dbms/keys/index.htm и т.д.
Удачи !


 
Filat   (2003-05-20 20:09) [22]

Спасибо! То что надо! :))


 
Zacho   (2003-05-20 20:47) [23]

Еще раз на всякий случай :) повторю:

Сначало разберись, что такое вообще первичный ключ (и для чего он нужен, и что может быть при его отсутствии, и что искуственный ПК - это всего лишь техническийй прием, облегчающий работу). Почитай того же Дейта, или что-нибудь еще по теории РСУБД и/или разработке БД.

Поверь, просто сейчас я понимаю, что в свое время избежал бы множества наступаний на грабли, если бы сначало почитал и осмыслил что-нибудь по теории РСУБД

Удачи !


 
Filat   (2003-05-21 20:18) [24]

Итак, изучил материал на который указал Zacho, кстати, этого оказалось достаточно :))) Но применительно к моей задаче как сделать следующее.
Во первых, скажем так, кол-во записей в Table1 <> Table2, и не будет равна. Записи могут быть связаны по типу: № входящего письма <- № исходящего письма на № входящего письма.
Решено использовать поле с Primary key и автоинкрементом.
1. Если таблицу надо очистить, полностью, как обнулить Primary key?
2. Как после фильтра и поиска получить значение этого Primary key и переместить позицию в DBGrid на эту запись, интуитивно есть догадки, но все же.
3. Если у меня будет поле с Primary key, надо ли мне ещё делать индексы по другим полям, у меня же не ОДБ в конце концов :))))?
Спасибо!


 
Zacho   (2003-05-21 20:53) [25]


> Filat © (21.05.03 20:18)
> Итак, изучил материал на который указал Zacho, кстати, этого
> оказалось достаточно :)))

Поверь, недостаточно :) Со временем убедишься.

> 1. Если таблицу надо очистить, полностью, как обнулить Primary
> key?

Зачем ? Если у тебя искуственный ПК, то его значение ничего не значит (извеняюсь за каламбур).

> 2. Как после фильтра и поиска получить значение этого Primary
> key и переместить позицию в DBGrid на эту запись, интуитивно
> есть догадки, но все же.

Точно так же, как и значение любого другого поля. А переместить позицию - Locate по ПК. В чем конкретно затруднения ?

> 3. Если у меня будет поле с Primary key, надо ли мне ещё
> делать индексы по другим полям, у меня же не ОДБ в конце
> концов :))))?

Весьма желательно сделать UNIQUE INDEX на поля, входящие в естественный ПК (и потенциальные ключи).
Насчет других полей - тебе как разработчику БД лучше знать, по каким полям нужны индексы. Разберись, что такое индексы и для чего они нужны. Кстати, первичные ключи (и внешние ключи) - не есть индексы, хотя при создании PK и FK индексы для соответсвующих полей создаются автоматически. Разберись, в чем разница между constraint и index.
Все-таки твой пост свидетельствует о том, что ты не понимаешь базовых принципов РСУБД. Почитай, все-же сначало теорию. И вопросов станет гораздо меньше :-)


 
Filat   (2003-05-22 19:15) [26]

Ok, Найду книгу, куплю обязательно! Спасибо!


 
Filat   (2003-05-22 19:33) [27]

Да, но вопрос то остался!!!!!!
IBTable1.Refresh;
IBTable1.Filter:="(DATA="+#39+DateToStr(Date)+#39+")";
IBTable1.Filtered:=True;

Как правильно в IBTable1.Filter:="(DATA="+#39+ ????? +#39+")"; вставить так чтобы получилось типа:
IBTable1.Filter:="(DATA="+#39+ DATA>=DateEdit1.Text and DADA<=DateEdit2.Text +#39+")";

[Error] Pl4.pas(79): Undeclared identifier: "DATA" - а DATA - это поле в таблице.


 
Dred2k   (2003-05-22 19:56) [28]


> IBTable1.Filter:="(DATA="+#39+ DATA>=DateEdit1.Text and
> DADA<=DateEdit2.Text +#39+")";

Мда...
Во-первых,
IBTable1.Filter:="(DATA >= " + DateEdit1.Text + ") and (DATA <= " + DateEdit2.Text + ")";
Во-вторых, при этом большой вопрос в формате дате, возвращаемом TDateEdit.Text.
В-третьих, нужна книга по дельфе, по базам и механизм TUpdateSQL для изменения результатов TQuery...
Я не прав ? ;)


 
Filat   (2003-05-22 20:01) [29]

IBTable1.Filter:="(DATA="+#39+"DATA>=DateEdit1.Text and DATA<=DateEdit2.Text" +#39+")"; Вот так работает.

Dred2k - твой код ... надо проверить, но все равно, спасибо!
По поводу книги ты прав, но она где то заделась, ещё по базам для 2-й Дельфи.
Спасибо!


 
Zacho   (2003-05-22 20:36) [30]


> Dred2k © (22.05.03 19:56)
> В-третьих, нужна ... и механизм TUpdateSQL
> для изменения результатов TQuery...

Книга, безусловно, нужна. А TUpdateSQL - нужно только для BDE. В IBX есть TIBDataSet - следует пользоваться им, и никаких UpdateSQL не надо будет.


 
Alexandr   (2003-05-23 07:48) [31]

а что в IBX свойство Filter заработало?


 
Zacho   (2003-05-23 07:58) [32]


> Alexandr © (23.05.03 07:48)

В TIBTable есть. Насколько я понимаю, выражение из Filter просто подставляется в WHERE запроса.


 
Alexandr   (2003-05-23 08:02) [33]

даже так...


 
Filat   (2003-05-23 09:28) [34]

Alexandr - да, IBTable1.Filter ..... работает.

Zacho © (22.05.03 20:36) т.е., вы хотите сказать, что используя TIBDataSet мне не надо BDE, или не нужны его свойства типа TUpdateSQL?
У меня через BDE прописан алиас и драйвера для работы с базой.


 
Alexandr   (2003-05-23 09:33) [35]

как все запущено...


 
Zacho   (2003-05-23 09:35) [36]


> Filat © (23.05.03 09:28)

Ничего не понимаю ... Судя по упоминаемым тобой компонентам (IBTable) - ты работаешь не с BDE, а с IBX.
Какие же все-таки компоненты ты используешь, BDE или IBX ?
Что такое у тебя IBTable - TTable или TIBTable ?


 
Alexandr   (2003-05-23 09:38) [37]

он сам не знает чего использует...


 
Anatoly Podgoretsky   (2003-05-23 09:41) [38]

Может он и знает что использует, но что такое базы данных и как с ними работать нет и пытается таким образом изучить или даже не пытается.


 
Dred2k   (2003-05-23 09:42) [39]

> Zacho © (22.05.03 20:36)
> А TUpdateSQL - нужно только для BDE.


Разумеется (не доглядел, бывает). Здесь может пригодиться TIBUpdateSQL. Но это, судя по последним мессагам, еще вопрос...


 
Filat   (2003-05-26 17:30) [40]

На форме есть TIBDatabase, TIBTransaction, TIBTable, TDataSource, ну менюшки там всякие, TActionList и так, по мелочи ... Но с базами, только то что в начале списка.
Для TIBDatabase - DatabaseName прописан в BDE.
Что то я лишнее сделал и что то не доделал? По ответам выше похоже что так.



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

Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.01 c
14-60388
Ru
2003-06-02 14:44
2003.06.19
Критика христианства


11-60101
Xoow
2002-09-26 05:45
2003.06.19
Вопрос


1-60176
leonidus
2003-06-02 16:05
2003.06.19
Окошко как в FlashGet`е


1-60151
volodya_
2003-06-06 14:04
2003.06.19
Приведение типов


1-60193
Xeon
2003-06-04 16:41
2003.06.19
Реестр





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский