![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
еще вопрос по работе с вайлами, только *.dbf
mixam © (2004-07-28 10:58:00)надо программно создать дбф-ку и с ней работать? Как это сделать?
Anatoly Podgoretsky (2004-07-29 09:52:00) [1]mixam (29.07.04 07:10) [14]
Что угодно, совместимое с tcomponent
sniknik (2004-07-29 08:16:00) [2]> а что передвать в параметре Create(tcomponent)?
component родителя, можно nil но тогда нужно самому об уничтожении заботится.
mixam (2004-07-29 07:10:00) [3]а что передвать в параметре Create(tcomponent)?
Vlad (2004-07-28 16:59:00) [4]
> mixam (28.07.04 16:55) [12]
> а на какой болт в справке пишется create после определения
> всех свойстви тп.?
Create и CreateTable. Разницу чувствуешь ?
По правилам ООП объект сначала должен быть создан, а уж потом обращение ко всем его свойствам, методам и событиям.
Создавать экземпляр TTable нужно с помощью конструктора Create, а создавать саму таблицу (физически на диске) - с помощью метода CreateTable
mixam (2004-07-28 16:55:00) [5]а на какой болт в справке пишется create после определения всех свойстви тп.?
вообще пару строчек можно написать примера?
Vlad (2004-07-28 16:49:00) [6]
> mixam (28.07.04 16:42) [10]
> каким методом?
Create
ps Может для начала основы изучим ? Или хотябы изредка справку смотреть начнем ?
mixam (2004-07-28 16:42:00) [7]каким методом?
MU (2004-07-28 16:39:00) [8]а кто объект TableOut создавать будет?
mixam (2004-07-28 16:28:00) [9]почему на первом же операторе вываливается в ошибку?
procedure TForm1.Button1Click(Sender: TObject);
var TableOut : Ttable;
begin
TableOut.Active := False;
TableOut.DatabaseName :=ExtractFilePath(paramstr(0));
TableOut.TableName:='cspr36.dbf';
if not(TableOut.Exists) then
begin
with TableOut do
begin
TableType := ttDBase;
with FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := 'id';
DataType := ftinteger;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Date';
DataType := ftDate;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Tovar';
DataType := ftString;
size := 200;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Post';
DataType := ftString;
size := 200;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Kol';
DataType := ftinteger;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Cena';
DataType := ftCurrency;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Proizv';
DataType := ftString;
size := 200;
Required := True;
end;
end;
with IndexDefs do
begin
Clear;
with AddIndexDef do
begin
Name := '';
Fields := 'id';
Options := [ixPrimary];
end;
end;
CreateTable;
Open;
close;
{
Insert;
FieldByName('id').Value := i'Áóõãàëòåðèÿ';
FieldByName('Proisv').AsBoolean := false;
Post;
Insert;
FieldByName('Dep').AsString := 'Öåõ 1';
FieldByName('Proisv').AsBoolean := true;
Post;
Insert;
FieldByName('Dep').AsString := 'Öåõ 2';
FieldByName('Proisv').AsBoolean := true;
Post;
} end;
end;
end;
mixam (2004-07-28 11:25:00) [10]большой рахмед
Vlad Oshin (2004-07-28 11:16:00) [11]8.2.4. Создание новой таблицы
procedure CreateTable;
Метод CreateTable создает новую пустую таблицу. Перед созданием таблицы для данного компонента ТТаЫе нужно указать:
имя БД - в свойстве DatabaseName;
имя таблицы - в свойстве TableName;
тип таблицы - в свойстве ТаЫеТуре. Возможно указание следующих
типов:
tiASCII: многоколончатый текстовый файл, используемый для чтения
как ТБД;
ttDBase: таблица dBASE;
ttParadox: таблица Paradox;
• описания полей - в свойстве FieldDefs;
• описания индексов - в свойстве IndexDefs.
Для добавления описаний полей в свойство FieldDefs оно сначала очищается, а затем для каждого поля информация в FieldDefs заносится методом procedure Add(const Name: string; DataType: TFieldType; Size: Word; Required: Boolean);
где:
параметр Name определяет имя поля;
параметр Data Type определяет тип поля:
TFieldType = (ftUnknown, ftString, ftSmallint, ftlnteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary);
параметр Size определяет размер поля (если его указание необходимо) или О (если тип поля подразумевает его размер, например ftlnteger); параметр Required определяет, должно ли поле в обязательном порядке содержать значение.
Для добавления описаний индексов в свойство IndexDefs оно сначала очищается, а затем для каждого поля информация в IndexDefs заносится методом
procedure Add(const Name, Fields: string; Options: TIndexOptions);
где
параметр Name определяет название индекса;
параметр Fields определяет список индексных полей. В случае нескольких полей их имена разделяются точкой с запятой. Могут быть указаны только те поля, описания которых перед этим добавлены в свойство FieldDefs; параметр Options определяет свойства индекса (см. описание метода Addlndex).
Пример. Создать новую ТБД с именем 'NewT' в БД 'bookl', состоящую из двух полей - символьного поля FIO и целочисленного Oklad, с одним первичным индексом по полю FIO:
WITH Tablel do begin
// укажем БД, имя новой ТБД, тип ТБД
Active := False;
DatabaseName := Abook';
TableName := Editl.Text;
TableType := ttParadox;
// опишем поля создаваемой ТБД
WITH FieldDefs do begin
Clear;
Add('FIO', ftString, 30, False);
AddTOklad', ftlnteger, 0, False); END;//with FieldDefs // опишем индексы создаваемой ТБД WITH IndexDefs do begin
Clear;
Add(1Index_FIO' , 'FIO', [ixPrimary, ixUnique]); END;//with IndexDefs CreateTable; // создадим ТБД Active := True; // откроем ее END;//WITH Tablel
Заметим, что ТБД может быть создана также и при помощи SQL-оператора CREATE TABLE. Для "персональных" СУБД типа Paradox и dBase это альтернативный методу CreateTable способ; для "промышленных" СУБД это единственный способ динамического создания ТБД из работающего приложения, реализованного с помощью Delphi.
Vovchik_A (2004-07-28 11:15:00) [12]2mixam (28.07.04 11:10) [4]
Хелп на TTable.CreateTable посмотри
Vovchik_A (2004-07-28 11:10:00) [13]Если мне память не изменяет, то в хелпе пример описан.
mixam (2004-07-28 11:10:00) [14]
> Зачем программно, долго и много ошибок наделаешь пока научишься,
> создай с помощью Databese Desktop
так надо
Anatoly Podgoretsky (2004-07-28 11:07:00) [15]Зачем программно, долго и много ошибок наделаешь пока научишься, создай с помощью Databese Desktop
Fay (2004-07-28 11:06:00) [16]Почту смотри.