Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 14:51 23.05.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема GET RDB$DEFAULT_VALUE
АвторEFEX (Нерегистриран) 
Публикувано05.10.05 18:51  



Преди да почна да ровя като журналист в л..но...

Ако някой знае ..pleasseee... help'МИ... :))))


(БД IBase6.x)(C++)
искам да прочета стойноста по подразбиране на полето в таблица
-------
"FIELD1" TIMESTAMP DEFAULT 'NOW' NOT NULL,
"FIELD2" INTEGER DEFAULT 1024.
т.е. искам да извлека (DEFAULT 'NOW') && (DEFAULT 1024) като текст ли като стойност ли де да знам и аз как е записано.

RDB$DEFAULT_VALUE във RDB$RELATION_FIELDS e BLOB
(възможно е и да не чета вярното поле)

ето кода:

==========================================
PDBFieldProp *DBFieldProp; //мисля тази структура ви е ясна
IBQuery->Close();
IBQuery->SQL->Clear();

IBQuery->SQL->Add("SELECT A.RDB$FIELD_POSITION+1, A.RDB$FIELD_NAME, A.RDB$DEFAULT_VALUE, A.RDB$NULL_FLAG,");
IBQuery->SQL->Add(" C.RDB$TYPE, C.RDB$TYPE_NAME, B.RDB$FIELD_LENGTH");
IBQuery->SQL->Add("FROM RDB$RELATION_FIELDS A");
IBQuery->SQL->Add(" LEFT JOIN RDB$FIELDS B ON A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME");
IBQuery->SQL->Add(" LEFT JOIN RDB$TYPES C ON C.RDB$TYPE=B.RDB$FIELD_TYPE");
IBQuery->SQL->Add("WHERE A.RDB$RELATION_NAME = :TABLENAME");
IBQuery->SQL->Add(" AND (C.RDB$FIELD_NAME='RDB$FIELD_TYPE')");
IBQuery->SQL->Add("ORDER BY RDB$FIELD_POSITION");

try{
IBQuery->Prepare();
IBQuery->Params->Items[0]->AsString = TableName; // тук напишете вашата таблица
IBQuery->Open();
while ( !IBQuery->Eof ){

DBFieldProp = new PDBFieldProp();
DBFieldProp->RDBNAME = IBQuery->Fields->Fields[1]->AsString;
DBFieldProp->RDBDEFAULT = IBQuery->Fields->Fields[2]->AsString;

if ( IBQuery->Fields->Fields[2]->IsBlob() ){
void *MyBuffer = malloc(IBQuery->Fields->Fields[2]->DataSize); // тук дебъгера дава DataSize = 0 ??
IBQuery->Fields->Fields[2]->GetData(MyBuffer,true);
DBFieldProp->RDBDEFAULT = IBQuery->Fields->Fields[2]->AsString;
delete MyBuffer;
}

DBFieldProp->RDBNOTNULL = (IBQuery->Fields->Fields[3]->AsInteger == 1);
DBFieldProp->RDBTYPE = IBQuery->Fields->Fields[4]->AsInteger;
DBFieldProp->RDBTYPENAME = IBQuery->Fields->Fields[5]->AsString;
DBFieldProp->RDBLENGTH = IBQuery->Fields->Fields[6]->AsInteger;
ListTables->AddObject(IBQuery->Fields->Fields[1]->AsString.Trim(),(TObject*)(DBFieldProp));
IBQuery->Next();
}
}catch(...){
IBQuery->Close();
}
IBQuery->Close();
======================================================

не съм сигурен че и с BLOB-a действам както трябва но кода за BLOB e ОТ хелпа..



Има само един начин да станеш човек: ...........................
(а защо се интересуваш)



Цялата тема
ТемаАвторПубликувано
* GET RDB$DEFAULT_VALUE EFEX   05.10.05 18:51
. * Re: GET RDB$DEFAULT_VALUE NDeu   06.10.05 08:18
. * Re: GET RDB$DEFAULT_VALUE EFEX   06.10.05 10:24
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.