![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание dbf таблицы , создание индексного файла. [D6, dBase, FoxPro]
Скиф © (2005-10-07 16:07:00)На форме имеются компоненты TTable и TDataSourse. Как в RunTime:
1. Создать таблицу dbf нужной структуры, если файла таблицы на диске нет?
2. Создать индексный файл и переиндексировать таблицу, если таблица на диске есть, а индексного файла нет?
Буду очень благодарен за помощь.
Anatoly Podgoretsky (2005-10-11 16:11:00) [1]Скиф © (11.10.05 10:50) [6]
Зачем тогда приводишь ложную информацию?
mr.IL (2005-10-11 13:05:00) [2]Чем тебе через 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.
Desdechado (2005-10-11 11:25:00) [3]SQL:
CREATE TABLE
CREATE INDEX
Скиф (2005-10-11 10:50:00) [4]Это не у меня, это в примере из интерактивного Help, взятого за основу. Соответственно, менял и TableType и прочие настройки, указывал явно тип таблицы и т.д. С Paradox получается, а с FoxPro - нет. На AddIndex ругается в том смысле, что не существует индексного файла, на CreateTable - что не существует таблицы. Как использовать TQery в случае dbf я попросту не знаю, поэтому и не пытался.
Но всё равно - спасибо за помощь.
Anatoly Podgoretsky (2005-10-10 18:23:00) [5]Скиф © (10.10.05 11:20) [4]
А с какой оно стати создаст dBase если у тебя TableType := ttParadox;
Как создать для него индексный файл?
TTable.AddIndex
Естественно для ФоксПро очень много ограничений на индексы и тип таблицы тоже должен быть ttFoxPro
Скиф (2005-10-10 11:20:00) [6]Пробовал 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-08 12:51:00) [7]TTable.CreateTable
mr.il (2005-10-08 07:43:00) [8]Блин. Похоже они уже в архиве. Короче используй TQery и почитай Local SQL Help из поставки дельфы по теме create table.
mr.il (2005-10-08 07:39:00) [9]Посмотри мои посты здесь. Мне отвечали на подобный вопрос.