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

строка из 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
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
    #32117715
snwmn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, можно убить записи, верю, но можно ли узнать структуру и создать подобный файл основываясь на структуре существующего,
было бы очень здорово
Спасибо.
...
Рейтинг: 0 / 0
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
    #32117732
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TTable.CreateTable - оно все и сделает
...
Рейтинг: 0 / 0
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
    #32117747
snwmn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select не катит -возвращает неправильные типы полей Integer поменял на double итд
CreateTable-
Кривоватенько както,
Хорошо могу поставить вопрос след образом:
Как узнать структуру DBF или считать часть физического файла и откопировать это единственный способ????
...
Рейтинг: 0 / 0
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
    #32117851
Dikobrazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то делал чтение/запись 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
Помогите ПЛЗЗЗЗЗЗЗЗ!!!! DBF copy structure
    #32118018
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание структуры DBF файлов:

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

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

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

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

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


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