Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

еще вопрос по работе с вайлами, только *.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]

Почту смотри.


Наверх

Титульная страница Поиск, карта сайта Написать письмо