数据库的几个问题(50分)

D

dwq

Unregistered / Unconfirmed
GUEST, unregistred user!
1.在数据表的输入时,有些字段(Integer,Date型等)要求有一个值,我希望其可有可无,如何办?
2.日期类型如何作为查询条件,输入变量为Edit1.Text;
3.Dbgrid 中列汇总如何实现(分别用Query,Table).
 
1. 对于支持NULL的数据库,将该字段设为可空.
2. yourquery.parambyname('param').asdatetime:=strtodate(edit1.text);
3. 直接在dbgrid中出现汇总数不太好(虽然query能够实现),劝你还是在
dbgrid下面加一些label,用SQL的sum等查出数来写在那里.
 
你的2问题建议你别用edit,用DateTimePicker比较好
query.parambyname('paramname').value:=DateTimePicker.date;
你要确定数据库中的日期字段是标准的格式
比如1998-10-26 而不是98-10-26
(该字段的值最好是来自系统时间或DateTimePicker)
否则是查询不出结果的
 
2. 还有的方法:
先把这个datetime换成 string,再比较.
转换的函数各有不同,oracle是dtoc,access是format,其他的还有convert之类,
先看看你做的dbms的手册.

sample(Access):
where format(RegDateTime,'yyyy-mm-dd') >'1998-02-21'
^^^^^^^^^^^^
edit.text

好处是不需要管日期格式这种烦人的问题.
3.Dbgrid,好像不会出现自己计算的行. 不过你可以从ttable继承一个class来做
这种事.
TWollToWoll里不知道有没有这种功能.

我曾经用过True DBGrid for VB,功能真是强大,这种事情小事一桩.
所以说,VB的强大的可怕之处不在于它的先进性,而是广泛的支持.

或者继承DBGrid,让你自己可以加行.
也可以再做一个StringGrid,把你要的东西加进去.
 
我所用的公共网出了问题,上周没法进来,对不起了。
请版主把分平分给三位吧,谢谢!
 
dwq老兄,50分分给3个人,还怎么“平”,选一个算啦 !
 
这没问题,我愿意再加10分,因为他们仨每人都答出了我想要的一部分
再次感谢版主。
 
多人接受答案了。
 
顶部