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