Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

еще вопрос по работе с вайлами, только *.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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.075 c
3-1090582091
karat
2004-07-23 15:28
2004.08.22
Запрос к FireBird. Не хватает памяти.


1-1091801054
Ivolg
2004-08-06 18:04
2004.08.22
Координаты


1-1091736526
GuAV
2004-08-06 00:08
2004.08.22
И снова D7 + XP Manifest... :-(


3-1090616137
saNat
2004-07-24 00:55
2004.08.22
Ускорение выполнения SQL - запросов


1-1091805745
ghg
2004-08-06 19:22
2004.08.22
размер стека