implementation
usesDBITYPES, DBIERRS, DBIPROCS;
{$R *.DFM}
procedureTForm1.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;
procedureTForm1.CheckBox1Click(Sender: TObject);
begin
ShowDeleted(Table1, CheckBox1.Checked);
end;
end.
dBase-файлы не поддерживают пароли. Естественно, вы можете создать свои собственные методы поддержки паролей. Но это будет работать только с вашими приложениями. Боюсь, что при наличии тысяч читателей/конверторов dBase, этот способ не годится.
Показ меток 'удаленных' записей в dBASE-файлах
Для начала вы должны включить SoftDeletes, после чего вы сможете просматривать записи, помеченные к удалению. В противном случае, вы их не увидите. По умолчанию, для файлов DBF, SoftDeletes установлен в False. Вот логика работы:
procedureTForm1.Button1Click(Sender: TObject);
var
B: BOOL;
W: Word;
begin
Check(DbiSetProp(hDBIObj(Table1.Handle), curSOFTDELETEON, longint(True)));
{ Проверяем, что это работает }
Check(DbiGetProp(hDBIObj(Table1.Handle), curSOFTDELETEON, @B, sizeof(B), W));
ifB = False then Label2.Caption := 'Не помечена'
elseLabel2.Caption := 'Помечена';
end;
Когда указатель на запись указывает на запись, которую вы хотите удалить, используйте следующую логику:
Table1.UpdateCursorPos;
Check(DbiUndeleteRecord(Table1.Handle));
Метод UpdateCursorPos устанавливает основной курсор BDE на позицию курсора текущей записи, который существуют только для того, чтобы все работало правильно. Вам нужно только вызвать этот метод прямым вызовом одной из BDE API функций (такой как, например, DbiUndeleteRecord).
Ну и, наконец, чтобы все работало, поместите модули DBIPROCS и DBITYPES с список USES.
Как заставить работать DB2 через протокол IPX?
Nomadicотвечает:
Связь Win-клиента c DB2 в сети Netware
Hастройка доступа к DB2
1. Связь с использованием протокола IPX/SPX.
Возможны два варианта доступа:
• через сервер NETWARE;
• прямая адресация.
1.1. Конфигурация для доступа через сервер.
Замечание: Проверялся доступ через сервера NW 3.11 и 3.12. Для 4.х нужно еще разобраться.
1.1.1. DB2 Сервер
• должна быть установлена OS/2 Warp или OS/2 Warp Connect;
• включена поддержка NETWARE;
• в CONFIG.SYS в переменную среды DB2COMM добавить (через запятую) IPXSPX и перезагрузить систему;
• создать командный файл DBIPXSET.CMD следующего вида:
db2 update dbm cfg using fileserver objectname dbserver
где – – имя сервера;
• выполнить командный файл DBIPXSET.CMD;
• перестартовать сервер базы данных;
• создать командный файл DBIPXREG.CMD следующего вида:
db2 register nwbindery user
где – – имя пользователя, обладающего правами администратора на сервере ;
• выполнить командный файл DBIPXREG.CMD;
• ответить на запрос пароля.
1.1.2. WINDOWS-клиент
• установить WINDOWS 3.1 или WfWG 3.11;
• установить клиента NETWARE от версии 4.х;
• при установке влючить поддержку WINDOWS;
• установить клиента DB2 для WINDOWS;
• используя программу Client Setup описать новый узел – сервер базы данных:
Name – <���любое имя>
Protocol – IPX/SPX
File server –
Object name – dbserver
• описать базу данных и разрешить доступ к ней через ODBC.
1.2. Конфигурация для доступа через прямую адресацию
1.2.1. DB2 Сервер
• см. п 1.1.1;
• найти в директории x:\sqllib\misc программу DB2IPXAD.EXE и выполнить ее;
• записать полученный адрес;
1.2.2. WINDOWS-клиент
• см. п. 1.1.2. (первые три шага);
• используя программу Client Setup описать новый узел – сервер базы данных:
Name – <���любое имя>
Protocol – IPX/SPX
File server – *
Object name – <���адрес полученный от DB2IPXAD.EXE>
• описать базу данных и разрешить доступ к ней через ODBC.
Почему DB2 ругается на Create Trigger?
Nomadicотвечает:
Я тут писал по поводу того, что у меня не работали триггеры. Все дело оказалось в правиле написания команды « create trigger». Если все остальные команды корректно воспpинимаются на любом регистре, то эта – только набранная одними большими буквами.
Модуль данных для каждого MDIChild
Читать дальше