Поиск:

Ответ в темуСоздание новой темы Создание опроса
> дапазон дат в базе данныйх, как сделать чтобы в таблице отображались 
:(
    Опции темы
george1980
Дата 19.9.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Помогите зелёному! и извените за глупый вопрос.
Сколько ни искал информации именно с датами небыло.

Как сделать чтобы в таблице отображались даты заданного диапазона
Например вводиш начало периода 01.01.2002 и конец периода 31.12.2003 , и в таблице виден диапазон этих дат.
И чтоб код был коротким.
Заранее благодарен!



with Table1 do
begin
SetRangeStart;
Fielda[0].AsDateTime:=??;
SetRangeEnd;
Fielda[0].AsDateTime:=??;
ApplyRange;
end;

Как с датами ?
PM MAIL   Вверх
Savek
Дата 19.9.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



 ...  :=EncodeDate(31,12,2005) ?
PM MAIL   Вверх
george1980
Дата 20.9.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Дело в том что дата должна вводиться в пользователем в Edit или в другом компоненте типа String
Как это сделать?
PM MAIL   Вверх
ТоляМБА
Дата 20.9.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Юзай Query !
Код

Select *
from table1
where DataField BETWEEN '01.01.2002' and '31.12.2003'


Добавлено @ 14:13 
Цитата(george1980 @  20.9.2006,  13:59 Найти цитируемый пост)
Дело в том что дата должна вводиться в пользователем в Edit или в другом компоненте типа String


Код

 Query1.Close;
 Query1.SQL.Text:='Select * '+
 ' from table1 '+
 ' where DataField BETWEEN '+QuotedStr(Edit1.Text)+' and '+QuotedStr(Edit2.Text);
 Query1.Open;


Ессно надо сделать проверку на правильность вводимых значений (дат), но енто уже, как говорится другой вопрос.
Дерзай!
PM   Вверх
george1980
Дата 20.9.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



А с DBASE , не получиться сделать диапазон? 
Я в sql вообще ноль.
Да я и со старыми базами работаю.
Конечно в будущем переходить будем на sql.
Если не трудно подскажите!
Так то всё работает, но нужна выборка по датам. 
PM MAIL   Вверх
ТоляМБА
Дата 21.9.2006, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Цитата(george1980 @  20.9.2006,  16:12 Найти цитируемый пост)
А с DBASE , не получиться сделать диапазон? 

Получится.
Цитата(george1980 @  20.9.2006,  16:12 Найти цитируемый пост)
Если не трудно подскажите!

Что тебе конкретно подсказать? Как к таблицам Query подцепить или что? Ты мой пример юзал?
PM   Вверх
comtat
Дата 21.9.2006, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Цитата(george1980 @  20.9.2006,  13:59 Найти цитируемый пост)
 Edit или в другом компоненте типа String

а чем DataTimePicker не подходит ??



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
george1980
Дата 21.9.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Всё ребята, разобрался сам
Вот простенький но рабочий код.
Главно незабыть сделать индекс поля в котором вы хотите искать и в Table1 в IndexName его поставить.


procedure TForm1.Button1Click(Sender: TObject);
var
dateFirst,dateSecond:TDateTime;
begin
dateFirst:=StrToDate(MaskEdit1.Text);
dateSecond:=StrToDate(MaskEdit2.Text);
Table1.SetRangeStart;
Table1.Fields[1].AsVariant:=dateFirst;
Table1.SetRangeEnd;
Table1.Fields[1].AsVariant:=dateSecond;
Table1.ApplyRange;
end;

end.




Появилась другая проблема , у меня эта таблица была вторичной и отображала данные с другой , значит там уже был индекс.
Я пошёл другим путём, бросил Button1 на неё то что она должна все данные скопировать в такую же таблицу такой же структуры.
А уж не ней поставил этот код.


Может есть альтернатива этому.
Подскажите
Заранее благодарен!


Вообщета у меня программа должна печатать справки.
Делаю в 6 делфи, потому что там есть QReport , а с другими я не знаком

PM MAIL   Вверх
Akella
Дата 22.9.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(george1980 @  19.9.2006,  15:44 Найти цитируемый пост)
with Table1 do
begin
SetRangeStart;
Fielda[0].AsDateTime:=??;
SetRangeEnd;
Fielda[0].AsDateTime:=??;
ApplyRange;
end;


Код

begin
SetRangeStart;
Field[0].AsDateTime:=DateTimePicker1.Value;
SetRangeEnd;
Field[0].AsDateTime:=DateTimePicker2.Value;
ApplyRange;


используй DateTimePicker (а лучше из EhLib)
PM MAIL   Вверх
george1980
Дата 23.9.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



begin
SetRangeStart;
Field[0].AsDateTime:=DateTimePicker1.Value;
SetRangeEnd;
Field[0].AsDateTime:=DateTimePicker2.Value;
ApplyRange;


Не, мне наоборот подходит чтобы ввод вручную был.
А с DateTimePicker не очень. Хотя это и был первый вариант.

Скажи лучше как одну таблицу использовать для выборки данный из другой и чтоб при вводе дат отображались данные вводимого диапазона.
Видимо только один индекс можно использовать.
PM MAIL   Вверх
Akella
Дата 25.9.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(george1980 @  23.9.2006,  10:52 Найти цитируемый пост)
Не, мне наоборот подходит чтобы ввод вручную был.
А с DateTimePicker не очень. Хотя это и был первый вариант.

с DateTimePicker - это правильный вариант - ты ограждаешь пользователя от неправильного ввода/выбора даты
PM MAIL   Вверх
Fedia
Дата 26.9.2006, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата(Akella @  25.9.2006,  09:29 Найти цитируемый пост)
с DateTimePicker - это правильный вариант - ты ограждаешь пользователя от неправильного ввода/выбора даты

таки поддерживаю smile

Цитата(george1980 @  23.9.2006,  10:52 Найти цитируемый пост)
Не, мне наоборот подходит чтобы ввод вручную был.

В TDateTimePicker-е можно вводить данные вручную.

Цитата(george1980 @  23.9.2006,  10:52 Найти цитируемый пост)
Скажи лучше как одну таблицу использовать для выборки данный из другой и чтоб при вводе дат отображались данные вводимого диапазона.

Не понятно, что конкретно ты пытаешься реализовать. К одной таблице можно подключиться дважды, и в одном наборе данных отображать все таблицу, а во втором только отфильтрованные данные.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Akella
  Дата 26.9.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(george1980 @  23.9.2006,  10:52 Найти цитируемый пост)
Скажи лучше как одну таблицу использовать для выборки данный из другой 

1. Скажи вообще, что ты хочешь сделать, ты сам-то понял, что спросил?

2. каким образом данные выбираешь, с какой базой работаешь? неужели трудно указать.
Всё дело в том, что все штатные телепаты нашего форума в отпуске...., а модераторы ещё не научились читать масли, к сожалению, но всему своё время smile 



3. По правила форума: 1 топик-1 вопрос, а ты уже второй задаешь

Это сообщение отредактировал(а) Akella - 26.9.2006, 14:16
PM MAIL   Вверх
george1980
Дата 26.9.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Не думал, что тут так строго с топиками . Сорри !!!
Хотел как лучше, а получилось ....

Объясняю.

Есть первый файл dbf, есть второй файл dbf.
Второй файл с первым, связан по индексу. Выбирает нужного человека. Во второй таблице находятся даты, куча дат которые тоже нужны. 
Например мне нужно показать последние даты в пределах 6 мес. 
Как в этом случае сделать ? Как применить второй индекс ?
Если его ставиш, то первый не работает и выдаёт ошибку.

Компоненты которые я использовал примитивные:
TTable
TDataSource
TGrid
 

 
PM MAIL   Вверх
Fedia
Дата 26.9.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата(george1980 @  26.9.2006,  14:45 Найти цитируемый пост)
Компоненты которые я использовал примитивные:TTableT DataSource TGrid

Компонентов как я понимаю по паре на каждую таблицу ? Подчиненная таблица с датами связана с главной через  MasterSourse ?


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.