Консультация № 178139
01.05.2010, 10:29
40.63 руб.
0 3 1
Здраствуйте,эксперты!Четвертая лабораторная работа rfpro.ru/upload/2233..ДОСТУП К БАЗАМ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА SQL Разработать Windows-приложение в среде Borland C++ Builder для работы с созданной в Database Desktop таблицей с использованием компонента Query.Спасибо за помощь.

Обсуждение

давно
Старший Модератор
17042
808
02.05.2010, 14:22
общий
Питулин Александр Михайлович:
А версия среды разработки? А что должно быть в таблице? А какая база данных?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
17042
808
06.05.2010, 13:30
общий
это ответ
Здравствуйте, Питулин Александр Михайлович.
В Database Desktop версии 7 была создана база данных dBase for Windows, содержащая единственную таблицу Students (Students.dbf) без псевдонима.
Поля базы данных:
MARK_BOOK (N) - номер зачётной книжки,
Group (C) - идентификатор группы,
NAME, MID_NAME, LAST_NAME (C) - соответственно, имя, отчество, фамилия,
BIRTH_YEAR (N, длина поля 4) - год рождения,
SEX (C, длина поля 1) - пол,
SUBJECT (C) - предмет,
MARK (N, длина поля 1) - оценка.
В таблицу в Database Desktop были внесены данные по 1 студенту, остальные записи (3) были добавлены на этапе выполнения программы.
Код главной формы приложения MainForm сохранён в файле MainUnit.cpp. Свойства biMinimize и biMaximize формы установлены в false (убирают кнопки сворачивания и распахивания окна), свойство BorderStyle выставлено в bsDialog (запрет на изменение размеров окна), свойство Position установлено в poDesktopCenter (расположение - по центру рабочего стола).
На форму помещены следующие компоненты (указаны изменённые свойства):
TTable: Active - true (важно! По умолчанию это свойство false, но нужно именно true для отображения данных таблицы базы данных), DatabaseName - пусто (т.к. наша база данных не имеет псевдонима), Name - StudentsTable, TableName - Students.dbf (важно! Чтобы программа могла найти таблицу, база данных должна располагаться в одном каталоге с программой);
TDataSource: DataSet - StudentsTable, Name - DataSource;
TDBNavigator: DataSource - DataSource, Name - DBNavigator;
TDBGrid: Align - alTop (выравнивание по верхнему краю формы), DataSource - DataSource, Name - DBGrid, Columns - отредактированы свойства Caption с тем, чтобы названия полей отображались по-русски (см. скриншот работы программы).
TQuery: DataSource - DataSource, Name - Query,
TButton: Caption - Средняя оценка, Name - ShowButton.



Рисунок 1 - Внешний вид программы на этапе выполнения

В обработчик события щелчка по кнопке был добавлен следующий код:
Код:

void __fastcall TMainForm::ShowButtonClick(TObject *Sender)
{
// Подготавливаем запрос к базе данных
Query->Close(); // Закрываем запрос
Query->SQL->Clear(); // и на всякий случай очищаем его.
Query->SQL->Add("SELECT MARK FROM Students"); // Выбираем поле MARK из таблицы Students
Query->Open(); // Открываем запрос

float fMark = 0.0; // Оценка
int iNumber = 0; // Число записей в таблице
Query->First(); // Переходим на первую запись
while(!Query->Eof) // Пока не достигнут конец БД
{
fMark += Query->FieldByName("MARK")->AsFloat; // суммируем оценки
iNumber++; // Считаем записи
Query->Next(); // Переходим к следующей записи
}

fMark = fMark / (float)iNumber; // Вычисляем среднюю оценку студентов,
// формируем сообщение
AnsiString sMessage = "Средняя оценка студентов: " + FloatToStr(fMark);
ShowMessage(sMessage); // и выводим его
}


База данных и файл проекта Borland C++ Builder 6 (архив RAR) приложены к ответу.
Удачи!
Прикрепленные файлы:
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
17042
808
06.05.2010, 13:39
общий
Питулин Александр Михайлович:
Александр Михайлович!
Во-первых, Вы совершенно напрасно пишете мне на пейджер RFPro: я вопросы в личной переписке не обсуждаю, для этого есть мини-форум при каждом из них. Во-вторых, Вы никогда не получите ответа на свои вопросы, если будете и впредь так нечётко формулировать задания. Зачем Вы даёте ссылку на методичку, если требовалось лишь указать:
а) вид базы данных (из методички dBASE for Windows);
б) поля таблицы;
в) что собственно должен делать запрос (Query): этого, к слову, в методичке вообще не было, так что взял пример (вычисление средней оценки студентов) наобум.
Это очень небольшой объём информации, который Вы могли бы набрать и сами, вместо того, чтобы заставлять меня перелистывать многостраничный документ, не содержащий для меня какой-либо интересной информации.
Примите, пожалуйста, к сведению. Когда я был администратором рассылки, то подобные вопросы вообще удалял, но Verena девушка добрая...
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Форма ответа