Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.03 c
3-1090906118
artem123
2004-07-27 09:28
2004.08.22
Инкрементное поле в Firebird 1.5 через dbExpress


9-1083477699
Smoke_Gomel
2004-05-02 10:01
2004.08.22
Анимированные спрайты в Delphix


3-1091426367
46_55_41_44
2004-08-02 09:59
2004.08.22
Как программно сжать БД MS Access?


3-1090847897
VadimKV
2004-07-26 17:18
2004.08.22
Присвоение значения переменой в ХП (FB1.5)


14-1091355181
VID
2004-08-01 14:13
2004.08.22
О FAQ е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский