Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
MS Access

Как найти пункт назначения и дату adoquery?

03.05.2017, 22:45. Показов 2327. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть база данных созданная,YuryK,выражаю огромную благодарность.

на дельфи будем задавать параметры для запроса: пунк назначения и дату, на которые ищем свободные места.
ну и второй отчет как результат работы запроса.
Database31.zip



Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
procedure TForm1.N8Click(Sender: TObject);
var t:integer;
begin
//Подключение БД
 if OpenDialog1.Execute then
    begin
      ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data '+'Source='+OpenDialog1.FileName+';Persist Security Info=False';
      ADOConnection1.LoginPrompt:=false;
      ADOConnection1.Connected:=true;
  //form1
       form1.DataSource1.DataSet:=form1.ADOTable1;
      form1.ADOTable1.Connection:=form1.ADOConnection1;
     form1.ADOTable1.TableName:='Маршруты';
      form1.ADOTable1.Active:=true;
 
       form1.dbgrid1.DataSource:=form1.DataSource1;
        form1.DBGrid1.Visible:=true;
        form1.DBnavigator1.Visible:=true;
        form1.DBnavigator1.DataSource:=form1.DataSource1;
 
Form1.DBGrid1.Columns.Items[0].Width:=65;
Form1.DBGrid1.Columns.Items[1].Width:=65;
Form1.DBGrid1.Columns.Items[2].Width:=90;
 
 //form 2
    form2.ADOTable1.Connection:=form2.ADOConnection1;
     form2.ADOTable1.TableName:='Рейсы';
      form2.ADOTable1.Active:=true;
 
       form2.dbgrid1.DataSource:=form2.DataSource1;
        form2.DBGrid1.Visible:=true;
        form2.DBnavigator1.Visible:=true;
        form2.DBnavigator1.DataSource:=form2.DataSource1;
 
form2.DBGrid1.Columns.Items[0].Width:=65;
form2.DBGrid1.Columns.Items[1].Width:=65;
form2.DBGrid1.Columns.Items[2].Width:=90;
 
      //form 3
    form3.ADOTable1.Connection:=form3.ADOConnection1;
     form3.ADOTable1.TableName:='Водители';
      form3.ADOTable1.Active:=true;
 
       form3.dbgrid1.DataSource:=form3.DataSource1;
        form3.DBGrid1.Visible:=true;
        form3.DBnavigator1.Visible:=true;
        form3.DBnavigator1.DataSource:=form3.DataSource1;
 
form3.DBGrid1.Columns.Items[0].Width:=65;
form3.DBGrid1.Columns.Items[1].Width:=65;
form3.DBGrid1.Columns.Items[2].Width:=90;
 
   //form 4
    form4.ADOTable1.Connection:=form4.ADOConnection1;
     form4.ADOTable1.TableName:='Продажи';
      form4.ADOTable1.Active:=true;
 
       form4.dbgrid1.DataSource:=form4.DataSource1;
        form4.DBGrid1.Visible:=true;
        form4.DBnavigator1.Visible:=true;
        form4.DBnavigator1.DataSource:=form4.DataSource1;
 
form4.DBGrid1.Columns.Items[0].Width:=65;
form4.DBGrid1.Columns.Items[1].Width:=65;
form4.DBGrid1.Columns.Items[2].Width:=90;
 
      //form 5
    form5.ADOTable1.Connection:=form5.ADOConnection1;
     form5.ADOTable1.TableName:='Типы автобусов';
      form5.ADOTable1.Active:=true;
 
       form5.dbgrid1.DataSource:=form5.DataSource1;
        form5.DBGrid1.Visible:=true;
        form5.DBnavigator1.Visible:=true;
        form5.DBnavigator1.DataSource:=form5.DataSource1;
 
form5.DBGrid1.Columns.Items[0].Width:=65;
form5.DBGrid1.Columns.Items[1].Width:=65;
 
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2017, 22:45
Ответы с готовыми решениями:

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

Найти номера рейсов и типы самолетов вылетающих в заданный пункт назначения
1. Описать структуру с именем AEROFLOT, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета....

почему то не переводит на другую строку cout << "введенный пункт назначения:" << a[i].pn << ' ' ; cout << "введенный пункт назначения:" << a[i].num
struct Train { char pn ; unsigned int num; char time ; }; void Copy (Train &amp;pest, Train bust) //Вспомогательная функция...

36
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 02:10
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Понял,так список заполнился маршрутами
вы базу пустую выложили, поэтому мне списка не видать
Вы используете для списка через ListSource таблицу Маршруты, где а) пункты назначения могут повторяться б) не отсортированы по алфавиту. Поэтому я и предлагал отдельные ADOQuery и DataSource

у вас в ADOQuery1.SQL вообще запроса нет.
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 02:13  [ТС]
Как в dbgrid6 отобразить результат запроса ADOQuery1?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 04:23
так же, как и в случае с другими гридами и ADOTabl-ами: с помощью TDataSource
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 12:52  [ТС]
Цитата Сообщение от YuryK Посмотреть сообщение
у вас в ADOQuery1.SQL вообще запроса нет.
куда вставить код запрос и как он выглядит,бо я запутался?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 13:22
SQL
1
SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 13:29  [ТС]
SQL
1
SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE
Delphi
1
2
3
form1.ADOQuery1.SQL.Clear();
form1.ADOQuery1.SQL.Add('SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE
 ');
Тогда здесь не регулируеться выбор даты и пункта назначения.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 13:32
прочтите весь топик сначала или выкладывайте проект. И таблицы с данными. Повторять все снова в третий раз, увы, не хочется
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 13:33  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.N10Click(Sender: TObject);
begin
 
 
//Свободных мест на рейсе
 Form1.ADOQuery2.SQL.Clear();
 //form1.ADOQuery1.Close;
 form1.ADOQuery1.SQL.Add('SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE');
 form1.ADOQuery1.Parameters.ParamByName('To').Value := DBLookupComboBox1.KeyValue;
 form1.ADOQuery1.Parameters.ParamByName('Date').Value := MonthCalendar1.date;
 form1.ADOQuery1.Open;
 
end;
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 13:35
у вас разные компоненты

Form1.ADOQuery2.SQL.Clear();
form1.ADOQuery1
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 13:43  [ТС]


Database31.zip

Пассажирские_перевозки.zip
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 14:07  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.N10Click(Sender: TObject);
begin
//Свободных мест на рейсе
  form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Text:='SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE';
form1.ADOQuery1.Parameters.ParamByName('To').Value := DBLookupComboBox1.KeyValue;
form1.ADOQuery1.Parameters.ParamByName('STARTDATE').Value := MonthCalendar1.date;
form1.ADOQuery1.Open;
end;
переименовал параметр DATE в STARTDATE , чтобы не было конфликтов с названием типа данных.Все равно То не найден.Не могу понять в чем дело.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 14:32
во-первых, ADOQuery1 (и остальные ADOQuery) остались без Connection

Delphi
1
2
3
4
5
6
7
procedure TForm1.N2Click(Sender: TObject);
begin
       //Подключение БД
  if OpenDialog1.Execute then  begin
    ...
    ADOQuery1.Connection := ADOConnection1;
  end;
во вторых, MonthCalendar.date "содержит" не только дату, но и время. Где он настраивается, не знаю, поэтому время следует отсечь:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.N10Click(Sender: TObject);
var
  d: TDateTime;
begin
//Свободных мест на рейсе
 Form1.ADOQuery1.SQL.Clear();
 form1.ADOQuery1.SQL.Add('SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE');
 form1.ADOQuery1.Parameters.ParamByName('To').Value := DBLookupComboBox1.KeyValue;
 d := Trunc(MonthCalendar1.date);
 form1.ADOQuery1.Parameters.ParamByName('Date').Value := d;
 form1.ADOQuery1.Open;
end;
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 16:01  [ТС]
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Как в dbgrid6 отобразить результат запроса ADOQuery1?
Так ему нужен отельный датосорс?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 16:05
каждому dbgridу нужен отдельный датосорс, который и является, собственно, посредником между датастом и гридом.
В одном и том же гриде можно показывать разные датасеты, поменяв его у датосорса
0
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 16:36  [ТС]
Как мне отобразить результат запрос"Ведомость о водителях",если string to long

Delphi
1
2
3
4
5
6
procedure TForm1.N12Click(Sender: TObject);
begin
//ведомость о водителях
  form1.ADOQuery4.SQL.Clear();
  form1.ADOQuery4.SQL.Add('SELECT MAX(Водители.[ФИО водителя]) AS [ФИО водителя], MAX(Водители.[стаж вождения]) AS [стаж вождения], COUNT(Рейсы.[код водителя]) AS [количество рейсов] FROM Водители LEFT JOIN Рейсы ON Водители.[Код водителя] = Рейсы.[код водителя] GROUP BY Водители.[Код водителя] ORDER BY 1 ');
end;
Очень много букв в запросе и компилятор выдает ошибку.


А вот запрос о свободных местах заработал и отображаеться
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.N10Click(Sender: TObject);
var
  d: TDateTime;
begin
form2.ADOQuery1.Connection := form1.ADOConnection1;
 form2.DataSource6.DataSet:=form2.ADOQuery1;
//Свободных мест на рейсе
Form2.ADOQuery1.SQL.Clear();
 form2.ADOQuery1.SQL.Add('SELECT * FROM [Свободных мест на рейсе] WHERE [пункт назначения] = :TO AND [дата выезда] = :DATE');
 form2.ADOQuery1.Parameters.ParamByName('To').Value := form2.DBLookupComboBox1.KeyValue;
 d := Trunc(form2.MonthCalendar1.date);
 form2.ADOQuery1.Parameters.ParamByName('Date').Value := d;
 form2.ADOQuery1.Open;
 //Отображаем результаты запроса
 form2.ADOQuery1.Active:=true;
 form2.dbgrid7.DataSource:=form2.DataSource6;
 form2.DBnavigator7.DataSource:=form2.DataSource6;
   Form2.DBGrid7.Columns.Items[0].Width:=150;
   Form2.DBGrid7.Columns.Items[1].Width:=70;
  form2.Visible:=true;
end;
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 16:58
Лучший ответ Сообщение было отмечено scherbakovss201 как решение

Решение

Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Очень много букв в запросе
формируйте построчно
Delphi
1
2
3
4
5
form1.ADOQuery4.SQL.Add('SELECT MAX(Водители.[ФИО водителя]) AS [ФИО водителя],  ');
form1.ADOQuery4.SQL.Add('MAX(Водители.[стаж вождения]) AS [стаж вождения], '); 
form1.ADOQuery4.SQL.Add('COUNT(Рейсы.[код водителя]) AS [количество рейсов]  ');
form1.ADOQuery4.SQL.Add('FROM Водители LEFT JOIN Рейсы ON Водители.[Код водителя] = Рейсы.[код водителя] '); 
form1.ADOQuery4.SQL.Add('GROUP BY Водители.[Код водителя] ORDER BY 1 ');
1
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
04.05.2017, 17:09  [ТС]
Теперь все работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2017, 17:09

Как правильно суммировать время и дату Adoquery
Добрый вечер. Есть dbgrid datasource adoquery все между собой соединено. Так же имеется база (роль исполняет: текстовый файл...

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

Успеет ли мотоциклист прибыть в пункт назначения?
мотоциклист должен прибыть в город через T часов после выезда из пункта находящемуся на расстоянии S кем от города. Успеет ли он вовремя...

Ведомость наличия билетов на заданный пункт назначения
Исходная информация содержится в таблицах : «Маршруты» (номер рейса, выезда, пункт назначения, количество мест в автобусе, стоимость...

Структура AEROFLOT, поиск рейсов вылетающих в заданный пункт назначения
(На C++) Описать структуру с именем AEROFLOT, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru