首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

各位老大,救命呀!怎么读access数据库中的数据然后在CANVAS中画波形图呀?

2012-02-20 
各位老大,救命呀十万火急!如何读access数据库中的数据然后在CANVAS中画波形图呀??我的数据总共有四列分别

各位老大,救命呀十万火急!如何读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中的数据打出来 看看点的坐标取出来没有
如果数据还是没取出来 怎么都不能画的

热点排行