paradox数据库与windows系统的当前目录有关系吗(100分)

  • 主题发起人 主题发起人 bamboowzm
  • 开始时间 开始时间
B

bamboowzm

Unregistered / Unconfirmed
GUEST, unregistred user!
下列关于paradox的语句(id,btime是key),直接运行没有问题,加了个Image的ocx,就会报错,"key violation",Image的ocx好像更改了windows系统的当前目录,难道有一定的关系?有哪位高人指点?
query1.sql.clear;
query1.sql.text := 'SELECT id, btime, content fROM operate_tab ';
Query1.open;
Query1.insert;
Query1['id'] := '001';
Query1['btime'] := now;
Query1['content'] := 'test';
query1.applyupdates;
Query1.close;
 
你这个错误是关键词重复吧。
和系统目录没有关系。
 
tozywcd: 但是怎么会与Image的ocx有关系啊,Image的ocx对我来说是黑盒子,什么操作会引起,"key violation"
 
那你把这几条代码暂时屏蔽,运行看看结果。
Query1.insert;
Query1['id'] := '001'; //没有变化
Query1['btime'] := now; // 如果两次运行时间很短,也是没有变化,这两个是key,如果多条记录都相同,不会吧
Query1['content'] := 'test';
query1.applyupdates;
Query1.close;
 
你要证明是否IMAGE改变了当前目录不会在加入IMAGE之后把当前目录设回去吗?
 
to zywcd: "如果两次运行时间很短,也是没有变化,这两个是key,如果多条记录都相同"
这种低级错误,我是不会有啦
 
那你不插入数据看看。
还有,我没有看出来你说的这个ocx和数据库增加数据有什么联系
 
我如果把数据库改为access也没有问题
 
总算找到问题了,ocx使Now返回的时间不变。
好像是表示时间的数值精度不够,不知道哪位大侠能帮我解决
 
取得系统毫秒级时间,这样时间的精度够了吧,

问题: 如何取得系统毫秒级时间,以前好象有人提过? ( 积分: 100 )
分类: 系统相关

来自: gxetdc, 时间: 2001-10-29 23:10:00, ID: 695445
如何取得系统毫秒级时间,以前好象有人提过?

来自: Pipi., 时间: 2001-10-29 23:33:00, ID: 695466
GetTickCount取得系统开始以来经过的毫秒
win32api GetSystemTime 可以取得当前的时间,最小到毫秒


来自: delphi_lsl, 时间: 2001-11-01 23:27:00, ID: 701470
TimeGetTime or getTickCount

来自: 萧月禾, 时间: 2001-11-02 13:20:00, ID: 701699
DeCodeTime, EnCodeTime中的最后一个参数就是毫秒

来自: 江维, 时间: 2001-11-02 13:43:00, ID: 701770
procedure TForm1.Button1Click(Sender: TObject);

var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
+ IntToStr(Month) + ' of Year ' + IntToStr(Year);
DecodeTime(Present, Hour, Min, Sec, MSec);
Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
+ IntToStr(Hour);
end;

来自: zhaqiong, 时间: 2001-11-02 14:09:00, ID: 701845
uses DateUtils (*等等*);
......

procedure TForm1.Button1Click(Sender: TObject);
var iYear,iMon,iDay,iHour,iMin,iSec,iAMilliSecond:word ;
begin
DecodeDateTime(Now(),iYear,iMon,iDay,iHour,iMin,iSec,iAMilliSecond);
showmessage(InttoStr(iAMilliSecond));//显示毫秒数
end;


来自: gxetdc, 时间: 2002-08-02 21:50:00, ID: 1239331
多人接受答案了。

得分大富翁: delphi_lsl-5,Pipi.-5,zhaqiong-40,江维-40,萧月禾-10,
 
不是啦,时间分为整数部分和小数部分,整数表示日期,小数表示时间。
事实上,整数部分很大,所以,如果时间间隔不大的话,输出的时间会是一样的啦!!!
 
那就给你一个建议,你增加一个自动编号的列。
这样不会出错了。
 
这句要转换一下Query1['btime'] := now;
 
我试了
100000+0.004的输出结果
加了imgocx的是100000.007
没加imgocx的是100000.004
有哪位大侠愿探讨这个问题,SOS!!!
 
分不够可以加
 
var
myDate: TDateTime ;
SystemTime:TSystemTime;
CurYear,CurMonth,CurDay: word ;
myYear, myMonth, myDay: string ;
begin
GetLocalTime(SystemTime);
myDate:=SystemTimeToDateTime(SystemTime);
decodedate(myDate,CurYear,CurMonth,CurDay);

myYear := inttostr(CurYear) ;
If CurMonth<10 Then
myMonth:='0'+Inttostr(CurMonth)
Else
myMonth:=IntToStr(CurMonth);

If CurDay<10 Then
myDay:='0'+Inttostr(CurDay)
Else
myDay:=Inttostr(curDay);
label1.Caption := myYear+'-'+ myMonth +'-'+ myDay ;
 
to wuchunhua:问题的原因是ocx改变了数据的精度,我不知道有什么东西可以改变数据精度,如果有兴趣,我可以将ocx mail给你
 
自己搞定了!!!
 
后退
顶部