Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78

Внесение данных в таблицу DBGridEh

19.04.2016, 09:42. Показов 2422. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Не могу разобраться с многообразием этой библиотеки. Как заполнить таблицу, представленную на рисунке сверху? Данные сформированы запросом и отображены в нижней таблице на рисунке. Можно ли заполнять эту таблицу используя данные из разных запросов? Получается по отдельности формировать необходимые данные запросами для верхней таблицы, но как их свести в одну не понимаю.
Миниатюры
Внесение данных в таблицу DBGridEh  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.04.2016, 09:42
Ответы с готовыми решениями:

внесение данных в таблицу
необходимо ввести данные в таблицу...немогу внести выдаёт ошибку Parametr in_number not found вот код ...

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

Внесение данных в таблицу ADODB
Здравствуйте,уважаемые! Подскажите,пожалуйста,почему вносит только числовые значения?а текст напрочь отказывается...:-( Вот код на...

30
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
20.04.2016, 07:04  [ТС]
Студворк — интернет-сервис помощи студентам
По поводу печати отчетов, это тоже нужно будет, но это уже другая история, с которой ещё предстоит разбираться...

Добавлено через 21 минуту
Все получилось, ОГОРОМНОЕ СПАСИБО Krapotkin окончательный код выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT  Gym.Name_gym, (SELECT SUM(A.Kol_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym) AS [Kol_abonement],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Total_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym) AS [Total_abonement],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.cost) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym) AS [Cost],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Kol_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=1) AS [Kol_LPU],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Total_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=1) AS [Total_LPU],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.cost) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=1) AS [Cost_LPU],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Kol_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=2) AS [Kol_Pens],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Total_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=2) AS [Total_Pens],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.cost) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=2) AS [Cost_Pens],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Kol_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=4) AS [Kol_stor],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Total_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=4) AS [Total_stor],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.cost) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=4) AS [Cost_stor],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Kol_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=5) AS [Kol_det],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.Total_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=5) AS [Total_det],');
  ADOQuery1.SQL.Add('(SELECT SUM(A.cost) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.User_abonement=5) AS [Cost_det]');
  ADOQuery1.SQL.Add('FROM gym');
   ADOQuery1.Active:=True;
Теперь нужно подумать как сделать, чтобы по дате можно было фильтровать данные...
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
20.04.2016, 07:13
не поверишь )))
в раздел Where добавить еще условие...
0
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
20.04.2016, 10:59  [ТС]
Я так и подумал

Добавлено через 3 часа 28 минут
Внесение даты в таблицу Abonement производится с помощью MaskEdit, не получается сделать отбор по дате

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
var d:integer;
     b:string;
begin
d:=ComboBox1.ItemIndex;
case d of
  1: b:='  .01.2016';
  2: b:='  .02.2016';
  3: b:='  .03.2016';
  4: b:='  .04.2016';
end;
 
  ADOQuery3.SQL.Clear;
  ADOQuery3.SQL.Add('SELECT  Gym.Name_gym, (SELECT SUM(A.Kol_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.Data_abonement='+quotedstr(b)+') AS [Kol_abonement],');
  ADOQuery3.SQL.Add('(SELECT SUM(A.Total_abonement) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.Data_abonement='+quotedstr(b)+') AS [Total_abonement],');
  ADOQuery3.SQL.Add('(SELECT SUM(A.cost) FROM Abonement A WHERE A.Gym_abonement=gym.id_gym AND A.Data_abonement='+quotedstr(b)+') AS [Cost],');
попытка выполнить процедуру выдает не соответствие типов данных

Добавлено через 9 минут
Вопрос по не соответствию снимается.

Зато другой вопрос: я вношу дату н-р: 01.01.2016, а отбор нужно сделать по месяцам, я себе это представляю так: *.01.2016, но так не получается.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
20.04.2016, 11:48
гыы)))
бд себе это как-то не так представляет:
(поле_даты>='01.03.2016')and(поле_даты<' 01.04.2016')
0
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
20.04.2016, 12:47  [ТС]
Не получается, тип в БД какой должен быть у этого поля? Если ставить текстовый, то он находит только конкретную запись, а знак >= не обрабатывает.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
20.04.2016, 15:07
интересно, какой тип данных может быть у даты?
дата

а как сравнивать с датами, нужно смотреть доки по вашей БД
0
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
20.04.2016, 21:15  [ТС]
БД сделана в MS Access. Пытаюсь разобрать на простом примере, таблица в режиме конструктор на рисунке.

Текст процедуры:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
var i:integer;
    d,b:shortstring;
begin
i:=ComboBox1.ItemIndex;
case i of
  0: begin d:='#1/1/2016#' ; b:='#1/31/2016#'; end;
  1: begin d:='#2/1/2016#' ; b:='#2/29/2016#'; end;
  2: begin d:='#3/1/2016#' ; b:='#3/31/2016#'; end;
  3: begin d:='#4/1/2016#' ; b:='#4/30/2016#'; end;
end;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT *');
  ADOQuery1.SQL.Add('FROM student');
  //ADOQuery1.SQL.Add('WHERE student.Data_student Between #1/1/2016# And #1/31/2016#');
  ADOQuery1.SQL.Add('WHERE student.Data_student Between '+quotedstr(d)+' and '+quotedstr(b)+'');
  ADOQuery1.Active:=True;
end;
вот здесь не пойму что за проблема, за комментированная строка выдает диапазон дат, но если я пытаюсь записать ту же самую строку с помощью '+quotedstr()+', то уже не работает.
Миниатюры
Внесение данных в таблицу DBGridEh  
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
20.04.2016, 21:38
судя по всему в аксессе нужно без апострофов, вот и все
документация говорит, что Between в аксессе инклюзивный, так что нужно правильно задавать даты
я бы лучше воспользовался явным
SQL
1
myDate >= #04/01/2009# AND myDate < #02/01/2009#
0
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
20.04.2016, 21:53  [ТС]
Работает как с between ,так и по предложенному Вами способу. Проблема с Quotedstr
В case присваиваю переменным значения дат и потом подставляю их в текст sql-запроса и не работает
Delphi
1
2
3
case i of
  0: begin d:='#1/1/2016#' ; b:='#1/31/2016#'; end;
  end;
Delphi
1
ADOQuery1.SQL.Add('WHERE Data_student>='+quotedstr(d)+' And Data_student<'+quotedstr(b)+'');
переменные d,b:string

Добавлено через 2 минуты
Как вариант в этом же case можно полностью дублировать весь текст запроса, меняя лишь диапазон дат, но тогда код получится совсем огромный, применительно к таблице abonement. )
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
20.04.2016, 21:55
Лучший ответ Сообщение было отмечено Николай Спешил как решение

Решение

я и спрашиваю, зачем quotedstr?
'aaa'+quotedStr(b)+'ccc' ==== 'aaa '''+b+'''ccc'
в этом диалекте SQL дата - не строка. её не нужно выделять апострофами...
ADOQuery1.SQL.Add('WHERE Data_student>='+d+' And Data_student<'+b+'');
1
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
20.04.2016, 22:00  [ТС]
кроме quotedstr не знаю альтернативу.

Добавлено через 1 минуту
ну наконец-то целый день и вечер убил на эти даты
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.04.2016, 22:00
Помогаю со студенческими работами здесь

Внесение данных в таблицу через форму
Ситуация такая: есть две таблицы, &quot;персоны и работа&quot; в одной список сотрудников, в другой столбец фамилия связан с этой таблицей и можно...

Внесение данных UserForm1 в таблицу Excel
Друзья, выручите меня, пожалуйста. Помогите преодолеть собственное бессилие. Итак, хочу автоматизировать процесс внесения данных в...

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

Внесение данных из textBox в таблицу MySQL
При внесении данных из текстового поля в таблицу - в таблице отображается &quot;???&quot; Текст пишу на русском, если писать на английском - все...

Внесение данных из textBox в таблицу MySQL
При внесении данных из текстового поля в таблицу - в таблице отображается &quot;???&quot; Текст пишу на русском, если писать на английском -...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru