【发布时间】:2013-09-12 12:05:13
【问题描述】:
我正在尝试将数据从 tblDeelnemers 的 dbDeelnemers 复制到文本文件 Deelnemers.txt
该表包含 4 列,即:ID、Naam、van、kontaknommer。 我的表单上有一个 TADOQuery 以及一个 dbGrid。我正在使用 Microsoft Access 和 Delphi 7。
我已经在寻找可能的方法,但我能得到的唯一帮助是 C#。
我想稍后在单击按钮时调用此文本文件。保存数据的格式无关紧要,我只需要能够将其加载回数据集即可。我这样做是因为在此“导入”之后,表中的数据被删除以从头开始
我尝试了以下但完全错误:
var
sDeelnemers : string;//string to copy data in before adding to textfile
Begin // sIDkies is global string
frmData.qryVGKompetisieDB.Active := false;
frmData.qryVGKompetisieDB.SQL.Text := 'copy ID, Naam, Van, Kontaknommer from tblDeelnemers into sDeelnemers WHERE ID = "'+sIDkies+'"; // copying data into string
frmData.qryVGKompetisieDB.ExecSQL;
frmData.qryVGKompetisieDB.SQL.Text := 'Select * from tblDeelnemers'; // to show table on dgGrid like originally
frmData.qryVGKompetisieDB.Active := true;
end; // then assigning textfile and copying sDeelnemers(string) into textfile
感谢@No'am Newman,代码如下:
procedure TfrmData.Button1Click(Sender: TObject);
var
f: tstrings;
q: TADOQuery;
begin
redInfo.Visible := false;
dbgInfo.Visible := true;
qryVGKompetisieDB.Active := false;
qryVGKompetisieDB.SQL.Text := 'select id, naam, van, Kontaknommer from tblDeelnemers';
qryVGKompetisieDB.ExecSQL;
qryVGKompetisieDB.Active := true;
f:= tstringlist.create;
with q do
begin
open; //Error occurs here
while not eof do
begin
f.add (fieldbyname ('id').asstring + ',' +
fieldbyname ('naam').asstring + ',' +
fieldbyname ('Van').asstring + ',' +
fieldbyname ('Kontaknommer').asstring);
next
end;
close
end;
f.savetofile ('Deelnemers.txt');
f.free
end;
但是现在打开 TADOQuery 时出现以下错误(如代码所示):
项目 PAT_p.exe 引发异常类 EAccessViolation,并带有消息“在模块“PAT_p.exe”中地址 004A990C 的访问冲突。读取地址 8BD88CCB'。进程停止。使用 Step 或 Run 继续。
【问题讨论】:
-
您对局部变量的评论是正确的,但是您的第 5 行看起来很随意。即使
COPYDML 语句出现在 Access SQL 解释器中,它也会 a) 操作整个行集 b) 不知道 local(!) 变量。 -
您提到您正在使用 TQuery(带有过时的 BDE)?如果您使用 TADO(Query)Dataset,您可以通过 Dataset.SaveToFile / LoadFromFile 以二进制或 XML 格式 (pfAdtg,pfXML) 保存和加载数据。
-
请不要在您的问题中添加更多细节以期待不同的答案。你需要问一个新问题——因为这是一个完全不同的问题。但是它向我指出,您没有创建查询
q := TADOQuery.Create(nil);不仅如此,您甚至没有为q指定 SQL 语句。
标签: delphi ms-access copy delphi-7