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

在c++ builder6.0+access2003中怎样做到像如下那样读取数据呢?解决方案

2012-06-14 
在c++ builder6.0+access2003中怎样做到像如下那样读取数据呢?我现在想实现查询一天的数据,我存入数据库的

在c++ builder6.0+access2003中怎样做到像如下那样读取数据呢?
我现在想实现查询一天的数据,我存入数据库的数据是每隔5秒存一次。我要实现在comboBox1、comboBox2、comboBox3中输入年、月、日后就查询那一天从00:00:00至23:59:59的全部数据,如果哪一段时间没有数据会自动赋0(例如我的单片机出故障了从00:00:00-07:59:59都没有开机,没有开机的话数据库里肯定不可能有数据,但现在我要用数据库的这些数据来画图,没开机的期间就当做值全部为0来画,只有这样我才能准确画出每一个时段对应的波形)。我现在的程序只能把数据库里现有的数据拿出来画图,其他没有记录的不会自动赋0,请求各位大哥大姐们能帮帮小弟!!我的程序如下所示:
  AnsiString Year,Month,Day,Hour;
  Year=ComboBox1->Text;
  Month=ComboBox2->Text;
  Day=ComboBox3->Text;
  AnsiString str_arr = Year + "-" + Month + "-" + Day ;
  AnsiString str_dep =Year + "-" + Month + "-" +IntToStr(StrToInt(Day) + 1) ;
  AnsiString strSql = "select * from 日负荷曲线 where 时间 between #"+ str_arr +"#and #"+str_dep+"#";
  Form1->ADOQuery8->Close();
  Form1->ADOQuery8->SQL->Clear();
  Form1->ADOQuery8->SQL->Add(strSql);
  Form1->ADOQuery8->Open();
  Form1->ADOQuery8->First();

  TStringList *listA = new TStringList;
  TStringList *listB = new TStringList;

  Image1->Canvas->Refresh();
  Image2->Canvas->Refresh();
  Image3->Canvas->Refresh();
  renew1();


  while(!Form1->ADOQuery8->Eof)
  {
   
  String a = Form1->ADOQuery8->FieldByName("有功功率值")->AsString;
  String b = Form1->ADOQuery8->FieldByName("时间")->AsDateTime;
  listA->Add(b+"="+a);
  listB->Add(b);
  Form1->ADOQuery8->Next();
  }

 this->Image1->Canvas->MoveTo(21, 235-(StrToFloat(listA->Values[listA->Names[0]]))/2);  
  for(int i = 0; i < listA->Count; i++)
  {
  this->Image1->Canvas->LineTo(x, 235 - (StrToFloat(listA->Values[listA->Names[i]]))/2);
  x += 835/listA->Count;
  }

虽然分不多但却十分期待各位能帮我一下,谢谢!!

[解决办法]
你可以这样做,用SQL查询出某天的数据
然后用过滤方式来处理。

从00:00:00开始
用5秒为单位,过滤查询出来的数据集,如果存在数据,就代表那段时间有数据,按过滤出来的画图。
否则就按0来画图。

这个思路不知道是否可以帮助你。
[解决办法]
我想提一点,你的数据是按启动时计时还是按标准时间记时?

另外你可以对过滤出来的数据集的第一条记录进行检查,如果发现异常就采用异常情况处理,从第二条记录开始对每条记录进行检查,如果间隔正常就直接加入,否则进行插补数据.

画图时直接用插补后的数据画图.

我的意思是读数据时就对数据的合法性进行检查,对发现错漏的即时更正,保证列表中插入的数据是全部的,合法的.
[解决办法]
Lz,,你好,,,我这几天刚开始学这个软件,纯菜鸟,,我想问下,,,编个从excel文件读取数据,然后作图画出来该怎么弄啊???很急,,,希望能告诉我下,,,,非常感谢!!!
[解决办法]
1、5秒一次的文件先存入二进制临时文件
2、每个5分钟把临时文件的数据存入数据库
3、读取数据库的数据

C/C++ code
    TDateTime dateTime0, dateTime1 ;    dateTime0 = TDateTime(FormatDateTime("yyyy-mm-dd 00:00:00",DateEdit1->Date)) ;    dateTime1 = TDateTime(FormatDateTime("yyyy-mm-dd 23:59:59",DateEdit2->Date)) ;    UniTable1->Active      = false ;    UniTable1->Filtered    = true ;    UniTable1->Filter      = "rDate >= '"+dateTime0+"' and rDate <= '"+dateTime1+"' and rGroup = " + IntToStr(RadioGroup1->ItemIndex);    UniTable1->OrderFields = "rDate" ;    UniTable1->Active      = true ; 

热点排行