Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

TIBTable.CreateTable   Найти похожие ветки 

 
Grihan   (2003-12-31 12:07) [0]

После вызова TIBTable.CreateTable для существующей базы, в которой уже существует таблица с именем, указанным TIBTable.TableName возникает ошибка: такая таблица уже существует, хотя в хелпе сказано:CreateTable overwrites an existing table’s structure and data.
Не подскажете в чем дело?
Спасибо.


 
Vick   (2003-12-31 12:12) [1]

А как на счет заразервированнsх классов???
Вас в школе не учили, что их нельзя использовать как имена переменных? А имена переменных должны быть уникальными? в пределах хотя бы процедуры (функции)???


 
Grihan   (2003-12-31 12:16) [2]

Да нет, имя то у меня ibtTable. Т.е.вызов такой: ibtTable.CreateTable;
Это я для наглядности написал, чтоб понятно какой класс использую...


 
Vick   (2003-12-31 12:18) [3]


> Grihan


Так ты их в рантайме создаешь? Или одна на форме валяется, а другую создаешь? Код напиши.


 
Johnmen   (2003-12-31 12:21) [4]

>Grihan

Потому, что, хоть и написано, что overwrites, на самом деле идет чистое создание таблицы.
И второе. Почему бы не выполнить просто запрос CREATE TABLE ... ? И проще и быстрей и понятней...


 
Grihan   (2003-12-31 12:25) [5]

На форме есть ibtTable: TIBTable;
там же на форме я ее связал с
ibdbBase: TIBDatabase; и
ibtTrans: TIBTransaction;
все посвязывал друг с другом.
Но ни базы, ни таблицы в реалии нет, поэтому создаю все в рантайме. Вот код:

ibdbBase.DatabaseName := FileName;//FileName приходит из вне

if not ibdbBase.Connected then
begin
Params := TStringList.Create;
if not FileExists(feFileIB.FileName) then
begin
Params.Add("USER "SYSDBA"");
Params.Add("PASSWORD "masterkey"");
Params.Add("PAGE_SIZE 4096");
ibdbBase.Params := Params;
ibdbBase.CreateDatabase;
end
else
begin
Params.Add("user_name=SYSDBA");
Params.Add("password=masterkey");
ibdbBase.Params := Params;
ibdbBase.Connected := True;
end;
Params.Free;
end;

try
ibtTable.Active := False;
ibtTable.TableName := "Main";
ibtTable.FieldDefs.Clear;
ibtTable.FieldDefs.Add("ISN", ftInteger, 0, True);
ibtTable.FieldDefs.Add("PARISN", ftInteger, 0, True);
ibtTable.FieldDefs.Add("ADDRESSLEVEL", ftSmallint, 0, True);
ibtTable.FieldDefs.Add("CLASSISN", ftInteger, 0, True);
ibtTable.FieldDefs.Add("ADDRESS", ftString, 40, False);
ibtTable.FieldDefs.Add("CODE", ftString, 15, False);
ibtTable.FieldDefs.Add("TARIFFZONE", ftString, 10, False);

ibtTable.IndexDefs.Clear;
ibtTable.IndexDefs.Add("Key", "ISN", [ixPrimary, ixUnique]);

ibtTrans.Active := True;
if ibtTable.Exists then
ibtTable.DeleteTable; //написал чтоб обсуждаемая ошибка не возникала
ibtTable.CreateTable;
except
end;


 
Vick   (2003-12-31 12:26) [6]

В хелпе пишут, что еще бы проверочку немешало бы поставить

if not IBTable1.Exists then begin.....end


 
Grihan   (2003-12-31 12:31) [7]

в хелпе так: to avoid overwriting an existing table, check Exists before calling CreateTable.
т.е. для предотвращения перезаписи существующей таблици следует проверить ее существование


 
Johnmen   (2003-12-31 12:33) [8]

>Grihan

На заборе тоже много чего пишут...:)
Ты смотри в корень. А корень - исходники !



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
6-93602
Sanya-spb
2003-11-24 16:20
2004.01.29
IdTCPServer vs IdTCPClient висят??


8-93588
SPeller
2003-09-17 07:56
2004.01.29
Что за формат?


14-93672
DimKa Nevidimka
2004-01-05 11:09
2004.01.29
И снова в бой....


3-93339
Gosha
2004-01-04 18:52
2004.01.29
Поле типа


14-93663
Knight
2004-01-07 20:11
2004.01.29
Canon i250 + XP Pro





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский