powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Насчет свойств формирования SQL запроса
14 сообщений из 64, страница 3 из 3
Насчет свойств формирования SQL запроса
    #39558647
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterДля этого сделали подсистему, которая умеет строить список доступных для пользователя отчетов, брать текст SQL запроса из БД, при наличии параметров - строить форму для их ввода, выводить результаты в сетку и экспортировать при необходимости куда нужно. Весь код (подсистемы) влез в пару экранов + 1 dfm (форма с PageControl) - все делается с помощью динамически создаваемых Query. Вся работа по поддержке - написать запрос и внести его в специальную табличку вместо постоянной возьни в IDE с настройками в design-time. Как-то так.Тоже такая фигня есть. Но в отчете может быть несколько запросов, в виде иерархии со связанными полями для организации мастер-деталь, выводятся в cxGrid с уровнями. Можно нарисовать отчет в FastReport на этих же запросах, и сохранить в отчете. Потом ещё был допилен показ на внутреннем сайте.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558665
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, мой вариант лучше такого:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=('INSERT INTO gryz (ooo_g, ati_g, Kontact_g, Telephone_g,' +
                          ' data_sv_g, cposob_opl_g, data_zag_g, data_vig_g, kakoy_gryz_g,' +
                          ' kyzov_g, ton_ob_g,tip_zagr_vigr_g, stavka_g,adres_zag_g, adres_vig_g,dopoln_g)' +
                          'VALUES (:OOO_g, :ati_g, :Kontact_g, :Telephone_g,' +
                          ' :data_sv_g, :cposob_opl_g, :data_zag_g, :data_vig_g, :kakoy_gryz_g,' +
                          ' :kyzov_g, :ton_ob_g, :tip_zagr_vigr_g, :stavka_g, :adres_zag_g, :adres_vig_g,:dopoln_g);');
ADOQuery1.Parameters.ParamByName('ooo_g').Value:=(DBEdit1.Text);
ADOQuery1.Parameters.ParamByName('ati_g').Value:=(DBEdit2.Text);
ADOQuery1.Parameters.ParamByName('Kontact_g').Value:=(DBEdit3.Text);
ADOQuery1.Parameters.ParamByName('Telephone_g').Value:=(DBEdit4.text);
ADOQuery1.Parameters.ParamByName('data_sv_g').Value:=(DBEdit12.Text);
ADOQuery1.Parameters.ParamByName('cposob_opl_g').Value:=(DBMemo1.Text);
ADOQuery1.Parameters.ParamByName('data_zag_g').Value:=(DBEdit10.text);
ADOQuery1.Parameters.ParamByName('data_vig_g').Value:=(DBEdit11.Text);
ADOQuery1.Parameters.ParamByName('kakoy_gryz_g').Value:=(DBEdit6.text);
ADOQuery1.Parameters.ParamByName('kyzov_g').Value:=(DBEdit5.text);
ADOQuery1.Parameters.ParamByName('ton_ob_g').Value:=(DBEdit7.Text);
ADOQuery1.Parameters.ParamByName('tip_zagr_vigr_g').Value:=(DBEdit8.Text);
ADOQuery1.Parameters.ParamByName('stavka_g').Value:=(DBEdit9.text);
ADOQuery1.Parameters.ParamByName('adres_zag_g').Value:=(DBMemo2.Text);
ADOQuery1.Parameters.ParamByName('adres_vig_g').Value:=(DBMemo3.text);
ADOQuery1.Parameters.ParamByName('dopoln_g').Value:=(DBMemo4.text);


У себя, впрочем, я такое вообще конструктором 'собираю':

Код: pascal
1.
2.
3.
4.
 AddContent('study_direct_show_code', StudyParams.StudyDirectShowCode, 16);
 AddContent('patient_uid', StudyParams.PatientUID);
 AddContent('study_uid', StudyParams.StudyUID);
 Execute;
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558673
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonмой вариант лучше такогоТакого вообще не бывает :)
Когда контролы называются Edit1,2,3,4,5,6... это не код, дальше можно не смотреть.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558674
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaonМне кажется, мой вариант лучше такого:Просто ни ты ни автор приведенного кода не слышали про UpdateSQL. Типично, чо :)
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558747
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и у меня есть такой лисапед:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class function TMainDatabaseUtils.QueryValues(const AStmt: string; const Params: array of const): Variant;
.......
       v := TMainDatabaseUtils.QueryValues(Stmt, ['ID', PeopleRoleID]);
       if not VarIsNull(v) then
       begin
         DepID := v[0];
         OrgID := v[1];
         RoleTypeID := v[2];
         VarClear(v);
       end;


Для вставки можно генерить SQL:
Код: pascal
1.
class function BuildInsertStatement(const ATable: string; const IgnoreFields: array of const): string;


списки разные:
Код: pascal
1.
2.
3.
4.
     class procedure List(L: TStrings; const AStatement: string; const AParams: array of const;
                          AOptions: TSelectListTypes;
                          const IDField: string = 'ID';
                          const NameField: string = 'NAME');


и вообще очень много подобного накопилось.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558753
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerФункция типа "сделай запрос" нужна тогда, когда требуется реализовать какую-то мелочь, под которую жалко и несоразмерно использовать тяжёлую артиллерию. Впрочем, со временем я всё больше убеждаюсь, что потребность в таких функциях означает плохой дизайн приложения.

Если приложение для одной конкретной задачи, то, наверное, потребности в таких подручных средствах и не должно возникать, но для большой мультимегаполисистемы всего в классы не задизайнишь ))
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558788
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon:cposob_opl_g

В мемориз! Такого я на протяжении своей долгой работы с базами данных еще не встречал
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558830
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик,

авторПросто ни ты ни автор приведенного кода не слышали про UpdateSQL.

1. Знаток Гхостик наверно не в курсе, что к IBSQL IBUpdateSQL вообще не цепляется
2. А даже если бы и цеплялся (как к IBQuery) он слабо поможет, если нужно делать запросы к разным таблицам. Точнее - поможет, но эти же запросы придётся в него же и добавлять вместо того, что бы просто добавить в IBQuery. А еще лучше, собрать запрос конструктором.

авторТакого я на протяжении своей долгой работы с базами данных еще не встречал

Чего только на развалах в интернетах не встретишь
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558872
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Знаток Гхостик наверно не в курсе, что к IBSQL IBUpdateSQL вообще не цепляется
В приведенном коде - db-aware контролы. Т.е. явно TDataSet. К которому IBUpdateSQL легко цепляется. А сравнивать свое решение с явно плохим - значит заранее занижать свою планку качества.

> эти же запросы придётся в него же и добавлять вместо того, что бы просто добавить в IBQuery.
Чем "просто добавить" проще чем "добавить"? Тем что "просто" же!
Про тупой код связывания контролов с параметрами о котором речь и велась, уже забыли.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558970
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик,

авторТ.е. явно TDataSet. К которому IBUpdateSQL легко цепляется

У меня для тебя плохие новости :)
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558976
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того. К TDataSet'у в принципе нельзя прицепить ничего из IBX'а, потому что это разные библиотеки. Как и к ADOшным компонентам.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39558984
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

авторпотому что это разные библиотеки

Если быть еще более точным, то ibx и tdataset вообще разные слои абстракции.
А у ADO апдейтера вообще нет.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39559051
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Если быть еще более точным, то ibx и tdataset вообще разные слои абстракции.
Ок, TIBDataSet.

> А у ADO апдейтера вообще нет.
Это повод не использовать ADO или дописать чтобы он таки появился.
...
Рейтинг: 0 / 0
Насчет свойств формирования SQL запроса
    #39559073
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик,

Чудо, ты хоть в среду заглядывай Прежде чем писать, да еще с таким пафосом.
Обычно пишущие запросы делаются с помощью IBSQL. К нему апдейтер не цепляется вообще.
Но ок, будем делать их с помощью IBQuery.
Итак, два запроса:
Код: sql
1.
insert into patients (patient_id,patient_name,patient_dob,patient_title,patient_sex,patient_weight,patient_height,patient_address1,patient_address2,patient_address3,patient_address4,patient_police,patient_case_history,patient_cathegory,patient_uid) values ("249999","Anonymous","2014-07-28","","M","","","","","","","","","","5329692466")


Код: sql
1.
update STUDIES set STUDY_STATUS = "Выполненное",STUDY_DONE_DATE = "2017-11-24",STUDY_DONE_TIME = "18:18:32" where study_accession_number = "24013917170181"



У меня это 'собирается' 'поэлементно' и даётся команда на выполнение запроса. Чем тут TIBUpdateSQL поможет?
...
Рейтинг: 0 / 0
14 сообщений из 64, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Насчет свойств формирования SQL запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]