搜索
bottom↓
回复: 6

请教delphi7 ADO数据库获取EXCEL表格中时间问题

[复制链接]

出0入0汤圆

发表于 2019-10-25 21:16:41 | 显示全部楼层 |阅读模式
用ADOquery通过ADOconnection获取excel表格中的日期、时间及数据,日期和数据都没问题,但时间成了下图的格式,请教如何能使两者一样?谢谢!
DBgrid中显示的ADOquery

Excel表格
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-10-25 22:45:33 | 显示全部楼层
FormatString("HH:mm:ss")

出0入70汤圆

发表于 2019-10-25 23:10:56 | 显示全部楼层
FormatDateTime('HH:nn:ss',   datetimevalue);

出0入0汤圆

 楼主| 发表于 2019-10-26 07:27:29 | 显示全部楼层
感谢楼上两位解答,format语句我在存储为excel时用了,在excel中显示没问题,只是再导出到数据库中就成了长时间格式。
我编的小程序是先记录实时曲线(图1),再存储为excel格式,excel表格再导出为曲线数据库(图2),问题是导出的时间轴数据太长。


                                           图1

                                           图2

附上excel存储程序:
  1. procedure TForm1.btn6Click(Sender: TObject);
  2. var
  3.   i,ii,j,k,l:integer;
  4.   ExcelApp, Sheet: Variant;
  5.   SearchRec:Boolean;
  6. begin
  7.     ii:=lns1.Count;
  8.     ExcelApp := CreateOleObject('Excel.Application');
  9.     ExcelApp.WorkBooks.Add;
  10.     ExcelApp.Workbooks.open(ExtractFilePath(Paramstr(0)) + 'TC.xls');
  11.     ExcelApp.WorkSheets[1].Activate;
  12.     j:=ExcelApp.WorkSheets[1].usedrange.rows.count;
  13.     //for i:=1 to j-1 do ExcelApp.ActiveSheet.Rows[2].delete;
  14.     for i:=1 to ii do begin
  15.     ExcelApp.Cells[i+1,1].Value :=DateToStr(Date);
  16.     ExcelApp.Cells[i+1,3].Value :=lns1.YValue[i-1];
  17.     ExcelApp.Cells[i+1,2].Value :=lns1.XLabel[i-1];
  18.     end;
  19.     for k:=1 to 99 do begin
  20.     SearchRec:=FileExists(ExtractFilePath(Paramstr(0))+'TC'+FormatdateTime('yyyymmdd',now)+'-'+IntToStr(k)+'.xls');
  21.     if SearchRec=false then break
  22.     end;

  23.     ExcelApp.ActiveSheet.SaveAs(ExtractFilePath(Paramstr(0)) + 'TC'+FormatdateTime('yyyymmdd',now)+'-'+IntToStr(k)+'.xls');
  24.     ShowMessage('曲线已存储!文件名'+ 'TC'+FormatdateTime('yyyymmdd',now)+'-'+IntToStr(k)+'.xls');
  25.     //ExcelApp.ActiveSheet.SaveAs(ExtractFilePath(Paramstr(0)) + 'TC.xls');
  26.     ExcelApp.Activeworkbook.Close;
  27.     ExcelApp.Quit;
  28.     ExcelApp := Unassigned;
  29. end;
复制代码


载入曲线数据程序:
  1. procedure TForm1.btn8Click(Sender: TObject);
  2. var
  3.   s:string;

  4. begin

  5. qry1.Close;
  6. con1.close;

  7. dlgOpen1.Filter := '曲线数据|*.xls';
  8. dlgOpen1.DefaultExt := '*.xls';
  9. dlgOpen1.Execute;
  10. s:=self.dlgOpen1.FileName;
  11. con1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
  12.         +s+ ';Extended Properties=Excel 8.0;Persist Security Info=False';
  13. qry1.Close;
  14. qry1.SQL.Clear;
  15. qry1.SQL.Add('select * from [Sheet1$]');
  16. qry1.ExecSQL;
  17. lns1.DataSource:=qry1;
  18. qry1.Active;
  19. lns1.ShowInLegend:=False;
  20. lns1.XLabelsSource :='时间';
  21. lns1.YValues.ValueSource :='电压';

  22. end;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-10-26 09:05:30 来自手机 | 显示全部楼层
将字段类型改为v

出0入0汤圆

发表于 2019-10-26 09:06:48 来自手机 | 显示全部楼层
varchar……

出0入0汤圆

 楼主| 发表于 2019-10-26 18:44:20 | 显示全部楼层
搞定了,把query显示模式格式化就行了
  1. qry1.Edit;
  2. TFloatField(qry1.FieldByName('时间')).DisplayFormat :='hh:mm:ss';
  3. qry1.Post;
复制代码
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 13:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表