Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запросы и БД! [D7, XP]


Страницы:   1 2

Loona ©   (2007-05-25 01:56:00) 

Здравствуйте, у меня возник вопрос:
есть БД, по SQL запросу выдает нужные данные - как теперь эти данные,т.е новую таблицу сохранить, чтобы потом можно было работать с ее элементами?? мне нужно найти среднее значение в каждом столбце новой матрицы ( потом значение ячейки - среднее разделить на среднее и уможить на коэффициент и так 10 ячеек по каждому столбцу!!) а потом построить график...Помогите пожалуйста, совсем не получается :(((


Kostafey   (2007-05-26 12:48:00) [21]

> СУБД, технология доступа ?

Не стоит такие вопросы игнорировать.

Давать русские названия таблицам крайне нежелательно. Или это псевдокод?

Вопрос я к сожалению до конца так и не понял, но попробую
ответить на сколько понял.

А что же я понял? Нужно получить набор данных из 1 записи (на самом деле их
наверняка будет больше, ибо 'where Фамилия like ''%'+EditFIO1.text+'%'),
содержащих 3 поля характеризующих параметры одного пациента, при этом
значение одного из полей должно вычисляться по принципу:
> **значение ячейки минус среднее значение столбца и разделить
> на среднее!!!


Таким образом, принимая во внимание:

> меня интересуют данные выбранные для заданного пациента
> из таблицы "параметры".


Привожу в псевдокоде:

DataModule1.FindQuery.Active:=false;
DataModule1.FindQuery.SQL.Text:=
 'select параметры.Необходимое_поле1, параметры.Необходимое_поле2, '+#13#10+
 '(параметры.Необходимое_поле3 - '                                  +#13#10+
 '  ( '                                                             +#13#10+
 '  select avg(параметры.Необходимое_поле3) from параметры '        +#13#10+
 '  )) / '                                                          +#13#10+
 '  ( '                                                             +#13#10+
 '  select avg(параметры.Необходимое_поле3) from параметры '        +#13#10+
 '  ) '                                                             +#13#10+
 'from Пациент, исслдование, параметры '                            +#13#10+  
 'where Фамилия like ''%'+EditFIO1.text+'% '                        +#13#10+
 'and Пациент.Key1 = Исследование.ID_pat '                          +#13#10+
 'and Исследование.Key1 = параметры.ID_inv '                        +#13#10+
DataModule1.FindQuery.Active:= true;
PoiskForm.ShowModal;


Loona   (2007-05-25 22:31:00) [22]

Вот такой запрос выполняется
DataModule1.FindQuery.Active:=false;
 DataModule1.FindQuery.SQL.Clear;
 DataModule1.FindQuery.SQL.Add('select*');
 DataModule1.FindQuery.SQL.Add('from Пациент, исслдование, параметры');
 DataModule1.FindQuery.SQL.Add('where Фамилия like ''%'+EditFIO1.text+'%''');
 Datamodule1.FindQuery.SQL.Add('and Пациент.Key1 = Исследование.ID_pat');
 Datamodule1.FindQuery.SQL.Add('and Исследование.Key1 = параметры.ID_inv');
 DataModule1.FindQuery.Active:= true;
 PoiskForm.ShowModal;

Этот запрос выполняется. и получается новая таблица она состоит из 10 строк и 8 столбцов, меня интересуют данные выбранные для заданного пациента из таблицы "параметры".

И там уже с 3-мя столбцами мне нужно работать, считать среднее и т по формуле.

можно ли использовать свойство recordset.fields и тд?????


Германн   (2007-05-25 03:18:00) [23]


> Kostafey ©   (25.05.07 03:12) [8]

Тогда ждём'с автора. Пусть пояснит задачу.


Kostafey   (2007-05-25 03:12:00) [24]

> И что? Его нельзя никак подвергнуть математической обработке?
>
> Т.е. есть данные, но сделать с ними ничего нельзя?

уху, прогнать по
DataSet.First
wile not DataSet.eof do
begin
DataSet.next
//Сичтаем среднее арифметическое
end

незабывая про

> **значение ячейки минус среднее значение столбца и разделить
> на среднее!!!

заново прогоняем цикл, формируя массив структур (record), состоящих из строк.

И выводим его в StringsList.

По моему не слишком красиво. Куда проще послать новый запрос.


Германн   (2007-05-25 03:05:00) [25]


> Kostafey ©   (25.05.07 02:53) [6]
>
> > TDataSet что-ли?
>
> Вроде того
>

И что? Его нельзя никак подвергнуть математической обработке?
Т.е. есть данные, но сделать с ними ничего нельзя?


Kostafey   (2007-05-25 02:53:00) [26]

> TDataSet что-ли?

Вроде того


Германн   (2007-05-25 02:47:00) [27]


> Нет, нельзя. Это ж в наборе данных.

TDataSet что-ли?


Kostafey   (2007-05-25 02:33:00) [28]

> А с результатом запроса работать нельзя по условиям задачи?

Нет, нельзя. Это ж в наборе данных. К нему запрос не послать.
Нужно посылать новый запрос, который будет, похоже, включать в
себя текст старого только что посланного запроса.

Я у себя в дипломе эту задачу решил разделением запроса на части
с конструированием конечного варианта в зависимости от задачи.
Несколько веток на эту тему было.


Германн   (2007-05-25 02:22:00) [29]


> есть БД, по SQL запросу выдает нужные данные - как теперь
> эти данные,т.е новую таблицу сохранить, чтобы потом можно
> было работать с ее элементами??

А с результатом запроса работать нельзя по условиям задачи?
> мне нужно найти среднее значение в каждом столбце новой
> матрицы

А откуда тут пролезла эта противная матрица, блин? Зови на помощь Нео!
:)

Конец учебного года :(


Kostafey   (2007-05-25 02:03:00) [30]

Ну-сс. Поехали.

СУБД, технология доступа ?

> новую таблицу сохранить

Вообще CREATE TABLE, но оно точно нужно?
Мжет быть лучше воспользоваться вложенным запросом ?


> потом значение ячейки - среднее разделить на среднее и уможить
> на коэффициент и так 10 ячеек по каждому столбцу!!)

жестко.


> Помогите пожалуйста, совсем не получается :(((

Ветка обещает быть длинной...


Loona   (2007-05-25 01:58:00) [31]

**значение ячейки минус среднее значение столбца и разделить на среднее!!!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо