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

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

DBGRID и удаленные записи [D7, XP]


LBP ©   (2006-10-19 18:42:00) 

Мастера, подскажите как научить DBGrid отображать помеченные на удаление записи в таблице Paradox ?
Заранее спасибо!


From kz   (2006-10-20 16:55:00) [1]

Для DBF. Делай так:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables;

type
 TForm1 = class(TForm)
   Table1: TTable;
   DataSource1: TDataSource;
   DBGrid1: TDBGrid;
   DBNavigator1: TDBNavigator;
   CheckBox1: TCheckBox;
   procedure CheckBox1Click(Sender: TObject);
 public
   procedure ShowDeleted(Table: TTable; ShowDeleted: Boolean);
 end;

var
 Form1: TForm1;

implementation

uses DBITYPES, DBIERRS, DBIPROCS;

{$R *.DFM}

procedure TForm1.ShowDeleted(Table: TTable; ShowDeleted: Boolean);
var
 rslt: DBIResult;
 szErrMsg: DBIMSG;
begin
 Table.DisableControls;
 try
   Check(DbiSetProp(hDBIObj(Table.Handle), curSOFTDELETEON,
     LongInt(ShowDeleted)));
 finally
   Table.EnableControls;
 end;
 Table.Refresh;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 ShowDeleted(Table1, CheckBox1.Checked);
end;

end.


Anatoly Podgoretsky   (2006-10-20 16:14:00) [2]

Мне повезло еще больше, я знал что Парадокс бяка, еще до программирования. Изначально это был язык программирования макросов
Mеню/два раза вправо. четыре раза вниз/F2/что то /F2/Esc


Германн   (2006-10-20 14:56:00) [3]


> Про Paradox мало знаю и не пользуюсь им.

Везёт же некоторым! :-)


Elen   (2006-10-20 13:00:00) [4]


> Anatoly Podgoretsky

Спасибо за ликбез. Я работаю всегда с FoxPro, поэтому такой проблемы как удаление записей у меня не было в принципе, поэтому и спрашиваю. Про Paradox мало знаю и не пользуюсь им.


Anatoly Podgoretsky   (2006-10-20 12:17:00) [5]

У парадокса сложная кластерная система хранения записей, поэтому он так часто портится.

Если требуется показ/восстановление, то это должно решать дизайном системы, надо просто заложить это в архитектуру проекта. А вот например у меня практически запрещено удаление записей в базе, только после сложной процедуры, что в базу попало, то должно лежать вечно.


Anatoly Podgoretsky   (2006-10-20 12:15:00) [6]


> Elen ©   (20.10.06 09:04) [6]
> Вопрос на засыпку Знаю что FoxPro в DBF не сразу физически
> удаляет записи, а лишь помечает их как удаленные и там действительно
> есть возможность посмотреть эти записи. Вроде Paradox тоже
> помечает записи - значит должен быть какой то способ (команда
> провайдеру) показать помеченные. Так ли это?

Помечают практически все СУБД, а вот показывать и восстанавливать могут только xBase системы.
Парадокс, вообще гадская вещь, если найти хакерскую программу, которая как бы "восстанавливает" удаленные записи, то свихнешься от результата, а оно тебе надо?


ЮЮ   (2006-10-20 10:46:00) [7]

Нет, не так.  
Т.к. для парадокса верно "еще и повторно используют пространство". Более того некая попытка для этого делается уже при удалении записи. Т.е. даже если записи только удалять, ничего не вставляя - данные будут уже потяряны, т.к. после удаления записи оставшиеся записи блока смещаюися внутри оного. По крайней мере я это обнаружил, когда пытался восстановить случайно удаленные данные.


MsGuns   (2006-10-20 10:46:00) [8]

>Elen ©   (20.10.06 09:18) [9]
>Значит я могу обратиться к провайдеру Paradox через ADOComand.ComandText. Остается только узнать команду переключающую показ удаленных. Так?

Нет. Парадокс не возвращает удаленные записи по запросам. Можно считать, что их нет вообще.
О чем и сказано в постах Анатолия.


Elen   (2006-10-20 09:18:00) [9]


> А пометку делают все СУБД

Значит я могу обратиться к провайдеру Paradox через ADOComand.ComandText. Остается только узнать команду переключающую показ удаленных. Так?


Anatoly Podgoretsky   (2006-10-20 09:14:00) [10]

Да xBase обладает такой уникальной способность, там не только можно посмотреть, но и восстановить уделеные записи, среди остальных рапостраненых СУБД я других таких не знаю.

А пометку делают все СУБД, некоторые еще и повторно используют пространство.


Loginov Dmitry   (2006-10-20 09:14:00) [11]

Ну тады [1]


Elen   (2006-10-20 09:04:00) [12]


> Anatoly Podgoretsky

Вопрос на засыпку Знаю что FoxPro в DBF не сразу физически удаляет записи, а лишь помечает их как удаленные и там действительно есть возможность посмотреть эти записи. Вроде Paradox тоже помечает записи - значит должен быть какой то способ (команда провайдеру) показать помеченные. Так ли это?


Anatoly Podgoretsky   (2006-10-20 08:52:00) [13]

Скрипач ты красное от зеленого отличаешь?
DB от DBF


LBP   (2006-10-20 08:02:00) [14]

Мне необходимо, чтобы программа показывала и ранее удаленные записи в таблице. Допустим удаленные не из моей программы. На сколько я знаю в программе DBF Viewer такая штучка есть. Как реализовать это в Delphi, подскажите плииз.


Leonid Troyanovsky   (2006-10-19 20:37:00) [15]


> Loginov Dmitry ©   (19.10.06 20:00) [2]

> Добавь в таблицу булево поле. Перед удалением с помощью
> DBGridа отмечай это поле (установкой в True, например).


- Куда вы меня везете?
- В морг.
- А я еще не умер!
- А мы еще не доехали.

--
Regards, LVT.


Loginov Dmitry   (2006-10-19 20:00:00) [16]

Добавь в таблицу булево поле. Перед удалением с помощью DBGridа отмечай это поле (установкой в True, например). Удаляй помеченные записи при возникновении определенного события (например при нажатии кнопки).


Anatoly Podgoretsky   (2006-10-19 18:46:00) [17]

Что упало, то пропало


Наверх

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