还是这个坛子里高手多,就请各位大侠给看看吧(100分)

  • 主题发起人 主题发起人 redted4
  • 开始时间 开始时间
R

redted4

Unregistered / Unconfirmed
GUEST, unregistred user!
Access数据表结构如下:
version l(长整型)
AlarmId l
Alarmsource l
AlarmType l
WarnName 60 文本
WarnDetail 255 文本
  proposal 255 文本
paracount byte
paraExpla 255 文本
-------------
type
ptblAlarmInfoRec = ^tblAlarmInfoRec;
tblAlarmInfoRec = record
version: longInt;
AlarmId: longInt;
AlarmSource:longInt;
AlarmType: longInt;
WarnName: array[0..60] of char;
warnDetail: array[0..255] of char;
proposal: array[0..255] of char;
paracount: byte;
paraExpla: array[0..255] of char;
end;

var
ptoptblAlarmInfoRec:ptblAlarmInfoRec;
tblAlarmInfoRecordCount:integer;
a_alarmInfo:array[0..100] of tblAlarmInfoRec; //定义数组
i:integer;
procedure TForm1.datafromquerytoarray;
begin
query1.Open;
tblAlarmInfoRecordCount:=Query1.RecordCount;
GetMem(ptoptblAlarmInfoRec,SizeOf(tblAlarmInfoRec)*tblAlarmInfoRecordCount);
for i:=0 to tblAlarmInfoRecordCount-1 do
begin
with query1 do
begin
a_alarmInfo.version:=fieldbyname('version').AsInteger;
a_alarmInfo.AlarmId:=fieldbyname('AlarmId').AsInteger;
a_alarmInfo.alarmsource:=fieldbyname('AlarmSource').AsInteger;
a_alarmInfo.alarmType:=fieldbyname('AlarmType').AsInteger;
StrPCopy(a_alarmInfo.WarnName,fieldByName('WarnName').Asstring);
StrPCopy(a_alarmInfo.WarnDetail,fieldByName('WarnDetail').Asstring);
StrPCopy(a_alarmInfo.Proposal,fieldByName('proposal').Asstring);
a_alarmInfo.paracount:=Byte(fieldbyname('AlarmType'));
StrPCopy(a_alarmInfo.ParaExpla,fieldByName('ParaExpla').Asstring);
next;
end;
end;
end;

在发出以前我刚改成动态数组
  a_alarmInfo:array of tblAlarmInfoRec;
SetLength(a_alarmInfo,tblAlarmInfoRecordCount);
因为不在公司没法调试,不知道结果是不是会好一些?}

用query1从中取到数据后(select *...)再赋给记录数组,可是有点问题啊:1、调试观察到只有a_alarmInfo{0]有数据,其余没有数据。2。其余的数据和有汉字的地方匀显示为#0. 3。会出现“access violation..."的错误,就是在循环a_alarmInfo.version:=...开始出现,但如果把循环体中语句改为a_alarmInfo[0].version...则不会有错。
如果请教各位大侠如何才能改进?

 
你的query1有初始SQL语句(select * ...)吗?也就是说
query1.Open; //此时的qurery1中有记录吗?
tblAlarmInfoRecordCount:=Query1.RecordCount; //RecordCount=?
 
后退
顶部