读书人

各位老大救命呀!怎么读access数据库

发布时间: 2012-02-20 21:18:23 作者: rapoo

各位老大,救命呀十万火急!如何读access数据库中的数据然后在CANVAS中画波形图呀??
我的数据总共有四列分别为:时间、补偿回路报警A相电流值、补偿回路报警B相电流值、补偿回路报警C相电流值。数据是一秒存一次,我现在想在Edit1、Edit2、Edit3、Edit4中输入年、月、日、时后按一个按键botton就选定查询的某个小时内的数据,然后把这些数据在Canvas中画出波形图,横坐标是数据存入数据库的时间(可以不标出横坐标的每个值,因为时间太长)。我的程序如下:
void __fastcall TForm5::Button1Click(TObject *Sender)//我要画三条曲线分别为:补偿回路报警A相电流值、补偿回路报警B相电流值、补偿回路报警C相电流值.{
double t=0,y1=0,y2,y3;
int x = 0;
String sqlStr="select * from boxing";
Form1->ADOQuery5->Close();
Form1->ADOQuery5->SQL->Clear();
Form1->ADOQuery5->SQL->Add(sqlStr);
Form1->ADOQuery5->Open();
while(!Form1->ADOQuery5->Eof)
{
t=Form1->ADOQuery5->FieldByName("时间")->AsDateTime;
y1=Form1->ADOQuery5->FieldByName("补偿回路报警A相电流值")->AsInteger;
y2=Form1->ADOQuery5->FieldByName("补偿回路报警B相电流值")->AsInteger;

y3=Form1->ADOQuery5->FieldByName("补偿回路报警C相电流值")->AsInteger;


Form5->Canvas->LineTo(y1, x);
Form5->Canvas->LineTo(y2, x);
Form5->Canvas->LineTo(y3, x);
x += 2;




Form1->ADOQuery5->Next();

}
Form1->ADOQuery5->Close();

}
以上程序出现的情况是,不会画图。希望各位高手帮帮忙。拜托啦!!详细点,越详细越好。

[解决办法]
[code=C/C++][/code]三条线要分开画,不能一次就画完了。

Form5->Canvas->LineTo(y1, x);
Form5->Canvas->LineTo(y2, x);//接着Y1的画了,你这样是画竖线了
Form5->Canvas->LineTo(y3, x);

C/C++ code
Form1->ADOQuery5->Open();Form1->ADOQuery5->first();  while(!Form1->ADOQuery5->Eof)  {  t=Form1->ADOQuery5->FieldByName("时间")->AsDateTime;  y1=Form1->ADOQuery5->FieldByName("补偿回路报警A相电流值")->AsInteger;//  y2=Form1->ADOQuery5->FieldByName("补偿回路报警B相电流值")->AsInteger;//  y3=Form1->ADOQuery5->FieldByName("补偿回路报警C相电流值")->AsInteger;      Form5->Canvas->LineTo(y1, x);//  Form5->Canvas->LineTo(y2, x);//  Form5->Canvas->LineTo(y3, x);  x += 2;    Form1->ADOQuery5->Next();  }Form1->ADOQuery5->Open();Form1->ADOQuery5->first();Form5->Canvas->LineTo(0, 0);  while(!Form1->ADOQuery5->Eof)  {  t=Form1->ADOQuery5->FieldByName("时间")->AsDateTime;//  y1=Form1->ADOQuery5->FieldByName("补偿回路报警A相电流值")->AsInteger;  y2=Form1->ADOQuery5->FieldByName("补偿回路报警B相电流值")->AsInteger;//  y3=Form1->ADOQuery5->FieldByName("补偿回路报警C相电流值")->AsInteger;    //  Form5->Canvas->LineTo(y1, x); Form5->Canvas->LineTo(y2, x);//  Form5->Canvas->LineTo(y3, x);  x += 2;    Form1->ADOQuery5->Next();  }  Form1->ADOQuery5->Close();
[解决办法]
加个 ADOQuery5->First(); 强制定位到第一条,试试
[解决办法]
要自己学会调程序
list中的数据打出来 看看点的坐标取出来没有
如果数据还是没取出来 怎么都不能画的

读书人网 >C++ Builder

热点推荐