Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199

Вывод данных по запросу SQL

02.08.2016, 18:43. Показов 1650. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи, всю голову сломал. Как написать код, проще чем я сделал. Он работает, но мне не нравится, получается большой.
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
procedure TForm_DislokaciuaVagonov.pgc1Change(Sender: TObject);
var
  Dislakaciua, Sobst_Arenda, Ne_Raspredelenka, Ne_RaspredelenkaSVR, Prostoi_PV, a, b, RP_NRP: Integer;
 
  AZR, ALM, BEL, VSB, GOR, ARM, JDUA, GRZ, DVS, DON, ZAB, ZKZ, ZSB, KAZ, KBSH, KRG, KLG, KRS, KRIM,
  LAT, LIT, LIV, MLD, EST, MSK, NET, ODS, OKT, PDN, PRV, SVR, SEV, SKV, TRK, UZB, UVS, UJN, UZP,
  UYR, Pusto, TDJ: Boolean;
 
  d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16,
  d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31, d32,
  d33, d34, d35, d36, d37, d38, d39, d40: string;
 
  Ne_Raspredelen, TekushuiRemont, DepovskoiRemont, Pereregistraciua: string;
 
  Data, Mesuc:TDateTime;
 
  NachaloMesuaca, KonecMesuaca: TDate;
 
  index, i, MesData: Integer;
 
  Month: Word; //Месяц
 
  VagRasprNoGU12, OjSoglZapr, Pereraspredelenie, SoglasUvedom, Otmena: string;
 
begin
  Ne_Raspredelen := 'Не распределен';
  TekushuiRemont := 'Текущий отцепочный ремонт';
  DepovskoiRemont := 'Деповской ремонт';
  Pereregistraciua := 'Перерегистрация';
 
  AZR := DataModule1.FDQuery_SotrudnikAZR.AsBoolean;
  ALM := DataModule1.FDQuery_SotrudnikALM.AsBoolean;
  BEL := DataModule1.FDQuery_SotrudnikBEL.AsBoolean;
  VSB := DataModule1.FDQuery_SotrudnikVSB.AsBoolean;
  GOR := DataModule1.FDQuery_SotrudnikGOR.AsBoolean;
  ARM := DataModule1.FDQuery_SotrudnikARM.AsBoolean;
  JDUA := DataModule1.FDQuery_SotrudnikJDUA.AsBoolean;
  GRZ := DataModule1.FDQuery_SotrudnikGRZ.AsBoolean;
  DVS := DataModule1.FDQuery_SotrudnikDVS.AsBoolean;
  DON := DataModule1.FDQuery_SotrudnikDON.AsBoolean;
  ZAB := DataModule1.FDQuery_SotrudnikZAB.AsBoolean;
  ZKZ := DataModule1.FDQuery_SotrudnikZKZ.AsBoolean;
  ZSB := DataModule1.FDQuery_SotrudnikZSB.AsBoolean;
  KAZ := DataModule1.FDQuery_SotrudnikKAZ.AsBoolean;
  KBSH := DataModule1.FDQuery_SotrudnikKBSH.AsBoolean;
  KRG := DataModule1.FDQuery_SotrudnikKRG.AsBoolean;
  KLG := DataModule1.FDQuery_SotrudnikKLG.AsBoolean;
  KRS := DataModule1.FDQuery_SotrudnikKRS.AsBoolean;
  KRIM := DataModule1.FDQuery_SotrudnikKRIM.AsBoolean;
  LAT := DataModule1.FDQuery_SotrudnikLAT.AsBoolean;
  LIT := DataModule1.FDQuery_SotrudnikLIT.AsBoolean;
  LIV := DataModule1.FDQuery_SotrudnikLIV.AsBoolean;
  MLD := DataModule1.FDQuery_SotrudnikMLD.AsBoolean;
  EST := DataModule1.FDQuery_SotrudnikEST.AsBoolean;
  MSK := DataModule1.FDQuery_SotrudnikMSK.AsBoolean;
  NET := DataModule1.FDQuery_SotrudnikNET.AsBoolean;
  ODS := DataModule1.FDQuery_SotrudnikODS.AsBoolean;
  OKT := DataModule1.FDQuery_SotrudnikOKT.AsBoolean;
  PDN := DataModule1.FDQuery_SotrudnikPDN.AsBoolean;
  PRV := DataModule1.FDQuery_SotrudnikPRV.AsBoolean;
  SVR := DataModule1.FDQuery_SotrudnikSVR.AsBoolean;
  SEV := DataModule1.FDQuery_SotrudnikSEV.AsBoolean;
  SKV := DataModule1.FDQuery_SotrudnikSKV.AsBoolean;
  TRK := DataModule1.FDQuery_SotrudnikTRK.AsBoolean;
  UZB := DataModule1.FDQuery_SotrudnikUZB.AsBoolean;
  UVS := DataModule1.FDQuery_SotrudnikUVS.AsBoolean;
  UJN := DataModule1.FDQuery_SotrudnikUJN.AsBoolean;
  UZP := DataModule1.FDQuery_SotrudnikUZP.AsBoolean;
  UYR := DataModule1.FDQuery_SotrudnikUYR.AsBoolean;
  Pusto := DataModule1.FDQuery_SotrudnikPusto.AsBoolean;
  TDJ := DataModule1.FDQuery_SotrudnikTDJ.AsBoolean;
 
  d0 := 'АЗР';
  d1 := 'АЛМ';
  d2 := 'БЕЛ';
  d3 := 'ВСБ';
  d4 := 'ГОР';
  d5 := 'ГРЗ';
  d6 := 'ДВС';
  d7 := 'ДОН';
  d8 := 'ЗАБ';
  d9 := 'ЗКЗ';
  d10 := 'ЗСБ';
  d11 := 'КАЗ';
  d12 := 'КБШ';
  d13 := 'КРГ';
  d14 := 'КЛГ';
  d15 := 'КРС';
  d16 := 'КРМ';
  d17 := 'ЛАТ';
  d18 := 'ЛИТ';
  d19 := 'ЛЬВ';
  d20 := 'МСК';
  d21 := 'НЕТ Д';
  d22 := 'ОДС';
  d23 := 'ОКТ';
  d24 := 'ПДН';
  d25 := 'ПРВ';
  d26 := 'СВР';
  d27 := 'СЕВ';
  d28 := 'СКВ';
  d29 := 'ТРК';
  d30 := 'УЗБ';
  d31 := 'ЮВС';
  d32 := 'ЮЖН';
  d33 := 'ЮЗП';
  d34 := 'ЮУР';
  d35 := '';
  d36 := 'ТДЖ';
  d37 := 'АЗР';
  d38 := 'ЖДЯ';
  d39 := 'МЛД';
  d40 := 'ЭСТ';
 
    //Елена
    if (DataModule1.FDQuery_SotrudnikFamiliua.AsString = StatusBar1.Panels[1].Text) and
      ((AZR = False) and (ALM = False) and (BEL = False) and (VSB = False) and (GOR = False) and (DVS = False) and (GRZ = False) and
      (DON = False) and (ZAB = False) and (ZKZ = False) and (ZSB = False) and (KAZ = False) and (KBSH = False) and (KRG = False) and
      (KLG = False) and (KRS = False) and (KRIM = False) and (LAT = False) and (LIT = False) and (LIV = False) and (MSK = False) and
      (OKT = False) and (NET = True) and (ODS = False) and (PDN = False) and (PRV = False) and (SVR = True) and (SEV = False) and
      (SKV = True) and (TRK = False) and (UZB = False) and (UVS = False) and (UJN = False) and (UZP = False) and (UYR = False) and
      (Pusto = True) and (TDJ = False))
    then
    begin
      with DataModule26.FDQuery_Prostoi_Dislokaciua do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM Table_Dislokaciua');
        SQL.Add('WHERE (Data_Poiska = (SELECT MAX(Data_Poiska)FROM Table_Dislokaciua)) AND  (Gruppa_Vagona = 0 OR Gruppa_Vagona = 1) AND (Prostoi > 72) and ((Doroga_ST_Gruz_Operaciua = '''+d21+''' OR Doroga_ST_Gruz_Operaciua= '''+d28+''' OR Doroga_ST_Gruz_Operaciua = '''+d35+''') OR (Doroga_Naznacheniua = '''+d21+''' OR Doroga_Naznacheniua= '''+d28+''' OR Doroga_Naznacheniua = '''+d35+''')) AND (Prichina_Prostoua is Null)');
        Open;
      end;
    end;
 
    //Сергей
    if (DataModule1.FDQuery_SotrudnikFamiliua.AsString = StatusBar1.Panels[1].Text) and
      ((AZR = False) and (ALM = False) and (BEL = False) and (VSB = False) and (GOR = False) and (DVS = True) and (GRZ = False) and
       (DON = False) and (ZAB = False) and (ZKZ = False) and (ZSB = False) and (KAZ = False) and (KBSH = False) and (KRG = False) and
       (KLG = False) and (KRS = False) and (KRIM = False) and (LAT = False) and (LIT = False) and (LIV = False) and (MSK = False) and
       (OKT = True) and (NET = True) and (ODS = False) and (PDN = False) and (PRV = False) and (SVR = True) and (SEV = False) and
       (SKV = False) and (TRK = False) and (UZB = False) and (UVS = False) and (UJN = False) and (UZP = False) and (UYR = False) and
       (Pusto = True) and (TDJ = False))
    then
    begin
      with DataModule26.FDQuery_Prostoi_Dislokaciua do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM Table_Dislokaciua');
        SQL.Add('WHERE (Data_Poiska = (SELECT MAX(Data_Poiska)FROM Table_Dislokaciua)) and (Gruppa_Vagona = 0 OR Gruppa_Vagona = 1) AND (Prostoi > 72) and ((Doroga_ST_Gruz_Operaciua = '''+d6+''' OR Doroga_ST_Gruz_Operaciua = '''+d21+''' OR Doroga_ST_Gruz_Operaciua = '''+d23+''' OR Doroga_ST_Gruz_Operaciua = '''+d35+''') AND (Doroga_Naznacheniua = '''+d6+''' OR Doroga_Naznacheniua = '''+d21+''' OR Doroga_Naznacheniua = '''+d23+''' OR Doroga_Naznacheniua = '''+d35+''')) AND (Prichina_Prostoua is Null)');
        Open;
      end;
    end;
 
    //Дмитрий
    if (DataModule1.FDQuery_SotrudnikFamiliua.AsString = StatusBar1.Panels[1].Text) and
      ((AZR = False) and (ALM = False) and (BEL = False) and (VSB = False) and (GOR = False) and (DVS = False) and (GRZ = False) and
       (DON = False) and (ZAB = False) and (ZKZ = False) and (ZSB = True) and (KAZ = False) and (KBSH = False) and (KRG = False) and
       (KLG = False) and (KRS = False) and (KRIM = False) and (LAT = False) and (LIT = False) and (LIV = False) and (MSK = False) and
       (OKT = False) and (NET = True) and (ODS = False) and (PDN = False) and (PRV = True) and (SVR = False) and (SEV = False) and
       (SKV = False) and (TRK = False) and (UZB = False) and (UVS = True) and (UJN = False) and (UZP = False) and (UYR = False) and
       (Pusto = True) and (TDJ = False))
    then
    begin
      with DataModule26.FDQuery_Prostoi_Dislokaciua do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM Table_Dislokaciua');
        SQL.Add('WHERE (Data_Poiska = (SELECT MAX(Data_Poiska)FROM Table_Dislokaciua)) and (Gruppa_Vagona = 0 OR Gruppa_Vagona = 1) AND (Prostoi > 72) and ((Doroga_ST_Gruz_Operaciua = '''+d10+''' OR Doroga_ST_Gruz_Operaciua = '''+d21+''' OR Doroga_ST_Gruz_Operaciua = '''+d25+''' OR Doroga_ST_Gruz_Operaciua = '''+d31+''' OR Doroga_ST_Gruz_Operaciua = '''+d35+''') AND (Doroga_Naznacheniua = '''+d10+''' OR Doroga_Naznacheniua = '''+d21+''' OR Doroga_Naznacheniua = '''+d25+''' OR Doroga_Naznacheniua = '''+d31+''' OR Doroga_Naznacheniua = '''+d35+''')) AND (Prichina_Prostoua is Null)');
        Open;
      end;
    end;
 
  Prostoi_PV := dbgrd5.DataSource.DataSet.RecordCount;
  StatusBar1.Panels[3].Text := IntToStr(Prostoi_PV);
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2016, 18:43
Ответы с готовыми решениями:

Sql запросы / вывод данных
нужно вывести макс и мин по цене. все отлично выводится, но помимо того, что макс и мин выводятся в edit1 и edit2, также изменяется...

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

Вывод данных из базы sql в label
Доброго времени суток! Помогите пожалуйста реализовать вывод данных из БД MS SQL Server 2008. На форме есть DBLookupCombobox и 7...

21
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 21
10.08.2016, 21:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от kabachok Посмотреть сообщение
как сделать так, чтобы данные из таблице 2, столбец "Doroga_Naznaceniua" соответствовали данным из таблице 1, столбец "Doroga",
давайте все еще упрощать...
для поиска элементов в таблице и для связи таблиц между собой используются ключевые поля
чаще всего ID integer/int64/bigint autoincrement
тогда
SQL
1
SELECT ..... FROM table1 t1 LEFT JOIN table2 t2 ON (t2.master_id=t1.id)
а чтобы разобраться в вашей базе, нужно знать предметную область...

ну и возвращаясь к заданному вопросу - как сделать - заполнять таблицу теми значениями, которые есть в таблице-справочнике
а потом по этим значениям делать join
1
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
10.08.2016, 23:22  [ТС]
Мой вопрос решен. Спасибо кто помогал. Нужно было просто объединить три таблицы БД, с помощью SQL запроса
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (PageControl2.ActivePageIndex = 3) then
  begin
    with DataModule25.FDQuery_KururovanueDorog_Ne_Raspredelenka do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT KururovanueDorog_Table.*, OrganRaboti_Table.*, DislogVagonTAUS_Table.*');
      SQL.Add('FROM KururovanueDorog_Table');
      SQL.Add('JOIN DislogVagonTAUS_Table ON KururovanueDorog_Table.Doroga = DislogVagonTAUS_Table.Doroga_Naznaceniua');
      SQL.Add('JOIN OrganRaboti_Table ON DislogVagonTAUS_Table.Nomer_Vagona = OrganRaboti_Table.Nomer_Vagona');
      SQL.Add('WHERE (Data_Pouska = (SELECT MAX(Data_Pouska)FROM DislogVagonTAUS_Table)) AND  (Nomer_Gruppa = 1 OR Nomer_Gruppa = 2) and');
      SQL.Add('(Plan_Pogruzki = '''+'Не распределен'+''') and (Sotrudnik = '''+StatusBar1.Panels[1].Text+''')');
      Open;
    end;
 end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2016, 23:22

Выделение строк DBGridEh по SQL запросу
Добрый день, перелистал кучу подобных тем на этом и сторонних ресурсах, господа которые шарят, говорят что надо использовать метод...

Delphi and SQL (объединение таблиц и вывод данных)
Доброго времени суток! Дорогие форумчане, помогите пожалуйста с проектом. Делаю программу по составлению расписания учебно-вычислительного...

Вывод по запросу
Есть бд, выводится в dbgrid. Таблица содержит Ф. И. О. например там 10 человек, 2 из которых Ивановых. Я набираю, например в edit1...

Вывод данных обработки запросов SQL во внешний файл и на печать
Не могли бы вы помочь мне с этим заданием: Необходимо выводить данные обработки запросов SQL во внешний файл и на печать. Добавлено...

Вывод данных связанных таблиц в одном DBGrid и без SQL
БД - access Кинул компоненты на DataModule, ADOConnection, ADOTable, DataSource ... Связал таблицы через MasterSource и Masterfield ...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru