Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure / 15 сообщений из 15, страница 1 из 1
11.03.2003, 17:04
    #32117627
snwmn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Уважаемые,
помогите создать копию таблицы без ее содержания,
имеется 1.dbf ннужно создать 2.dbf со структурой 1.dbf но без записей.
При копировани файла 1.dbf в 2.dbf и помледующем удалении записей "DELETE ...." из 2.dbf размер файла остается прежним, что не удовлетворяет требованиям. Помогите
Спасибо зарание.
...
Рейтинг: 0 / 0
11.03.2003, 17:09
    #32117634
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Была программа во времена Clipper 5.0 DBU.exe - она делела все
возможные операции с dbf файлами.
...
Рейтинг: 0 / 0
11.03.2003, 17:09
    #32117637
_Александр_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
А что же там тогда остается? Скорее всего вы делаете пометку на удаление, а не само удаление.
...
Рейтинг: 0 / 0
11.03.2003, 17:14
    #32117646
snwmn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Требуется все это проделать средствами Delphi а не внешними программами
StrSQL:='DELETE FROM TABLE';
fmMain.Query1.Close;
fmMain.Query1.SQL.Clear;
fmMain.Query1.SQL.Append(StrSQL);
fmMain.Query1.Open;
...
Рейтинг: 0 / 0
11.03.2003, 17:18
    #32117657
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Согласно формату dbf файла, удаление записи не приводит к ее физическому удалению - запись только помечается на удаление, и может быть востановленна в любой момент.
Физическое удаление помеченных на удаление записей происходит после выполнения команды PACK.
...
Рейтинг: 0 / 0
11.03.2003, 17:23
    #32117665
Aleksei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
И где эту команду PACK поставить?
...
Рейтинг: 0 / 0
11.03.2003, 17:26
    #32117671
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Хороший вопрос :) (PACK команнда FOXPRO/CLIPPER/ и т.д.)
Через что осуществляется доступ к dbf - ADO, BDE, ... ?
...
Рейтинг: 0 / 0
11.03.2003, 17:34
    #32117684
snwmn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
BDE
можно оттолкнутся от дргого???
Создание пустой таблицы по структуре существующей???
...
Рейтинг: 0 / 0
11.03.2003, 17:39
    #32117688
_Александр_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Могу предложить извращенный способ.
выполнить Select from ... into table2 where несуществующее_условие
...
Рейтинг: 0 / 0
11.03.2003, 17:40
    #32117691
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Прошу пощения, что гну свою линию:

строка из Help'a BDE

Example 1: Pack a Paradox or dBASE table.

This example will pack a Paradox or dBASE table therefore removing already deleted rows in a table. This function will also regenerate all out-of-date indexes (maintained indexes). This example uses the following input:

PackTable(Table1)

The function is defined as follows:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
// Pack a Paradox or dBASE table
// The table must be opened exclusively before calling this function...
procedure PackTable(Table: TTable);
var
  Props: CURProps;
  hDb: hDBIDb;
  TableDesc: CRTblDesc;
begin
  // Make sure the table is open exclusively so we can get the db handle...
  if not Table.Active then
    raise EDatabaseError.Create('Table must be opened to pack');
  if not Table.Exclusive then

    raise EDatabaseError.Create('Table must be opened exclusively to pack');

  // Get the table properties to determine table type...
  Check(DbiGetCursorProps(Table.Handle, Props));

  // If the table is a Paradox table, you must call DbiDoRestructure...
  if Props.szTableType = szPARADOX then begin
    // Blank out the structure...
    FillChar(TableDesc, sizeof(TableDesc),  0 );
    // Get the database handle from the table cursor handle...

    Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
    // Put the table name in the table descriptor...
    StrPCopy(TableDesc.szTblName, Table.TableName);
    // Put the table type in the table descriptor...
    StrPCopy(TableDesc.szTblType, Props.szTableType);
    // Set the Pack option in the table descriptor to TRUE...
    TableDesc.bPack := True;
    // Close the table so the restructure can complete...
    Table.Close;
    // Call DbiDoRestructure...

    Check(DbiDoRestructure(hDb,  1 , @TableDesc, nil, nil, nil, False));
  end
  else
    // If the table is a dBASE table, simply call DbiPackTable...
    if (Props.szTableType = szDBASE) then
      Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
    else
      // Pack only works on PAradox or dBASE; nothing else...
      raise EDatabaseError.Create('Table must be either of Paradox or dBASE ' +

        'type to pack');

  Table.Open;

end;
...
Рейтинг: 0 / 0
11.03.2003, 17:59
    #32117715
snwmn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Хорошо, можно убить записи, верю, но можно ли узнать структуру и создать подобный файл основываясь на структуре существующего,
было бы очень здорово
Спасибо.
...
Рейтинг: 0 / 0
11.03.2003, 18:11
    #32117732
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
TTable.CreateTable - оно все и сделает
...
Рейтинг: 0 / 0
11.03.2003, 18:31
    #32117747
snwmn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Select не катит -возвращает неправильные типы полей Integer поменял на double итд
CreateTable-
Кривоватенько както,
Хорошо могу поставить вопрос след образом:
Как узнать структуру DBF или считать часть физического файла и откопировать это единственный способ????
...
Рейтинг: 0 / 0
12.03.2003, 03:33
    #32117851
Dikobrazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Я как-то делал чтение/запись dbf-файла напрямую...

Вот структура заголовка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
TDBFHeader=record
    ver: byte;
    UpdYear: byte;
    UpdMonth: byte;
    UpdDay: byte;
    RecNum: longword;
    HdrLen: word;
    RecLen: word;
    reserved12: word;
    IncompleteTrans: byte;
    Encrypt: byte;
    FreeRecThrd: longword;
    Multiuser:  array[ 0 .. 7 ] of byte;
    Mdx: byte;
    LangDrv: byte;
    reserved30: word;
  end;

Значит, так: берешь dbf-файл, определяешь длинну заголовка с описанием полей (HdrLen, или word по смещению 8 от начала файла), копируешь фрагмент от 0 до HdrLen в другой файл и в конце добавляешь символ с кодом 26. Да, и RecNum не забудь обнулить, а если есть индекс, то и Mdx.
...
Рейтинг: 0 / 0
12.03.2003, 10:19
    #32118018
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
Описание структуры DBF файлов:

Начало статьи ....
<
Структура DBF-файлов для непродвинутых.

Все было бы хорошо, если бы не BDE...
Нет, BDE - это очень даже хорошо, плохо то, что использовав в программе однажды TTable, приходится ломать голову над тем, как же с минимальными потерями "прикрутить" BorlandDatabaseEngine к пользовательской машине. Это первое, что заставляет сесть за изучение заголовков DBF-файлов. И второе. Эти самые DBF-файлы имеют такую особенность, как разрушение заголовков. И третье, и четвертое, и пятое...
Для Вас не составляет сложности написать компонент, который работает с DBF-таблицами?.

В этом случае НЕМЕДЛЕННО прекратите чтение статьи!

А мы же посмотрим, что из себя представляют заголовки DBF-файлов и как можно использовать свои знания о них в практическом применении.
>

http://www.delphikingdom.com/helloworld/dbheader.htm
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]