Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 09.08.2010
Сообщений: 16

Вывод в таблицу или StringGrid или DbGrid?

19.02.2012, 01:36. Показов 2465. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемы эксперты, помогите разобраться.

Имеется БД в ней две таблицы:

1. Sotrudnik (id,FIO,otdel)
id - идентификатор сотрудника
FIO - Фамилия, Имя, Отчетсво
otd- Отдел

2. Vremya (id_sotr, dat,tbegin,tend)
id_sotr - Идентификатор сотрудника
dat - дата когда сотрудник работал
tbegin - начало времени его работы
tend - конец времени его работы

Название: 1.png
Просмотров: 388

Размер: 2.8 Кб

Скажите, как вывести эти данные вот в таком виде:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2012, 01:36
Ответы с готовыми решениями:

DBgrid или StringGrid нужен совет
Здравствуйте. Собсно задача у меня такая: Нужно выбирать группу студентов, выбирать самих студентов, отмечать их как отсутствующих, а тем...

DBGrid или StringGrid, что лучше
Пишу курсовой проект на Delphi. Базу данных. Выполнил большую часть работы. В проекте пользовался DBGrid. Таблицы создавал в Access. ...

Что лучше StringGrid или DBGrid ???
Есть устройства у которых есть несколько параметров. Надо это все записать в таблицу. Раньше работал только с ListBox и ComboBox. Их...

9
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
19.02.2012, 11:51
Если действительно нужен конкретный совет, сообщите СУБД
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
19.02.2012, 12:50
Access
0
0 / 0 / 0
Регистрация: 09.08.2010
Сообщений: 16
19.02.2012, 23:37  [ТС]
mysql бд

Добавлено через 3 часа 33 минуты
помогите плиз, разобраться, уже даже и не знаю что делать!
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
19.02.2012, 23:44
ну попробуй dbgrid
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
20.02.2012, 03:03
Есть такое понятие как транспонирование. Во всех пром СУБД за это отвечает оператор PIVOT. В MySQL PIVOT отсутствует. Так что как следствие из выше сказанного. Пишите хранимку которая развернет ваши данные как надо и вернет набором данных.
0
0 / 0 / 0
Регистрация: 09.08.2010
Сообщений: 16
20.02.2012, 07:40  [ТС]
а можно примерчик? сам ток немного с мускулом знаком. хочу разобраться!
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
20.02.2012, 09:44
Ну вот я вам дам как пример процедуру из моего проекта. Вы думаете она вам поможет?
Без знания архитектуры системы и того как построена БД?
Мне конечно не жалко, но есть подозрение что не поможет. А только запутает. Вы же не будете знать какого вида таблицы с которых строятся выборки и какого рода преобразования выполняются.
SQL
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
CREATE DEFINER = 'root'@'%'
PROCEDURE naumeter_db.GetMonitorData(IN FromDT DATE, IN ToDT DATE)
BEGIN
  DECLARE TABLENAME VARCHAR(100);
  DECLARE HEADER TEXT;
  DECLARE BODY TEXT;
  DECLARE FIELDNAME VARCHAR(10);
  DECLARE S_FIELDS TEXT;
  DECLARE DIFF INT;
  DECLARE I INT;
  DECLARE DONE INT DEFAULT 0;
 
  DECLARE vLDATE DATE;
  DECLARE vUID INT;
  DECLARE vTR DOUBLE(15,2);
  DECLARE vDAYCNT INT;
  DECLARE vNCH INT;
  DECLARE MonData CURSOR FOR
    SELECT t.LDATE, u.User_ID, t.TRAF FROM users u LEFT JOIN 
          (SELECT 
            STR_TO_DATE(DATE_FORMAT(sc.Date_Of_Log,'%d.%m.%Y'),'%d.%m.%Y') AS LDATE,
            sc.User_ID, 
            (SUM(sc.Traf_In)/1024 + SUM(sc.Traf_Out)/1024) AS TRAF 
          FROM stat_cfos sc 
          WHERE sc.Date_of_log BETWEEN CONCAT(FromDT,' 00:00:00') AND CONCAT(ToDT,' 23:59:59')
          AND sc.Process_Ex NOT LIKE '%otal%'
          AND !ISNULL(sc.User_ID)
          GROUP BY STR_TO_DATE(DATE_FORMAT(sc.Date_Of_Log,'%d.%m.%Y'),'%d.%m.%Y'), sc.User_ID) t ON t.User_ID=u.User_ID
          ORDER BY t.LDATE;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 
  SELECT DATEDIFF(ToDT,FromDT) INTO DIFF;
 
  SELECT MD5(CONCAT(ToDT,FromDT,NOW())) INTO TABLENAME;
  INSERT INTO logtbl(MSG,LDATE) VALUES(TABLENAME,NOW());
 
  SET HEADER := CONCAT('CREATE TEMPORARY TABLE IF NOT EXISTS `',TABLENAME,'`(ID INT(11) NOT NULL AUTO_INCREMENT, DAYCNT INT DEFAULT 0,
                    UID INT DEFAULT 0,
                    UIN VARCHAR(150) DEFAULT NULL,
                    NCHECK INT DEFAULT 0,');
  SET BODY := '';
  SET S_FIELDS := '';
  SET I := 0;
  REPEAT
    SELECT DATE_FORMAT(FromDT + INTERVAL I DAY,'%d.%m.%Y') INTO FIELDNAME;
    SET BODY := CONCAT(BODY,'`',FIELDNAME,'` DOUBLE(15,2) DEFAULT NULL,');
    SET I := I + 1;
  UNTIL I > DIFF END REPEAT;
  SET @BODY := CONCAT(HEADER,BODY,' PRIMARY KEY (ID)) ENGINE = INNODB;');
 
  PREPARE m_query FROM @BODY;
  EXECUTE m_query;
  DEALLOCATE PREPARE m_query;
 
  SET @INS := CONCAT('INSERT INTO `',TABLENAME,'`(UID,UIN)
    SELECT DISTINCT(u.User_ID),concat(c.CName ," -> ",s.sname," -> ",u.uname," ") AS Ship_User 
    FROM  ship s, users u, company c
      WHERE s.ID = u.ShipID 
      AND c.ID = s.CompanyID
       ORDER BY concat(c.CName ," -> ",s.sname," -> ",u.uname," "), User_ID');
 
  PREPARE i_query FROM @INS;
  EXECUTE i_query;
  DEALLOCATE PREPARE i_query;
  OPEN MonData;
  REPEAT
    IF NOT DONE THEN
      FETCH MonData INTO vLDATE, vUID, vTR;
      IF NOT ISNULL(vLDATE) THEN
        SET @UPD := CONCAT('UPDATE `',TABLENAME,'` SET `',DATE_FORMAT(vLDATE,'%d.%m.%Y'),'` = ',ROUND(vTR,2),' WHERE UID = \'',vUID,'\'');
 
        PREPARE u_query FROM @UPD;
        EXECUTE u_query;
        DEALLOCATE PREPARE u_query;
    
        SELECT COUNT(DISTINCT STR_TO_DATE(DATE_FORMAT(sc.Date_Of_Log,'%d.%m.%Y'),'%d.%m.%Y')) INTO vDAYCNT
        FROM stat_cfos sc 
        WHERE sc.Date_of_log BETWEEN CONCAT(FromDT,' 00:00:00') AND CONCAT(ToDT,' 23:59:59')
        AND sc.Process_Ex NOT LIKE '%otal%'
        AND sc.User_ID = vUID;
        IF ISNULL(vDAYCNT) THEN SET vDAYCNT := 0; END IF;
      ELSE 
        SET vDAYCNT := 0;
      END IF;
    SET vNCH := 0;
    CALL GetUnCheckedCount(vUID,ToDT,@UNCNT);
      SELECT @UNCNT INTO vNCH;
    
    SET @UPD := CONCAT('UPDATE `',TABLENAME,'` SET DAYCNT = ', vDAYCNT,', NCHECK = ',vNCH,' WHERE UID = ',vUID,';');
    PREPARE u_query FROM @UPD;
    EXECUTE u_query;
    DEALLOCATE PREPARE u_query;
    END IF;
  UNTIL DONE END REPEAT;
  CLOSE MonData;
 
     SET @SEL := CONCAT('SELECT * FROM `',TABLENAME,'` ORDER BY DAYCNT DESC, UIN ASC, UID ASC');
 
  PREPARE s_query FROM @SEL;
  EXECUTE s_query;
  DEALLOCATE PREPARE s_query;
 
END
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
20.02.2012, 11:20
Насколько я понял, сабж касается учета отработанного времени, а именно табелирования. (Если так, то у Вас не хватает в базе самого табеля и его основы - типовых графиков. Когда они появятся, вопрос отпадет само собой, т.к. всю интересующую Вас информацию можно будет вытащить из табелей, представив интервал работы как два времени-времени начала (из графика) и времени начала+кол-во отработанного времени (из табеля)
Как делать - тут не объяснишь если Вы не имеете представления. Совет простой - посмотрите какую-нибудь из "брэндовых" программ (погуглите на тепу "Программа учета рабочего времени") либо пообщайтесь с сотрудниками отдела кадров (за неимением такого с менеджером, отвечающим за учет и начисление зарплаты)
1
0 / 0 / 0
Регистрация: 09.08.2010
Сообщений: 16
20.02.2012, 21:28  [ТС]
rdama, согласен с вамм, а чего посоветуете начать?

Добавлено через 4 минуты
MsGuns, да, а можно было бы чуть подробнее, хотел бы до конца разобраться. ) не.могу себе простить, когда очевидного не знаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2012, 21:28
Помогаю со студенческими работами здесь

Из ListBox в DbGrid (или таблицу)
здравствуйте! 1) можно ли перенести все строки из листбокса в поле таблицы(выпадающее)? 2) вот я делаю так ...

Ввод строки и столбца в Edit, для закрашивания StringGrid или dbGrid
Здравствуйте! Подскажите, как сделать, чтоб вводя в Edit1 номер сторки, а в Edit2 номер столбца закрашивалась определенная ячейка...

Выделение и перенос выделенных строк из DBGrid в memo или StringGrid c дальнейшем построением отчёта
Добрый день всем! Имеется DBGrid c записями,необходимо: 1) Выделять записи в гриде, с помощью ctr+мышка и как то подсвечивать...

Как поставить кнопку (или любой другой компонент) в таблицу DBGrid
Как поставить кнопку (или любой другой компонент) в таблицу DBGrid ? у меня есть такой код, он красит ячейки таблицы void __fastcall...

Вывод на печать содержимого stringrid или dbgrid
Здравствуйте.Как можно вывести на печать содержимое stringrid или dbgrid, а в частности adotable???


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru