Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 669

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 217

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

•  Доска для игры Реверси  94 551

•  Графические эффекты  6 570

•  Рисование по маске  5 643

•  Перетаскивание изображений  4 759

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

•  Теорема Монжа об окружностях  3 328

•  Пазл Numbrix  2 200

•  Заборы и коммивояжеры  2 849

•  Игра HIP  1 820

•  Игра Go (Го)  1 740

•  Симулятор лифта  2 072

•  Программа укладки плитки  1 798

•  Генератор лабиринта  2 240

•  Проверка числового ввода  1 925

•  HEX View  2 225

•  Физический маятник  1 911

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Определение удаления записей в .DBF



Взято из "Dtopics Database 1.10 from 3K computer Consultancy":

Dbase в BDE имеет большее количество ситуаций 'особого случая', чем таблицы SQL и Paradox, поскольку данный формат поддерживает выражения в индексах и прочие характеристики, например:

  1. Создание и пересоздание индекса

  2. DbiRegenIndexes( Table1.Handle ); { Регенерация всех индексов }
    

    создание индекса (зависит от того, существует ли выражение или нет)


    if (( Pos('(',cTagExp) + Pos('+',cTagExp) ) > 0 ) then
      Table1.AddIndex( cTagName, cTagExp, [ixExpression])  {<- ixExpression - _литерал_}
    else
      Table1.AddIndex( cTagName, cTagExp, []);
    

  3. Связки Master/Detail в выражениях дочерних индексов

    вызов процедуры BDE DbiLinkDetailToExp() вместо обычной DbiLinkDetail()

  4. Пакование таблиц

  5. with Table1 do
    StrPCopy( TName, TableName );
    Result := DBIPackTable( DbHandle, Handle, TName, szDBASE, TRUE );
    

  6. Задание видимости удаленных записей - вкл/выкл (например, dBase SET DELETED ON/OFF)

  7. DbiSetProp( hDBIObj(Table1.Handle), curSOFTDELETEON, LongInt(bValue));
    

  8. Задание частичного/полного соответствия символов - вкл/выкл (например, dBase SET EXACT ON/OFF)

  9. DbiSetProp( hDBIObj(Table1.Handle), curINEXACTON,   LongInt(bValue));
    

Ну и теперь сами вопросы:

Как мне увидеть записи dBASE, помеченные для удаления?"

В обработчике события AfterOpen вызовите приведенную ниже функцию. Включите DBITYPES, DBIERRS, DBIPROCS в список используемых модулей. Для вызова функции передайте ей в качестве аргумента имя TTable и TRUE/FALSE в зависимости от необходимости показа/скрытия удаленных записей. Пример:


procedure TForm1.Table1AfterOpen(DataSet: TDataset);
begin
  SetDelete(Table1, TRUE);
end;

procedure SetDelete(oTable: TTable; Value: Boolean);
var
  rslt: DBIResult;
  szErrMsg: DBIMSG;
begin
  try
    Table.DisableControls;
    try
      rslt := DbiSetProp(hDBIObj(oTable.Handle), curSOFTDELETEON,
        LongInt(Value));
      if rslt <> DBIERR_NONE then
      begin
        DbiGetErrorString(rslt, szErrMsg);
        raise Exception.Create(StrPas(szErrMsg));
      end;
    except
      on E: EDBEngineError do
        ShowMessage(E.Message);
      on E: Exception do
        ShowMessage(E.Message);
    end;
  finally
    Table.Refresh;
    Table.EnableControls;
  end;
end;

"Могу ли я создать в табличной сетке колонку, в которой будут показываться записи, помеченные для удаления из таблицы dBASE?"

Создайте вычисляемое поле, затем в обработчике события таблицы OnCalcField замените его таким образом:


procedure TForm1.Table1CalcFields(DataSet: TDataset);
var
  RCProps : RecProps;
  Result : DBIResult;
begin
  Result := DbiGetRecord(Table1.Handle, dbiNo

Рукописи не горят...





Похожие по теме исходники

Nstruct (работа с DBF)

DBF Navigator

Компонент TDBF




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте