Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
1

ADOTable: поиск через 2 Edit-a

24.05.2017, 19:41. Просмотров 1653. Ответов 57

Доброго времени суток. Столкнулся с очень неприятной ситуацией. В общем у меня есть две формы. На первой форме у меня DBGrid с номером, названием поезда. Вторая форма открывает расписание этого поезда через вот такую процедурку

Delphi
1
2
3
4
5
6
7
if Form2.ADOTable1.TableName=Form1.DBGrid1.DataSource.DataSet.Fields.Fields[i].Value then
      begin
        Form2.Label1.Caption:='Поезд №105 Киев - Одесса';
        Form2.DataSource1.DataSet:=Form2.ADOTable1;
        Form2.ADOTable1.Active:=true;
        Form2.ShowModal;
      end
Так вот мне нужно чтобы при вводе в Edit1 и Edit2 станций отправления и прибытия в DBGrid на первой форме остались только те поезда (строки), в расписании которых (ADOTable) есть эти значения (из Edit1 и Edit2 по порядку).
ADOQuery использовать не получается, потому что у меня в процедуре сравнивается текст ячейки с названием таблицы. Огромнейшее спасибо, кто откликнется!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2017, 19:41
Ответы с готовыми решениями:

Поиск в DBGrid через Edit
Всем привет, и снова нужна помощь... У меня есть формы, возьмем к примеру одну...

Поиск в dbgrid через 2 edit-а
В общем, у меня есть форма, на ней dbgrid, где записаны пациенты, их...

сравнение edit и adotable
Здравствуйте! У меня на форме есть 2 таблицы: приход и состояние склада....

Access БД. Поиск по таблице через Edit
Ребята, подскажите, какой нужно вписать код в Edit, чтобы осуществить поиск по...

Поиск в базе данных Access через Edit
Здравствуйте. Тут возникла проблемка у меня, подскажите пожалуйста: Вот код...

57
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
31.05.2017, 20:53 41
Странно все это, никак не согласуется с
я в 2016 делал
Ладно, пойдем другим путем. Вы можете прикрепить сюда скрин вкладки Поставщик данных для AdoDB, по аналогии моего?
0
Миниатюры
ADOTable: поиск через 2 Edit-a  
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
31.05.2017, 21:28  [ТС] 42
Пытливый, я вот пытаюсь установить с сайта майкрософт провайдера, но не получается

Добавлено через 7 минут
Пытливый, все, база заработала!!))

Добавлено через 30 секунд
Пытливый, правда не выдает мне нужные поезда при отборе станций
0
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
31.05.2017, 21:31  [ТС] 43
Пытливый, в общем вот, отбираю поезда, но они не выводятся
0
Миниатюры
ADOTable: поиск через 2 Edit-a  
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
31.05.2017, 21:34  [ТС] 44
Пытливый, а базу подключил таким образом, поставил себе провайдера "Microsoft.ACE.OLEDB.12.0" по 32-разрядную версию офиса, хотя у меня 64 разрядная Office16 (работает только такой вариант), если кому интересно
0
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
01.06.2017, 05:41 45
Не ищет, потому-что я там накосячил с запросом.
Надо для qTrain такой запрос сделать:
SQL
1
2
3
SELECT * FROM Поезд
WHERE КодПоезда IN (
SELECT КодПоезда FROM Расписание WHERE КодПоезда IN (SELECT КодПоезда FROM Расписание WHERE КодСтанции LIKE :КодСтанцииОтправления) AND КодСтанции LIKE :КодСтанцииПрибытия)
0
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
01.06.2017, 16:37  [ТС] 46
Пытливый, ооо здорово, все работает)) мне еще надо бы как-то организовать покупку билета по категории вагона..
В общем допустим мне нужно в пт 9 июня поехать с Киева до Фастова на 111 поезде. Нужно применить коэффициенты: дня недели, календарного периода, индексации с 1.10.2014. Для этого берем данные из тарифного расстояния (64 км), и применяем коэффициенты (+коэф фирменности на поезд на плацкарту). Тариф состоит ииз стоимости билета и плацкарты.
0
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
02.06.2017, 13:10 47
Ничего из этого, кроме вагона, у вас в БД нет. Добавьте нужные таблицы в структуру БД и покажите что получилось.
0
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
04.06.2017, 15:22 48
Затянула меня эта задачка. Построить рабочую модель БД оказалось довольно интересно. И вот что у меня получилось в итоге:
0
Миниатюры
ADOTable: поиск через 2 Edit-a  
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
05.06.2017, 20:26  [ТС] 49
Пытливый, очень интересно) правда расчет самой стоимости не до конца понимаю
0
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
05.06.2017, 21:19 50
Расчет идет так. Допустим нам надо получить стоимость проезда из КИЇВ-ПАСАЖИРСЬКИЙ в МЕЛІТОПОЛЬ в плацкартном вагоне. Находим по маршруту поезд который удовлетворяет этому условию - 012К и выбираем из состава этого поезда плацкартный вагон. Теперь надо узнать расстояние между станциями, тут нам нужен маршрут, посчитав получаем - 770 км. Получив все эти данные мы можем посчитать стоимость проезда. (Тарифы и цены я взял с потолка, их можно уточнить, но общий порядок расчета я думаю будет тот-же)
Стоимость 1 км пути возьмем = 2.5 руб.
Тариф для поезда 012К = 1.6
Тариф за класс вагона = 1.7
770 * 2.5 * 1.6 * 1.7 = 5236 руб.
Естественно все это считается автоматом по выбранным параметрам при покупке билета.
0
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
05.06.2017, 23:03  [ТС] 51
Пытливый, а в чем ты БД делал?

Добавлено через 26 минут
Пытливый, Чтобы рассчитать стоимость билета нужно проделать несколько манипуляций. Допустим нам нужно высчитать стоимость проезда на поезд №719 Винница - Харьков с Фастова до Киева (64 км) 09.06.2017 года в вагон сидячий второго класса (в тарифной сетке помечен как плацкарт).
Для этого нужно понимать схему расчета: Стоимость проезда : Тариф+ПДВ+Комиссионный сбор+Страховой сбор+Постельное белье(можно отказаться)+2 чая (1 чай входит в стоимость).
Тариф=Билет + Плацкарта
Билет=9,81 грн (данные из тарифной сетки)*1,1(коэффициент индексации с 01.10.2014)*1,1(коэффициент дня недели пятницы)*1,07(коэффициент календарного периода - 09.06.2017)*1,6(коэффициент поезда Интерсити(ИС))
Плацкарта=8,55 грн (данные из тарифной сетки)*1,1(коэффициент индексации с 01.10.2014)*1,1(коэффициент дня недели пятницы)*1,07(коэффициент календарного периода - 09.06.2017)*1,6(коэффициент поезда Интерсити(ИС))*3,5(коэффициент фирменности)
Далее считаем отдельно ПДВ и Страховой сбор на Билет и на Плацкарту.
ПДВб=20%*Билет
ПДВпл=20%*Плацкарта
Стр.б.=0,17%*Билет
Стр.пл=0,17%*Плацкарта
Комиссионный сбор не взимается, если (Тариф <2*Комиссионный сбор) и он равен 16 грн. (в кассе)
Купить чай и постель в этот поезд невозможно, поэтому имеем финальную стоимость:
Билет=9,81*1,1*1,1*1,07*1,6=20,32 грн.
Плацкарта=8,55*1,1*1,1*1,07*1,6*3,5=71,13 грн.
Тариф=20,32+71,13=91,45 грн.
Комиссионный сбор взимается.
ПДВб=20%*20,32=4,06 грн.
ПДВпл=20%*71,13=14,23 грн.
ПДВ=4,06+14,23=18,29 грн.
Стр.б=0,17*20,32=0,03 грн.
Стр.пл=0,17*71,13=0,12грн.
Стр.=0,03+0,12=0,15 грн.
Стоимость=91,45+16+18,29+0,15=125,89 грн.
0
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
05.06.2017, 23:40 52
БД я сделал в Акцесе, я только для лучшей совместимости сделал откат на версию 2003 года - mdb. Схема сделана средствами MS SQL, куда я экспортировал структуру БД.
Вы серьезно собираетесь все это реализовать? Тогда возникает вопрос, насколько нужна такая реальная схема расчета? Для курсовой или дипломной задачи упрощенной схемы расчета хватит с избытком.
0
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
06.06.2017, 14:09  [ТС] 53
Пытливый, это довольно интересно и познавательно. Просто стоимость проезда на онлайн-букинге и в кассе отличаются.. И мне интересно было бы написать для себя(и не только) приложение, которое высчитывало бы стоимость проезда на тот или иной поезд
0
qwertehok
06.06.2017, 14:15
  #54

Не по теме:

ставите Delphi Starter + SQlite и пишите по
неделю на написание, потом тестирование и доработка
это если локальная версия

0
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,120
06.06.2017, 14:50 55
И мне интересно было бы написать для себя(и не только) приложение, которое высчитывало бы стоимость проезда на тот или иной поезд
Это будет разовое решение. А что вы будете делать при смене сезона, когда меняются составы, тарифы?
Одно дело, написать достаточно достоверную имитацию и совсем другое сделать реальное приложение.
0
Andrey19951
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 28
06.06.2017, 14:56  [ТС] 56
Пытливый, тарифы меняются не очень часто.. с 2014 года пока ничего не изменилось.. разве что коэффициенты некоторые
0
qwertehok
2324 / 2225 / 606
Регистрация: 29.08.2013
Сообщений: 14,913
06.06.2017, 18:54 57
да и предусмотреть смену всего этого дела можно
главное что бы данные были и что бы не изменились формулы расчета
но формулы можно в SQL загнать и там хранить, ну и менять когда нужно
0
ivyl
15.07.2017, 09:49     ADOTable: поиск через 2 Edit-a
  #58

Не по теме:

С 2014 года УЗ уже дважды подняла цены. А расписание меняется ежегодно, в мае.

0
15.07.2017, 09:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2017, 09:49
Привет! Вот еще темы с ответами:

Поиск в базе данных Access через Edit
Прочитал до этого созданные темы перепробовал по разному, но у меня всё равно...

Поиск в DBGrid по каждому столбцу через единственный Edit
Добрый день, прошу помочь с одной задачкой. Мне нужно чтобы при вводе текста в...

добавление записей в цикле из edit (adotable, access)
Здравствуйте! Есть форма для ввода пользователем учебных предметов. Сначала...


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

Или воспользуйтесь поиском по форуму:
58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru