Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизСоздание dbf таблицы , создание индексного файла. Найти похожие ветки
← →
Скиф © (2005-10-07 16:07) [0]На форме имеются компоненты TTable и TDataSourse. Как в RunTime:
1. Создать таблицу dbf нужной структуры, если файла таблицы на диске нет?
2. Создать индексный файл и переиндексировать таблицу, если таблица на диске есть, а индексного файла нет?
Буду очень благодарен за помощь.
← →
mr.il © (2005-10-08 07:39) [1]Посмотри мои посты здесь. Мне отвечали на подобный вопрос.
← →
mr.il © (2005-10-08 07:43) [2]Блин. Похоже они уже в архиве. Короче используй TQery и почитай Local SQL Help из поставки дельфы по теме create table.
← →
Anatoly Podgoretsky © (2005-10-08 12:51) [3]TTable.CreateTable
← →
Скиф © (2005-10-10 11:20) [4]Пробовал TTable.CreateTable. В том-то и соль, что Paradox она создаёт, а dbf - нет. Ругается в том смысле, что такой-то таблицы не существует. Сам знаю, что не существует, я же просил её создать! За основу взял следующий пример из Help:
The following example shows how to create a table.
with Table1 do begin
Active := False;
DatabaseName := "DBDEMOS";
TableType := ttParadox;
TableName := "CustInfo";
{ Don"t overwrite an existing table }
if not Table1.Exists then begin
{ The Table component must not be active }
{ First, describe the type of table and give }
{ it a name }
{ Next, describe the fields in the table }
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := "Field1";
DataType := ftInteger;
Required := True;
end;
with AddFieldDef do begin
Name := "Field2";
DataType := ftString;
Size := 30;
end;
end;
{ Next, describe any indexes }
with IndexDefs do begin
Clear;
{ The 1st index has no name because it is
{ a Paradox primary key }
with AddIndexDef do begin
Name := "";
Fields := "Field1";
Options := [ixPrimary];
end;
with AddIndexDef do begin
Name := "Fld2Indx";
Fields := "Field2";
Options := [ixCaseInsensitive];
end;
end;
{ Call the CreateTable method to create the table }
CreateTable;
end;
end;
При попытке использовать:
TableType := ttDBase;
TableName := "CustInfo.dbf";
или
TableType := ttDBase;
TableName := "CustInfo.";
или
TableType := ttDefault;
TableName := "CustInfo.dbf";
пример успешно не работает. Что делать?
И второй вопрос: имеется уже готовый *.dbf, созданый в FoxPro, не индексированый. Как создать для него индексный файл?
BDE, естественно, установлен, но с alias-ами связываться не хотелось бы.
← →
Anatoly Podgoretsky © (2005-10-10 18:23) [5]Скиф © (10.10.05 11:20) [4]
А с какой оно стати создаст dBase если у тебя TableType := ttParadox;
Как создать для него индексный файл?
TTable.AddIndex
Естественно для ФоксПро очень много ограничений на индексы и тип таблицы тоже должен быть ttFoxPro
← →
Скиф © (2005-10-11 10:50) [6]Это не у меня, это в примере из интерактивного Help, взятого за основу. Соответственно, менял и TableType и прочие настройки, указывал явно тип таблицы и т.д. С Paradox получается, а с FoxPro - нет. На AddIndex ругается в том смысле, что не существует индексного файла, на CreateTable - что не существует таблицы. Как использовать TQery в случае dbf я попросту не знаю, поэтому и не пытался.
Но всё равно - спасибо за помощь.
← →
Desdechado © (2005-10-11 11:25) [7]SQL:
CREATE TABLE
CREATE INDEX
← →
mr.IL © (2005-10-11 13:05) [8]Чем тебе через TQery не канает. Там все просто и доступно.
Вот рабочий кусман.
_ChOfPeriod := Какое-то значение
_ChOfPeriod := _ChOfPeriod+"1.dbf";
_FName := "C"+_DatePart+_ChOfPeriod;
with Q_CreateTable do begin
Close;
SQL.Clear;
SQL.Add("CREATE TABLE ""+_FName+""");
SQL.Add("(DistrId CHAR(15), ");
SQL.Add("Cust_Id CHAR(15), ");
SQL.Add("CustName CHAR(200), ");
SQL.Add("INN NUMERIC(12), ");
SQL.Add("CustRegId NUMERIC(2), ");
SQL.Add("CustAreaId NUMERIC(13), ");
SQL.Add("CustCityId NUMERIC(13), ");
SQL.Add("CustAdd CHAR(200), ");
SQL.Add("DateBegin DATE, ");
SQL.Add("DateEnd DATE, ");
SQL.Add("uid CHAR(15))");
ExecSQL;
SQL.Clear;
SQL.Add("CREATE INDEX uid ON ""+_FName+"" (uid)");
ExecSQL;
end;
Гораздо приятнее чем через TTable.
← →
Anatoly Podgoretsky © (2005-10-11 16:11) [9]Скиф © (11.10.05 10:50) [6]
Зачем тогда приводишь ложную информацию?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.048 c