|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Создание базы данных на с++builder |
|
Создание базы данных на с++builder
|
Пользователь Сообщения: 86 |
Профиль | Отправить PM | Цитировать Eсть значит моя форма по криету базы данных
[img]c:\primer.jpg[/img] Колонки базы задаются компонентом Edit. Значение свойства Text присваивается некоей переменной (допустим perviy). Далее идет непосдедственно создание самой базы. Вот код: SmallString<43> * perviy; SmallString<43> * vtoroy; SmallString<43> * nazva; void __fastcall TForm4::Button1Click(TObject *Sender) { perviy = Edit2->Text; vtoroy = Edit3->Text; nazva = Edit1->Text; Table1->Active = false; Table1->TableName = nazva * ; if (! Table1->Exists) { * Table1->TableType = ttParadox; * Table1->FieldDefs->Clear(); * TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef(); * * pNewDef->Name = perviy; * pNewDef->DataType = ftString; * pNewDef->Size = 20; * pNewDef->Required = true; * pNewDef = Table1->FieldDefs->AddFieldDef(); * pNewDef->Name = vtoroy; * pNewDef->DataType = ftBoolean; * Table1->IndexDefs->Clear(); * Table1->IndexDefs->Add("",perviy,TIndexOptions() <<ixPrimary <<ixUnique); * Table1-> CreateTable(); * Table1->Open(); * Table1->Insert(); * Table1->FieldByName(perviy)->AsString = "Петренко"; * Table1->FieldByName(vtoroy)->AsBoolean = false; * Table1->Post(); * ShowMessage(AnsiString("Таблица создана")); * } * else * { * ShowMessage(AnsiString("Таблица уже создана")); * * * Table1->Active = false; * Table1->Active = true; * } * * * * } pNewDef = Table1->FieldDefs->AddFieldDef(); * pNewDef->Name = vtoroy; * pNewDef->DataType = ftBoolean; И еще надо сделать чтоб заполнение полей было в любом случае по-порядку. Тоесть Если даных нет в первом поле, а есть во втором, то выдавалось соответствующее сообщение. А если данные есть в первов, но нет в последуюющих, то чтоб создавалась база с одной колонкой и без вывода каких либо ошибок. Работаю с Paradox |
|
------- Отправлено: 05:22, 12-06-2003 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Значит слушай сюда....
Код ты конечно с хелпа стянул и по этому кое-что не получается (надо вдуплить для чего каждая строка).... Но вот как делаю я: TTable* dbftable = new TTable(Application); dbftable->DatabaseName=/*сдесь алиас базы*/alias; dbftable->TableName="EXCH_TMP.DBF";/*сдесь че хош*/ if (!dbftable->Exists) { dbftable->Active = false; dbftable->TableType=ttDBase;/*сдесь пишеш свой тип*/ dbftable->FieldDefs->Clear(); dbftable->FieldDefs->Add("NOMKV", ftInteger, 0, False); dbftable->FieldDefs->Add("TYP", ftInteger, 0, False); dbftable->FieldDefs->Add("KODVAL", ftInteger, 0, False); dbftable->FieldDefs->Add("SUM_EXCH", ftFloat, 0, False); dbftable->FieldDefs->Add("SUM_EQUI", ftFloat, 0, False); dbftable->FieldDefs->Add("KURS_OPER", ftFloat, 0, False); dbftable->FieldDefs->Add("STATUS", ftInteger, 0, False); dbftable->CreateTable(); } dbftable->Active = true; но это я делал в 4 билдере в 5 делаю так: TTable* Table1= new TTable(Application); AnsiString * perviy; AnsiString* vtoroy; AnsiString * nazva; perviy = Edit2->Text; vtoroy = Edit3->Text; nazva = Edit1->Text; Table1->Active = false; Table1->TableName = nazva; if (! Table1->Exists) { * Table1->TableType = ttParadox; * Table1->FieldDefs->Clear(); * TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef(); if (!perviy.IsEmpty()) { * pNewDef->Name = perviy; * pNewDef->DataType = ftString; * pNewDef->Size = 20; * pNewDef->Required = true; } * pNewDef = Table1->FieldDefs->AddFieldDef(); if (!vtoroy.IsEmpty())* { pNewDef->Name = vtoroy; * pNewDef->DataType = ftBoolean; } * Table1->CreateTable(); * Table1->Active = true; * Table1->Append(); if (Table1->FieldList->Fields[0]->FieldName == perviy) * Table1->FieldByName(perviy)->AsString = "Петренко"; if (Table1->FieldList->Fields[1]->FieldName == vtoroy) * Table1->FieldByName(vtoroy)->AsBoolean = false; * Table1->Post(); * ShowMessage(AnsiString("Таблица создана"); * } * else * { * ShowMessage(AnsiString("Таблица уже создана"); * * * Table1->Active = false; * Table1->Active = true; * } удачи!!!! |
Отправлено: 11:32, 27-06-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Вот пасибо. Токо я уже сделал, но чуть не так(да и дипломную уже вчера сдал). Кстати с хелпа не тачил, у меня урезаный Билдер, а еси ты про красоту, дык это я для себя ифы разбрасывал, чтоб проще было .
Так вот так как никто не писал(посотри когда тема создана) пошел через Ифы(похожим способом). Вот токо при проверке второе разветвление не пахало. Тоесть проверялось, но не пахало. С кодом все было нормально. Ошибки небыло - уверен. Короче не пошло. Сделал кординально по другому. При создании формы пермым был запрос "На скоко колонок вы хотите базу?". И в зависимости от того какая цифра была введена выполнялся соответствующий код. кстати использовал switch. Проще...Все равно пасибо, первый человек, которому было не лень [s]Исправлено: Galosh, 16:48 27-06-2003[/s] |
------- Отправлено: 15:47, 27-06-2003 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
SQL и базы данных | Ivian | Программирование и базы данных | 3 | 18-03-2005 12:50 | |
.NET - c# и базы данных | den25 | Программирование и базы данных | 1 | 09-11-2004 08:07 | |
Проэктирование базы данных | Guest | Программирование и базы данных | 3 | 14-07-2004 10:07 | |
Базы данных | zxlMORF | Программирование и базы данных | 1 | 04-01-2004 15:26 |
|