Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Создание базы данных на с++builder

Ответить
Настройки темы
Создание базы данных на с++builder

Пользователь


Сообщения: 86
Благодарности: 0

Профиль | Отправить 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

-------
У вас не виснет Windows ?!! Руки кривые ... :)


Отправлено: 05:22, 12-06-2003

 

Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот пасибо. Токо я уже сделал, но чуть не так(да и дипломную уже вчера сдал). Кстати с хелпа не тачил, у меня урезаный Билдер, а еси ты про красоту, дык это я для себя ифы разбрасывал, чтоб проще было .
Так вот так как никто не писал(посотри когда тема создана) пошел через Ифы(похожим способом). Вот токо при проверке второе разветвление не пахало. Тоесть проверялось, но не пахало. С кодом все было нормально. Ошибки небыло - уверен.
Короче не пошло.

Сделал кординально по другому.
При создании формы пермым был запрос "На скоко колонок вы хотите базу?". И в зависимости от того какая цифра была введена выполнялся соответствующий код. кстати использовал switch. Проще...Все равно пасибо, первый человек, которому было не лень

[s]Исправлено: Galosh, 16:48 27-06-2003[/s]

-------
У вас не виснет Windows ?!! Руки кривые ... :)


Отправлено: 15:47, 27-06-2003 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Создание базы данных на с++builder

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход