标签: delphi-2007

如何将800000记录插入MS Access表?

我需要在MS Access表中插入800000条记录.我正在使用Delphi 2007和TAdoXxxx组件.该表包含一些整数字段,一个浮点字段和一个只有一个字符的文本字段.其中一个整数字段(不是autoinc)上有一个主键,另一个整数和float字段上有两个索引.

使用AdoTable.AppendRecord(...)> 10分钟插入数据是不可接受的,因为每次用户开始在程序中使用新数据库时都会这样做.我无法预先填充表格,因为数据来自另一个数据库(无法访问ADO).

通过将记录写入制表符分隔的文本文件并使用tAdoCommand对象执行,我设法将时间缩短到大约1分钟

insert into table (...) select * from [filename.txt] in "c:\somedir" "Text;HDR=Yes"
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这个的开销.

我想,必须有更好的方法.

编辑:

一些其他信息:

  • 选择MS Access是因为它不需要在目标机器上进行任何额外安装,并且整个数据库包含在一个可以轻松复制的文件中.
  • 这是一个单用户应用程序.
  • 数据只会插入一次,并且在数据库的生命周期内不会更改.但是,该表包含一个附加字段,该字段用作标志以指示用户已处理另一个数据库中的相应记录.
  • 一分钟可以接受的(最多3分钟也是如此)并且我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点.
  • 插入数据后,表的性能非常好.
  • 当我开始计划/实现使用Access数据库的程序的功能时,不需要该表.只有在客户要求另一个功能时才需要它.(情况并非如此吗?)

编辑:

从我到目前为止得到的所有答案来看,似乎我已经有了将这么多数据插入Access表的最快方法.感谢大家,感谢您的帮助.

delphi ms-access ado delphi-2007

4
推荐指数
3
解决办法
9287
查看次数

如何使Lazarus IDE看起来像Delphi 2007或更新版本?

我已经开始使用Lazarus在Ubuntu 9.10上为我自己使用一些简单的工具.我知道很多人喜欢模块化的Delphi 7布局,但我讨厌它.我发现它很烦人且具有破坏性.出于同样的原因,我不喜欢使用Gimp.

我也更喜欢Delphi 2007调色板菜单.这是否可以在最新版本的Lazarus(v0.9.28.x)中使用?

如何配置Lazarus看起来像Delphi 2007/9/10?

delphi pascal delphi-2007 lazarus

4
推荐指数
1
解决办法
1298
查看次数

从继承父弹出菜单停止VCL子控件

我有一个Delphi 2007 VCL TPanel,分配了TPopupMenu.面板上有一些TEdit控件.编辑继承父面板的弹出菜单.我想不允许这个弹出窗口继承,所以编辑将显示默认的Windows TEdit弹出菜单,包括复制,剪切,粘贴等,但还没有找到办法.似乎没有"ParentPopupMenu"类型属性来设置哪些控件从父组件继承它.

delphi inheritance parent popupmenu delphi-2007

4
推荐指数
1
解决办法
1343
查看次数

delphi新项目不是从form1开始的

所以这只是一个小小的烦恼但是当我启动delphi并开始一个新项目只是为了测试一些东西我希望它是form1,unit1等.但是它在表单2开始新的项目.我该如何解决这个问题?我怀疑为项目找到了默认的保存空间,但我没有.我正在使用delphi 2007和Windows 7.

delphi delphi-2007

4
推荐指数
1
解决办法
629
查看次数

delphi原型模式

我想知道,Delphi的RTTI中是否有与MemberwiseClone在C#中执行相同操作的原型模式的简单实现.我看到了这个模式的一些Delphi实现,其中正在创建一个新对象(TMyObject.Create),并且它的属性使用原型对象的值进行分配.我可能错了,但是如果我们以相同的基本方式创建对象,我看不到模式的好处.

谢谢.

delphi design-patterns delphi-2007 prototype-pattern

4
推荐指数
2
解决办法
2058
查看次数

Delphi 2007 VCL项目名称与编译的Exe名称不同?

有没有办法让一个名为"SomeProject"的项目创建一个名为"SomethingDifferent.exe"的EXE?在.net中,让项目名称独立于生成的程序集名称很简单,但我没有看到如何在Delphi 2007中执行相同的操作.

delphi delphi-2007

4
推荐指数
1
解决办法
1348
查看次数

Delphi:如何检查是否按下任何鼠标按钮 - 鼠标事件的外部?

我有一个TDrawGrid,想要处理单击一个单元格并使用鼠标滚轮略微不同地滚动单元格:当使用鼠标滚轮滚动时,视图将以所选单元格为中心,当只需单击一个单元格时,视图不会移动(因为这会令人困惑).

使用鼠标滚轮滚动会触发OnSelectCell事件.单击一个单元格FIRST将触发OnSelectCell,然后单击OnMouseDown.所以我需要弄清楚是否OnSelectCell由鼠标点击触发.最简单的方法(我能想到的)就是检查当前的鼠标按钮状态.

OnSelectCell没有任何TMouseButtonTShiftState参数.那么如何查询鼠标按钮状态呢?

delphi delphi-2007

4
推荐指数
1
解决办法
2069
查看次数

Delphi 2007和Indy10在IdStackWindows中编译错误

我刚刚将我的Indy10安装更新到最新版本(5276),现在我在尝试编译Windows应用程序时遇到错误.

IdStackWindows.pas(2364)错误:E2029'..'预期,但';' 发现

问题似乎是ka: tcp_keepalive2364年的第2364号声明TIdStackWindows.SetKeepAliveValues.

我在Windows 7 Professional x64上使用Delphi 2007.

delphi indy delphi-2007 indy10

4
推荐指数
1
解决办法
252
查看次数

如何在此RaiseExeption调用中删除"W1047 Unsafe code'@ operator'"

Delphi 2007中的以下代码给出了警告

W1047不安全代码'@ operator'

在将@ThreadNameInfo传递给RaiseException的行中:

procedure SetThreadName(const _Name: AnsiString);
var
  ThreadNameInfo: TThreadNameInfo;
begin
  ThreadNameInfo.FType := $1000;
  ThreadNameInfo.FName := PAnsiChar(_Name);
  ThreadNameInfo.FThreadID := $FFFFFFFF;
  ThreadNameInfo.FFlags := 0;
  try
    RaiseException($406D1388, 0, SizeOf(ThreadNameInfo) div SizeOf(LongWord),
      @ThreadNameInfo); // --> Here
  except
    // ignore
  end;
end;
Run Code Online (Sandbox Code Playgroud)

除了禁用"不安全代码"的编译器警告之外,还有其他方法可以摆脱此警告吗?这个警告是否更有意义,因为Delphi不再支持dotNET?

我试图明确地将参数类型转换为PDWord(最后一个参数的声明类型),它没有改变任何东西.

delphi delphi-2007

4
推荐指数
1
解决办法
480
查看次数

如何删除加速器热键'&'字符?

我正在使用'&'角色在我的TLabel控件上使用加速键.通过这种方式,用户可以按Alt+ Character after the &以将控件聚焦在表单上.

例:

var
  MyLabel : TLabel;
  MyEdit : TEdit;
begin
  MyEdit := TEdit.Create(Self);
  MyEdit.Left := 20;
  MyEdit.Top := 40;
  MyEdit.Parent := Self;

  MyLabel := TLabel.Create(Self);
  MyLabel.FocusControl := MyEdit;
  MyLabel.Caption := '&Test';
  MyLabel.Left := 20;
  MyLabel.Top := 20;
  MyLabel.Parent := Self;
end;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,MyLabel出现带有'T'下划线的字符并按下Alt+ T原因MyEdit进行聚焦.

在此输入图像描述

如果MyLabel.Caption没有这个'&'角色我怎么能得到?这样做有内置功能吗?

我期待得到'Test'字符串而不是'&Test'

delphi keyboard-shortcuts delphi-2007 acceleratorkey

4
推荐指数
1
解决办法
192
查看次数