- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的一个旧程序使用 dBase 表和 .MDX 索引 - 其他系统也使用这些表,所以我们只能使用它们。我们希望在我们的软件中用 FireDAC 替换 BDE。 FireDAC 似乎没有提供 BDE 方法 DbiRegenIndex 和 DbiPackTable(分别重新生成索引和打包表) - 有没有办法使用 FireDAC 执行这些功能?
最佳答案
下面的代码显示了如何使用 MS dBase 驱动程序对 dBase 表进行索引。我有使用 Ado 组件,而不是 FireDAC,因为它更容易设置所有它们的属性在代码中,这样你就可以看到我在做什么。请注意,以及CREATE INDEX
该驱动程序还支持DROP INDEX
。参见例如https://learn.microsoft.com/en-us/sql/odbc/microsoft/create-index-for-paradox(适用于 Paradox,但也适用于 dBase)
要为该项目做好准备,您需要使用以下命令设置一个名为 DBFTest 的 ODBC 系统 DSNMS dBase 驱动程序。
将此 Ado 示例转换为 FireDAC 应该很简单。
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
btnCreateTable: TButton;
ADOQuery1: TADOQuery;
btnOpenTable: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
btnDropTable: TButton;
btnAddIndex: TButton;
procedure FormCreate(Sender: TObject);
procedure btnAddIndexClick(Sender: TObject);
procedure btnCreateTableClick(Sender: TObject);
procedure btnDropTableClick(Sender: TObject);
procedure btnOpenTableClick(Sender: TObject);
public
procedure CreatedBaseTable;
end;
[...]
procedure TForm1.FormCreate(Sender: TObject);
begin
AdoConnection1.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=DBFTest';
end;
procedure TForm1.btnAddIndexClick(Sender: TObject);
var
Sql : String;
begin
if AdoQuery1.Active then
AdoQuery1.Close;
Sql := 'create index byID on dBaseTest (ID)';
AdoConnection1.Execute(Sql);
AdoQuery1.Open;
end;
procedure TForm1.btnCreateTableClick(Sender: TObject);
begin
CreatedBaseTable;
end;
procedure TForm1.btnDropTableClick(Sender: TObject);
var
Sql : String;
begin
Sql := 'drop table dBaseTest';
AdoConnection1.Execute(Sql);
end;
procedure TForm1.btnOpenTableClick(Sender: TObject);
begin
AdoQuery1.SQL.Text := 'select * from dBaseTest';
AdoQuery1.Open;
end;
procedure TForm1.CreatedBaseTable;
var
Sql : String;
i : Integer;
begin
Screen.Cursor := crSqlWait;
Update;
try
Sql := 'create table dBaseTest(ID int, AName char(20))';
AdoConnection1.Execute(Sql);
for i := 1 to 100 do begin
Sql := Format('insert into dBaseTest(ID, AName) values(%d, ''%s'')', [i, 'Name' + IntToStr(i)]);
AdoConnection1.Execute(Sql);
end;
finally
Screen.Cursor := crDefault
end;
end;
显然,要以这种方式“重新生成”索引,您只需删除它们(如果存在),如果不存在则处理任何异常,然后再次创建它们。
我不知道 dBase 驱动程序是否支持“pack table”命令,但您可能可以自己使用 INSERT INTO ... SELECT * FROM ...” 来将事件行复制到临时表中,然后从工作表中删除所有行,然后将它们从临时表中复制回来。
关于delphi - BDE 到 FireDAC : pack table, 重新生成索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48146958/
我使用悖论7创建了一个数据库。我通常进行的搜索是这样的语法: Table.Filter := 'Country=' + QuotedStr(Edit.Text); 这将返回那些国家字段与编辑中输入的文
我们有一个遗留应用程序使用 BDE。 (考虑到它的年龄,BDE 继续工作得非常好)。 有时我们的应用需要操作文件夹(重命名、移动等),但 .NET 或 .LCK 文件在文件夹中保持打开状态,从而阻止了
我最近的任务是跟踪使用 BitLocker 加密的笔记本电脑。我们有超过 300 台笔记本电脑,但不是同时在网络上。我接手的人正在使用流畅的命令行脚本为每台计算机创建一个 txt。 FOR /F %%
我正在为我的应用程序使用 BDS 2006 和 PostgreSQL。 我有以下代码,其中包含用于在我的表中查找主键值的查询。 Query.SQL.Clear; Query.SQL.Add('SE
请注意下面的编辑以获取更多信息和可能的解决方案 我们最近修改了一个大型 Delphi 应用程序,以使用 ADO 连接和查询,而不是 BDE 连接和查询。自该更改以来,性能变得非常糟糕。 我已经分析了该
背景:我有一个用 Delphi 编写的应用程序,它使用 Borland 数据库引擎 (BDE),通过 BDE 别名查看其数据。我已经设法通过远程桌面服务运行它,每个用户都可以在同一位置查看数据。如果每
我想知道 - BDE 使用的 .sch 模式文件格式是否有一个标准(如 RFC)? 格式描述here和 here 。似乎是基于this Microsoft format ,但并不完全相同。 示例 1
有人可以告诉我在哪里可以找到好的 BDE 安装程序吗? 这些链接将不再有效: http://info.borland.com/devsupport/bde/bdeupdate.html 最佳答案 ht
Informatica 是否有办法在进行 Hive 映射后处理 Hive 分区? 例如,假设数据来自数据库,informatica BDE 将文件写入 HDFS 目录。配置单元外部表位于该 HDFS
我有一个在 Delphi 7 下运行 BDE 的旧应用程序,现在购买了 Delphi XE。如果我尝试在 Delphi XE 下坚持使用 BDE,我会遇到大问题吗?还是转换最终会节省我的时间? 问题
我们正在迁移一个在 Delphi 5 中制作的相当大的应用程序(仍然让客户使用这个旧版本),它使用 BDE 连接到 SQL Server。确定的迁移路径是首先从 Delphi 5 迁移到 Delphi
情况如下: 我们程序的用户在尝试启动应用程序时突然开始收到来自 Borland 数据库引擎 (BDE) 的错误。错误消息表明无法初始化 BDE,并给出错误代码 $251e。用户使用的是 BDE 5.2
我对我的一个数据库表有以下查询: select count(*) as mycount from mytable where fieldone = :fieldone and fieldt
我在运行程序时遇到问题。我的代码太旧了,我不确定它是如何工作的。 Cannot resolve unit name 'DBTables' at line 20 Underclared indetifi
是否可以通过编程方式在 Java 中为 Paradox 创建 BDE 别名? 我正在尝试这样: import java.sql.DriverManager; import java.sql.SQLEx
我们有一个 Paradox 数据库表,我们希望使用 DSynchronize 之类的工具在网络上进行镜像。 我看到的问题是,Paradox 通过 BDE(Borland 数据库引擎)不会更新文件系统,
我有一个用 delphi 5 编写的非常旧的应用程序,在一些使用 BDE 的客户中运行。现在,一些使用 Windows Vista 和 7 的用户已经尝试了多用户访问的一些问题。我认为这些问题与 ne
我有一个用 Delphi 2007 编写的小型 datasnap 服务器,用于访问 BDE。它在 Windows 2000 和 XP 上运行良好,但在 Vista 上时不时(实际上经常)我收到错误消息
我们正在考虑将我们的 Delphi 应用程序之一从本地 MS SQL Server 迁移到 Azure 托管的 SQL Server。我们已经在 Azure 上创建了 SQL Server(例如 my
我们的一个旧程序使用 dBase 表和 .MDX 索引 - 其他系统也使用这些表,所以我们只能使用它们。我们希望在我们的软件中用 FireDAC 替换 BDE。 FireDAC 似乎没有提供 BDE
我是一名优秀的程序员,十分优秀!