Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder и базы данных

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
#1

Не переключается картинка после отбора данных в ComboBox С++ Builder - C++ Builder БД

02.05.2013, 11:45. Просмотров 2314. Ответов 46
Метки нет (Все метки)

Появилась проблема - одна.
В программе после отбора по жанрам потом открываю по каком-то фильму описание, и там по DBNavigator щелкаю вперед или назад, картинка не переключается, а переключается только текст. Если не отбирать данные перещелкивание картинки работает вместе с текстом.
0
Вложения
Тип файла: rar Kinoteatr.rar (7.48 Мб, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2013, 11:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не переключается картинка после отбора данных в ComboBox С++ Builder (C++ Builder БД):

Не переключается изображение. C++ Builder 6 - C++ Builder
Один баг у меня в программе, нужно устранить. Всего лишь один баг. А баг такой. Через DBNavigator Не переключается картинка в описании о...

С помощью запроса значение из Edit и ComboBox поместить в базу данных при нажатии кнопки в builder c++ - C++ Builder БД
с помощью запроса значение из Edit и ComboBox поместить в базу данных при нажатии кнопки в builder c++

C++ Builder, ComboBox - C++ Builder
Доброго вечера! пожалуйста, помогите разобраться: Порядок занесения новой функции в компонент ComboBox и чем обусловлен такой порядок...

ComboBox/C++Builder - C++ Builder
хочу проверить, заполены ли поля ComboBox. Всего на форме 6 комбоБокс`ов. По очереди сравниваю с пустой строкой. Если условие верно, выдает...

ComboBox в С++ Builder - C++ Builder
Как добавить поля StringGrid в ComboBox для осуществления поиска.

ComboBox в Builder C++ - C++ Builder
Всем привет .Очень нужна ваша помощь ,народ .Можете кинуть какой-нить пример ,подсказать ,рассказать ,поставить на путь истинный ... с этой...

46
Ddv122
Почемучка)
1235 / 295 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
04.05.2013, 02:21 #31
Evgeny92, удали не нужное, сделай по уму, переделка твоя - день/два займет)
дбнавигатор замени на просто кнопки, устрани варинги...тебе только 4 формы нужны)
Честно скажу это на 6/7 балов не потянет...
2
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 05:30 #32
Ddv122,
Цитата Сообщение от Ddv122 Посмотреть сообщение
удали не нужное, сделай по уму, переделка твоя - день/два займет)
Это так.


Цитата Сообщение от Ddv122 Посмотреть сообщение
дбнавигатор замени на просто кнопки
А вот с этим пока не заморачивайтесь.


Цитата Сообщение от Ddv122 Посмотреть сообщение
тебе только 4 формы нужны
Первая форма - общий список фильмов/сериалов с возможностью поиска, фильтрации, удаления.
Вторая форма - детализированный просмотр фильма/сериала.
Третья форма - добавление/изменение информации о фильме/сериале.

Третью, если совсем сложно, можно разбить еще на две:
3.1 Добавление информации о фильме/сериале.
3.2 Изменение информации о фильме/сериале.

Но я бы не стал разбивать.
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 19:58  [ТС] #33
И вот при переделки возникает ряд вопросов.

1)
В том проекте. 2-е сетки 2-е кнопки Найти, и компоненты ComboBox'ы. На Компоненте Найти.

Код на одном компоненте Button для поиска Фильма.

C++
1
2
3
4
5
DataModule2->DataSource1->DataSet = DataModule2->ADOQuery1;
    DataModule2->ADOQuery1->Close();
   DataModule2->ADOQuery1->SQL->Clear();
    DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  [Название фильма] LIKE '%"+Edit1->Text+"%'");
    DataModule2->ADOQuery1->Open();
И такой же код на другой кнопке для поиска Сериала
C++
1
2
3
4
5
DataModule2->DataSource2->DataSet = DataModule2->ADOQuery2;
    DataModule2->ADOQuery2->Close();
   DataModule2->ADOQuery2->SQL->Clear();
    DataModule2->ADOQuery2->SQL->Add("Select * from Сериалы WHERE  [Название сериала] LIKE '%"+Edit2->Text+"%'");
    DataModule2->ADOQuery2->Open();


Сетка DBGrid одна, Поле Найти Button3 Одна. Т.е.
При нажатии Кнопки Фильмы нужно что бы По кнопке найти и фильтрация по жанрам и т.д. находила по БД Фильмы
При нажатии Кнопки Сериалы ....... по БД Сериалы.
Как эти 2-а кода написать в одну кнопку Найти Button3?


2)Добавил формы на Добавление записи и Изменение записи.
Тут нужно при переходе в первой форме Фильмы нужно чтобы в Форме добавления Там кнопка Добавить Button какойто, Нужно чтобы добавлял свою таблицу БД Фильмы.
При переходе Сериалы .... тоже самое.


В том проекте Форма добавление записи, на кнопку добавление записи

C++
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
void __fastcall TForm5::Button2Click(TObject *Sender)
{
if (Edit1->Text=="")
{
ShowMessage("Введите данные Название фильма!");
return;
}
else if (Edit2->Text=="")
{
ShowMessage("Введите данные Жанры!");
return;
}
else if (Edit3->Text=="")
{
ShowMessage("Введите данные Страна!");
return;
}
else if (Edit4->Text=="")
{
ShowMessage("Введите данные Год выхода!");
return;
}
else if (Edit5->Text=="")
{
ShowMessage("Введите данные Режиссер!");
return;
}
else if (Edit6->Text=="")
{
ShowMessage("Введите данные Время!");
return;
}
else if (Memo1->Text=="")
{
ShowMessage("Введите данные В ролях!");
return;
}
else if (Memo2->Text=="")
{
ShowMessage("Введите данные Сюжет!");
return;
}
else if (Edit7->Text=="")
{
ShowMessage("Введите данные Трейлер!");
return;
}
else if(Image1->Picture->Graphic==NULL)
{
ShowMessage("Вставьте Обложку фильма");
return;
}
 
DataModule2->ADOTable1->Insert();
DataModule2->ADOTable1->FieldByName("Название фильма")->AsString = Form5->Edit1->Text;
DataModule2->ADOTable1->FieldByName("Жанры")->AsString = Form5->Edit2->Text;
DataModule2->ADOTable1->FieldByName("Страна")->AsString = Form5->Edit3->Text;
DataModule2->ADOTable1->FieldByName("Год выхода")->AsString = Form5->Edit4->Text;
DataModule2->ADOTable1->FieldByName("Режиссер")->AsString = Form5->Edit5->Text;
DataModule2->ADOTable1->FieldByName("Время")->AsString = Form5->Edit6->Text;
DataModule2->ADOTable1->FieldByName("В ролях")->AsString = Form5->Memo1->Text;
DataModule2->ADOTable1->FieldByName("Сюжет")->AsString = Form5->Memo2->Text;
DataModule2->ADOTable1->FieldByName("Трейлер")->AsString = Form5->Edit7->Text;
 
TMemoryStream* strm = new TMemoryStream();
Image1->Picture->Graphic->SaveToStream(strm);
((TGraphicField*)DataModule2->ADOTable1->FieldByName("Постер фильма"))->LoadFromStream(strm);
 delete strm;
 strm = NULL;
 
DataModule2->ADOTable1->Post();
 
 Form5->Hide();   //Закрыть форму Добавление записи в БД Фильмы
 
//Очистить текст в полях
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
Edit6->Clear();
Memo1->Clear();
Memo2->Clear();
Edit6->Clear();
Edit7->Clear();
Image1->Picture->Graphic=NULL;
 
}
Добавлено через 3 минуты
Вот что прописано на кнопки при переходе на Form1

Кнопка Фмльмы
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule2->DataSource1;
Button7->Caption = "О фильме";
DBGrid1->Columns->Items[1]->Title->Caption = "Название фильма";
DBGrid1->Columns->Items[9]->Title->Caption = "Постер фильма";
 
 
}
Кнопка сериалы
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button2Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule2->DataSource2;
Button7->Caption = "О сериале";
DBGrid1->Columns->Items[1]->Title->Caption = "Название сериала";
DBGrid1->Columns->Items[9]->Title->Caption = "Постер сериала";
}
Добавлено через 8 часов 52 минуты
Вообщем, подумал вообще убрать сериалы. Будут только фильмы. путаница пошла. Не знаю как исправить проект. Не знаю как сделать все это одними компонентами. с 4-мя формами... Вообщем сложно мне это сделать...

Добавлено через 13 минут
Сериалы в Кинотеатрах без мысленно.
0
Ddv122
Почемучка)
1235 / 295 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
04.05.2013, 21:10 #34
Evgeny92, мне кажется ты не прав
У меня тётка в прокате работает, там сериалов больше, чем фильмов)
1)Составь алгоритм
2)Нарисуй форму - удобную в работе (быстрое редактирование и добавление и удобный просмотр )
3)Должно примерно выйти 4 формы, 1 главная форма, (добавление/изменение) 2 форма, О программе 3 форма, 4 просмотр о фильме ( + печать инфы о фильме)
4)Подключи БД к форме
А там уже видно будет...
По сути работы на день/два тут)
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
05.05.2013, 00:25  [ТС] #35
И вот все же навел порядок. Сериалы убрал. Т.к. я не знаю что делать с 2-мя таблицами.
Сделал только Бд фильмы.
Вот помогите разобраться с переключателем картинки после Отбора по категориям или поиска.
0
Вложения
Тип файла: rar Kinoteatr.rar (7.59 Мб, 6 просмотров)
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
05.05.2013, 20:14 #36
Evgeny92,
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Вот помогите разобраться с переключателем картинки после Отбора по категориям или поиска.
5-ая форма:

C++
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
#include "Unit1.h"
...
    void __fastcall TForm5::DBNavigator1Click(
    TObject *    Sender,
    TNavigateBtn Button )
{
    AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Трейлер" )
        ->AsString; // Из поле Трейлер будет открываться ссылка на веб страницу
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    Form5->CppWebBrowser1->Navigate(WideString(wsg) ) ;  //На форме О фильме Отображает веб страницу с трейлером.
 
    if ( !( TBlobField * )DataModule2->ADOTable1->FieldByName( "Постер фильма" )
        ->IsNull && Form1->DBGrid1->DataSource->DataSet ==
        DataModule2->ADOTable1 )
    {
        if ( !Form5->Image1->Visible )
        {
            Form5->Image1->Visible = true;
        }
        TMemoryStream * strm = new TMemoryStream;
        TJPEGImage * ptJpg = new TJPEGImage;
        ( ( TGraphicField * )DataModule2->ADOTable1->FieldByName
            ( "Постер фильма" ) )->SaveToStream( strm );
        strm->Seek( 0, 0 );
        if ( *( Word * )strm->Memory == 0xD8FF )
        {
            Form5->Image1->Picture->Graphic = ptJpg;
        }
        Form5->Image1->Picture->Graphic->LoadFromStream( strm );
        delete strm;
        delete ptJpg;
    }
    else
        if ( !( TBlobField * )DataModule2->ADOQuery1->FieldByName
            ( "Постер фильма" )
            ->IsNull && Form1->DBGrid1->DataSource->DataSet ==
            DataModule2->ADOQuery1 )
        {
            if ( !Form5->Image1->Visible )
            {
                Form5->Image1->Visible = true;
            }
            TMemoryStream * strm = new TMemoryStream;
            TJPEGImage * ptJpg = new TJPEGImage;
            ( ( TGraphicField * )DataModule2->ADOQuery1->FieldByName
                ( "Постер фильма" ) )->SaveToStream( strm );
            strm->Seek( 0, 0 );
            if ( *( Word * )strm->Memory == 0xD8FF )
            {
                Form5->Image1->Picture->Graphic = ptJpg;
            }
            Form5->Image1->Picture->Graphic->LoadFromStream( strm );
            delete strm;
            delete ptJpg;
        }
        else
        {
            Form5->Image1->Visible = false;
        }
}

Цитата Сообщение от Evgeny92 Посмотреть сообщение
Т.к. я не знаю что делать с 2-мя таблицами.
Меняйте DataSet у DBGrid.
2
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
05.05.2013, 23:40  [ТС] #37
Спасибо большое.

Добавлено через 33 минуты
Кстати еще нужно мне с браузером решить вопрос также как и с картинками.

С этим кодом
C++
1
2
3
4
5
AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Трейлер" )
        ->AsString; // Из поле Трейлер будет открываться ссылка на веб страницу
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    Form5->CppWebBrowser1->Navigate(WideString(wsg) ) ;  //На форме О фильме Отображает веб страницу с трейлером.
Как это мне сделать? Тоже через условие.

Добавлено через 4 минуты
Хотя стоп. Сейчас сам что то задумал.

Добавлено через 3 минуты
Во так попытался сделать. аналогично как и с тем кодом на изображение.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Òðåéëåð" )->AsString && Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1) // Èç ïîëå Òðåéëåð áóäåò îòêðûâГ*ГІГјГ±Гї ññûëêГ* Г*Г* ГўГҐГЎ Г±ГІГ°Г*Г*èöó
     {
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    }
    else
if (AnsiString wsg = DataModule2->ADOQuery1->FieldByName( "Òðåéëåð" )
        ->AsString && Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOQuery1) // Èç ïîëå Òðåéëåð áóäåò îòêðûâГ*ГІГјГ±Гї ññûëêГ* Г*Г* ГўГҐГЎ Г±ГІГ°Г*Г*èöó
        {
        wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
      }
      else
      {
    Form5->CppWebBrowser1->Navigate(WideString(wsg) ) ;  //ГЌГ* ôîðìå ГЋ ôèëüìå ÎòîáðГ*Г¦Г*ГҐГІ ГўГҐГЎ Г±ГІГ°Г*Г*èöó Г± òðåéëåðîì.
          }
Добавлено через 1 минуту
Но при запуске ошибку выдает на строчку:

C++
1
if (AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Трейлер" )->AsString && Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1)
Курсор стоит на &&

Добавлено через 1 минуту
Исправьте код мой пожалуйста.
0
Ddv122
Почемучка)
1235 / 295 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
06.05.2013, 01:05 #38
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Но при запуске ошибку выдает на строчку:
а какой смыл в коде этом, логику не пойму
ну и примерно так
C++
1
      if ((wsg == DataModule2->ADOTable1->FieldByName( "Òðåéëåð" )->AsString) && (Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1))
1
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
06.05.2013, 01:19 #39
Evgeny92,
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Исправьте код мой пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Browser( TDataSet * DataSet )
{
    AnsiString wsg = DataSet->FieldByName( "Трейлер" )->AsString;
    // Из поле Трейлер будет открываться ссылка на веб страницу
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    Form5->CppWebBrowser1->Navigate( WideString( wsg ) );
    // На форме О фильме Отображает веб страницу с трейлером.
}
...
void __fastcall TForm5::TabSheet2Show( TObject * Sender )
{
    if ( Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1 )
    {
        Browser( DataModule2->ADOTable1 );
    }
    if ( Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOQuery1 )
    {
        Browser( DataModule2->ADOQuery1 );
    }
}
Кстати, если оставаться на вкладке "Трейлер" и покликать на DBNavigator, то трейлеры не меняются - так задумано?

И второе: очень рекомендую у всех КомбоБоксов свойство Style выставить в csDropDownList, иначе первый попавшийся "дурак" порушит Вашу программку
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
06.05.2013, 02:17  [ТС] #40
меняется сама веб-страница с трейлером. Должен переключаться.

Спасибо огромное. Все сделал программа работает.
0
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
06.05.2013, 02:26 #41
Evgeny92,
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Все сделал
Верните сериалы - я настаиваю

Кстати, хотел узнать вот что: вам кто-нибудь "Базы данных" читал? Складывается впечатление, что нет.
Следов процесса проектирования БД не наблюдается.
0
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
06.05.2013, 02:33  [ТС] #42
Пока время есть до защиты.
1)Думаю добавить в проект Расписание сеансов, Время проката фильмов в виде таблиц будет 3-й и 4-й вкладке.
(Возможно откажусь).
2)Что то вроде кассы, бронирование мест, отчет(печать билетов, билеты оформленные). Это будет сложно сделать возможно откажусь, видеть бы примеры.
Заходил в кинотеатр известно мне расположение мест в зале 8 рядов 8 ряд диваны Vip. 16 мест. 1-7 ряд по 21 месту вроде.
От всего наверное откажусь.

Добавлено через 3 минуты
Цитата Сообщение от The_Immortal Посмотреть сообщение
Evgeny92,

Верните сериалы - я настаиваю

Кстати, хотел узнать вот что: вам кто-нибудь "Базы данных" читал? Складывается впечатление, что нет.
Следов процесса проектирования БД не наблюдается.
Ну сделаю, только путем добавления несколько форм и компонентов. По другому никак не пойму.
0
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
06.05.2013, 02:35 #43
Evgeny92,

Цитата Сообщение от Evgeny92 Посмотреть сообщение
бронирование мест
В таком случае предлагаю сделать что-то типа такого:
1
Миниатюры
Не переключается картинка после отбора данных в ComboBox С++ Builder  
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
06.05.2013, 11:33  [ТС] #44
И так, пишу то что я пока не понимаю как мне это сделать...

Добавлено через 28 минут
Создавал проект, начинал переделывать. Пишу условно, помню как делал. Программы нет переделанной.

Формы и компоненты:

Form1 (Программа Kinoteatr)
Размещены компоненты Button1(Фильмы), Button2(Сериалы), Edit1(Поле поиска по названиям фильма или сериалов), ComboBox1(По жанрам), ComboBox2(По странам), ComboBox3(По годам), Button3(Найти), DBGrid1, DBNavigator1, Button4(Добавить запись), Button5(Изменить запись), Button6(Удалить запись), Button7(Описание).

DataModule2 размещены компоненты DataSourse1, DataSourse2, ADOConnection1, ADOTable1, ADOTable2, ADOQurery1, ADOQurery2.

Form3(Добавление записи в БД Фильмы)

Размещены компоненты Edit1,2,3,4,5,6,7 Memo1,2 Label1 до 9 Image1, Button1(Добавить запись и закрыть), Button2(Добавить запись), Button3(Закрыть), Button4(Загрузить постер),

Ну пока имеется отношение по этим 2-м формам.


Я писал на кнопках Button1 (Фильмы) и Button2(Сериалы). DBGrid1 установил в инспекторе объектов связь с первой таблицей(Фильмы). Далее прописываю на кнопках:

Button1. При нажатии кнопки в DBGrid1 меняется связь с таблицей Фильмы, Меняется в поле название с Названия сериала на Название фильма.
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule2->DataSource1;
DBGrid1->Columns->Items[0]->Title->Caption = "Название фильма";
 
}
Button2. При нажатии кнопки в DBGrid1 меняется связь с таблицей Сериалы, Меняется в поле название с Названия фильма на Название сериала.

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule2->DataSource2;
DBGrid1->Columns->Items[0]->Title->Caption = "Название сериала";
// это не все еще было прописано. Прописано было еще
// на то чтобы при нажатии кнопки сериалы менялись названия свойством Caption Label'ов, Button'ов, 
// Form3(Добавление записи в БД Сериалы). 
}
Далее пишу...

Добавлено через 16 минут
Код в Добавить запись и закрыть
На Дата сет по таблице Фильмы.

C++
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
void __fastcall TForm3::Button3Click(TObject *Sender)
{
if (Edit1->Text=="")
{
ShowMessage("Введите данные Название фильма!");
return;
}
else if (Edit2->Text=="")
{
ShowMessage("Введите данные Жанры!");
return;
}
else if (Edit3->Text=="")
{
ShowMessage("Введите данные Страна!");
return;
}
else if (Edit4->Text=="")
{
ShowMessage("Введите данные Год выхода!");
return;
}
else if (Edit5->Text=="")
{
ShowMessage("Введите данные Режиссер!");
return;
}
else if (Edit6->Text=="")
{
ShowMessage("Введите данные Время!");
return;
}
else if (Memo1->Text=="")
{
ShowMessage("Введите данные В ролях!");
return;
}
else if (Memo2->Text=="")
{
ShowMessage("Введите данные Сюжет!");
return;
}
else if (Edit7->Text=="")
{
ShowMessage("Введите данные Трейлер!");
return;
}
else if(Image1->Picture->Graphic==NULL)
{
ShowMessage("Вставьте Обложку фильма");
return;
}
 
DataModule2->ADOTable1->Insert();
DataModule2->ADOTable1->FieldByName("Название фильма")->AsString = Form3->Edit1->Text;
DataModule2->ADOTable1->FieldByName("Жанры")->AsString = Form3->Edit2->Text;
DataModule2->ADOTable1->FieldByName("Страна")->AsString = Form3->Edit3->Text;
DataModule2->ADOTable1->FieldByName("Год выхода")->AsString = Form3->Edit4->Text;
DataModule2->ADOTable1->FieldByName("Режиссер")->AsString = Form3->Edit5->Text;
DataModule2->ADOTable1->FieldByName("Время")->AsString = Form3->Edit6->Text;
DataModule2->ADOTable1->FieldByName("В ролях")->AsString = Form3->Memo1->Text;
DataModule2->ADOTable1->FieldByName("Сюжет")->AsString = Form3->Memo2->Text;
DataModule2->ADOTable1->FieldByName("Трейлер")->AsString = Form3->Edit7->Text;
 
TMemoryStream* strm = new TMemoryStream();
Image1->Picture->Graphic->SaveToStream(strm);
((TGraphicField*)DataModule2->ADOTable1->FieldByName("Постер фильма"))->LoadFromStream(strm);
 delete strm;
 strm = NULL;
 
DataModule2->ADOTable1->Post();
 
 Form3->Hide();   //Закрыть форму Добавление записи в БД Фильмы
 
//Очистить текст в полях
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
Edit6->Clear();
Memo1->Clear();
Memo2->Clear();
Edit7->Clear();
Image1->Picture->Graphic=NULL;
        
}
Вот тут вопрос. Как прописать и для второй таблице. Ну она также прописывается, поменять только с ADOTable1 на ADOTable2, и там Названия поменять полей. Вот как тут на на кнопке Добавлении записи в зависимости подключенной таблицы, при нажатии этой кнопке добавлял в свою таблицу. Т.е. нужна смена ADOTable1 на ADOTable2(При нажатии кнопки Сериалы) или наоборот c ADOTable2 на ADOTable1(при нажатии кнопки Фильмы).
Нужно по ходу прописывать на Button1(Фильмы) и Button2(Сериалы).

Также нужно сделать и в первой форме Form1(программа Kinoteatr) для компонентов BUtton3(Найти), ComboBox1-3 в зависимости подключенной Таблицы кнопками Button1(Фильмы) и Button2(Сериалы).

Коды на них
Button3(Найти)

C++
1
2
3
4
5
DataModule2->DataSource1->DataSet = DataModule2->ADOQuery1;
    DataModule2->ADOQuery1->Close();
   DataModule2->ADOQuery1->SQL->Clear();
    DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  [Название фильма] LIKE '%"+Edit1->Text+"%'");
    DataModule2->ADOQuery1->Open();
Здесь тоже нужно переключение c ADOQuery1 на ADOQuery2 или наоборот в зависимости от подключенной таблицы.

Один из ComboBox'ов. Тоже самое.
ComboBox1
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
DataModule2->DataSource1->DataSet = DataModule2->ADOQuery1;
    DataModule2->ADOQuery1->Close();
    DataModule2->ADOQuery1->SQL->Clear();
    if(ComboBox1->ItemIndex == 0)
      DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы");
    else
      DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  Жанры LIKE '%"+ComboBox1->Text+"%'");
    DataModule2->ADOQuery1->Open();        
}
Добавлено через 9 минут
На кнопку удалить запись (Button6)
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if (DataModule2->ADOTable1->RecordCount==0)
{
ShowMessage("Нечего удалять, нет записи");
}
else
{
DataModule2->ADOTable1->Delete();
}
 
}
Здесь тоже самое надо, при нажатии Фильмы удаление происходит по ADOTable1 при нажатии Сериалы удаление по ADOTable2.
Может сделать удаление с подтверждением типа "Вы действительно хотите удалить данную запись" и варианты ДА и Отмена. Как это сделать?

И вот по моему все пока.

Добавлено через 8 минут
Еще у меня 2-е формы одна Form4 Изменить запись вторая описание FOrm5.
про изменение запси вопросов не будет, т.к. из Добавление запсиси возьму.
А по Form5, будут вопросы. И еще 1 вопрос будет по FOrm1.
0
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
06.05.2013, 12:18  [ТС] #45
проект
0
Вложения
Тип файла: rar Kinoteatr.rar (7.98 Мб, 1 просмотров)
06.05.2013, 12:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 12:18
Привет! Вот еще темы с ответами:

Работа с ComboBox в С++ Builder 6 - C++ Builder
Есть такая проблема, надо на форме связать два ComboBox компонента. При выборе элемента из списка на ComboBox1 ему соответствовал элемент...

Поиск из ComboBox в С++ Builder - C++ Builder
Подскажите плиз. Как организовать поиск по StringGrid. Ели у меня есть ComboBox и в нем занесены поля StringGrid. Поиск должен...

DBImage и ComboBox в C++Builder - C++ Builder БД
Добрый день специалисты. Использую C++Builder 6. Дипл. проект делаю. Тема Kinoteatr. Делаю тот же проект что и некоторые курсовые на...

Задачка с использованием ComboBox(Builder C++) - C++ Builder
Пожалуйста помогите!!!нужно написать код для трех форумов,в первом находиться таблица с данными(к примеру список учеников),во втором сам...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.