Главная страница
    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.008 c
1-93471
ГС ТОФ
2004-01-18 12:00
2004.01.29
Работа со слоями


9-93315
r0n1n
2003-07-16 03:08
2004.01.29
Модели...


1-93574
mixa
2004-01-17 04:43
2004.01.29
Как изменить дату на компьютере?


3-93331
paul_k
2003-12-30 09:31
2004.01.29
Совсем запутался c uniqueidentifier.


1-93540
Zeon
2004-01-16 21:44
2004.01.29
Событийные процедуры.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский