Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2018, 20:10   #1
Mishka_M
Пользователь
 
Регистрация: 11.05.2018
Сообщений: 32
По умолчанию Помощь с Delphi БД sql запрос .

Добрый день . нужна помощь .
Нужно чтоб в главном окне программы в Grid , отображались только занятия на сегодняшний день .
Выполнил все привязки datasource , adoquery. не могу понять что прописать в запросе sql, чтоб отображались только определенные дни , согласно сегодняшнему дню недели .
Пробовал что то вроде
Код:
select * from baza were day = dayofweek('dddd',Now)
или
Код:
select * from baza were day = dayofweek(Now)
но не прокатывает
1231231231.jpg
1122333.jpg

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.jpeg, Vcl.ExtCtrls,
  Vcl.StdCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, Data.Win.ADODB;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form2.Show;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
       label1.Caption:=TimeToStr(GetTime);
       label2.Caption:=DateToStr(Date);
       label4.Caption:=FormatDateTime('dddd',Now);
end;

end.
Mishka_M вне форума Ответить с цитированием
Старый 29.05.2018, 23:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а что у Вас хранится в таблице baza мы должны угадать?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2018, 23:40   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а что у Вас хранится в таблице baza мы должны угадать?
Ещё бы разобраться, о каком из SQL идёт речь.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.05.2018, 00:31   #4
Mishka_M
Пользователь
 
Регистрация: 11.05.2018
Сообщений: 32
По умолчанию

Я тоже люблю стебаться над неопытностью )
Эмм база , надеюсь вас это интересует
231231.jpg
sql ado.queery.
-41144124124121214.jpg
если есть варианты как вывести нужную информацию , то я большое ухо , а нашем случае глаз ,заранее спасибо за помощь )
Mishka_M вне форума Ответить с цитированием
Старый 30.05.2018, 07:29   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Начнём с того, что в большинстве SQL-ей функции определения дня недели возвращают номер этого дня, а не явное значение. Кроме того, я не стебался ни капли, когда уточнял, какая именно СУБД. В Акцессе для получения номера дня недели используется функция weekday (https://www.techonthenet.com/access/...te/weekday.php).

Если выполнить в Акцессе простой запрос:

Код:
SELECT weekday(Now(), 1) AS WD
то можно убедиться, что на выходе мы получим порядковый номер дня недели, а не его наименование.

Для преобразования номера в человеческое название используется функция format (https://www.techonthenet.com/access/...ate/format.php)

Код:
SELECT format( weekday(Now(), 1), "dddd") AS WD
вернёт "Среда"

Таким образом, чтобы получить текущий день недели, Ваш запрос должен выглядеть так:

Код:
SELECT * FROM [baza]
WHERE [Day] = format( weekday(Now(), 1), "dddd")
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.05.2018, 07:54   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Я удивляюсь, что это как-то работает.. В Access вроде есть функция Weekday, а DayOfWeek - это Delphi. Тут надо понимать механику: Delphi формирует запрос, но выполняет его Access. Так что функции Delphi допустимы только при динамическом формировании запроса, а в момент выполнения в нём должны быть только функции Access.

И, на мой взгляд, Вы сильно усложняете себе жизнь, храня в базе название дня недели, а не его номер. Та же Weekday возвращает номер.
Black Fregat вне форума Ответить с цитированием
Старый 30.05.2018, 08:11   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
а DayOfWeek - это Delphi
Вроде бы ещё Мускуль, точно не помню
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.05.2018, 21:40   #8
Mishka_M
Пользователь
 
Регистрация: 11.05.2018
Сообщений: 32
По умолчанию

Спасибо все работает.
Всем откликнувшимся спасибо за помощь.
Sciv в особенности.
Mishka_M вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос не срабатывает. Нужна помощь по условию artemavd БД в Delphi 4 15.04.2015 09:43
SQL запрос в Delphi. dima1257 Помощь студентам 2 07.06.2013 23:30
delphi и SQL запрос world12_tk Помощь студентам 5 17.05.2012 15:35
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
sql запрос delphi viperrr Помощь студентам 13 03.07.2009 03:08