Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Внизеще вопрос по работе с вайлами, только *.dbf Найти похожие ветки
← →
mixam (2004-07-28 10:58) [0]надо программно создать дбф-ку и с ней работать? Как это сделать?
← →
Fay © (2004-07-28 11:06) [1]Почту смотри.
← →
Anatoly Podgoretsky © (2004-07-28 11:07) [2]Зачем программно, долго и много ошибок наделаешь пока научишься, создай с помощью Databese Desktop
← →
Vovchik_A © (2004-07-28 11:10) [3]Если мне память не изменяет, то в хелпе пример описан.
← →
mixam (2004-07-28 11:10) [4]
> Зачем программно, долго и много ошибок наделаешь пока научишься,
> создай с помощью Databese Desktop
так надо
← →
Vovchik_A © (2004-07-28 11:15) [5]2mixam (28.07.04 11:10) [4]
Хелп на TTable.CreateTable посмотри
← →
Vlad Oshin © (2004-07-28 11:16) [6]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.
← →
mixam (2004-07-28 11:25) [7]большой рахмед
← →
mixam (2004-07-28 16:28) [8]почему на первом же операторе вываливается в ошибку?
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;
← →
MU © (2004-07-28 16:39) [9]а кто объект TableOut создавать будет?
← →
mixam (2004-07-28 16:42) [10]каким методом?
← →
Vlad © (2004-07-28 16:49) [11]
> mixam (28.07.04 16:42) [10]
> каким методом?
Create
ps Может для начала основы изучим ? Или хотябы изредка справку смотреть начнем ?
← →
mixam (2004-07-28 16:55) [12]а на какой болт в справке пишется create после определения всех свойстви тп.?
вообще пару строчек можно написать примера?
← →
Vlad © (2004-07-28 16:59) [13]
> mixam (28.07.04 16:55) [12]
> а на какой болт в справке пишется create после определения
> всех свойстви тп.?
Create и CreateTable. Разницу чувствуешь ?
По правилам ООП объект сначала должен быть создан, а уж потом обращение ко всем его свойствам, методам и событиям.
Создавать экземпляр TTable нужно с помощью конструктора Create, а создавать саму таблицу (физически на диске) - с помощью метода CreateTable
← →
mixam (2004-07-29 07:10) [14]а что передвать в параметре Create(tcomponent)?
← →
sniknik © (2004-07-29 08:16) [15]> а что передвать в параметре Create(tcomponent)?
component родителя, можно nil но тогда нужно самому об уничтожении заботится.
← →
Anatoly Podgoretsky © (2004-07-29 09:52) [16]mixam (29.07.04 07:10) [14]
Что угодно, совместимое с tcomponent
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.039 c