一个简单而又令我头痛的问题,高分相送。
本人最近遇到一个极菜的问题,问题如下:
1、DBGrid中如何使数据集置于不可删除和插入状态?
2、在DBGrid中如何检查输入数据的合法性?
(使用SQLServer数据库,并使用Cached Updated属性)
3.在SQLServer数据库中使用数据库的时间标记timestamp时,如何在Delphi中显示或读取其相应的值?
请各位高手不吝指教,酌量加分。
问题点数:50、回复次数:25Top
1 楼TommyTong(童童--寻求兼职……)回复于 2001-05-30 10:40:00 得分 2
Q1:只要将DBGrid所连表的DataSource控件的AutoEdit属性设为FALSE就行。
Q2:数据的检查要在Table控件的AfterXXXX,BeforeXXXX事件里写代码。
Top
2 楼snowglave(独孤九剑)回复于 2001-05-30 10:45:00 得分 0
to TommyTong:
1:很不好意思,少了一点,DBGrid要求可以编辑修改,但不可增加删除.
2:兄弟,有没有看到我所附的内容—— 使用了CachedUpdate属性。
麻烦认真看看我的问题。Top
3 楼pure_cmh(不死鸟)回复于 2001-05-30 10:50:00 得分 0
1。土一点的办法,标记一下嘛,其他好像没什么好办法!
gzTop
4 楼snowglave(独孤九剑)回复于 2001-05-30 10:56:00 得分 0
标记?详细一点吗?
想要分,请认真回答问题,我可以单独给你送分。Top
5 楼zyx8(小能)回复于 2001-05-30 11:08:00 得分 0
关注!Top
6 楼snowglave(独孤九剑)回复于 2001-05-30 11:36:00 得分 0
各位高手呢?都跑哪儿去了。Top
7 楼snowglave(独孤九剑)回复于 2001-05-30 11:44:00 得分 0
难道真没有人能给我一个圆满的答案吗?Top
8 楼qianhb(钱)回复于 2001-05-30 11:49:00 得分 0
snowglave(时代超人):请问,
你使用什么控件来连接SQL数据库的?
Top
9 楼snowglave(独孤九剑)回复于 2001-05-30 11:57:00 得分 0
to qianhb(钱):
1.当然是Query控件,但在DBGrid中要可以编辑,但不可增加和删除。
2.在DBGrid中输入整型数据时,怎样控制不输入空值(NULL)?
请指教!Top
10 楼snowglave(独孤九剑)回复于 2001-05-30 13:51:00 得分 0
第三个问题不用答了,前二个问题回答正确加满分。Top
11 楼snowglave(独孤九剑)回复于 2001-05-30 14:04:00 得分 0
怎么没有人come inTop
12 楼snowglave(独孤九剑)回复于 2001-05-31 13:41:00 得分 0
一天的等待,一天的无奈!我的心也随着时间的推移而下沉。天!难道此问题没人能解吗?告诉我,csdn的朋友们,到底我该怎么做?Top
13 楼zyx8(小能)回复于 2001-05-31 14:06:00 得分 3
我正在想这个问题,等一段时间再说!Top
14 楼zyx8(小能)回复于 2001-05-31 14:12:00 得分 0
这是我动态创建窗体的例程
用Delphi动态几个相同的窗体
1.先定原窗体名如:
uses Outputtest
2.在定义几个该窗体的变量
Test1Form,Test2Form,Test3Form:TOutputTestForm;
同时定义对应的几个布尔变量:
Test1,Test2,Test3:Boolean;
3.在对应的事件中加入
if not Test1 then
begin
test1Form := TOutputTestForm.Create(Application);
test1Form.Caption :='test1';
test1Form.ShowCaption(1);
end
else
Test1Form.WindowState :=wsNormal;
test1Form.show;
4.
procedure TOutputTestForm.ShowCaption(Captions: Integer);
begin
FormFlag:=Captions;
Name:='Test'+InttoStr(captions)+'Form';
case captions of
1:
begin
caption:='窗体'+InttoStr(captions);
MainMDIForm.test1:=True;
end;
2:
begin
caption:='窗体'+InttoStr(captions);
MainMDIForm.test2:=True;
end;
3:
begin
caption:='窗体'+InttoStr(captions);
MainMDIForm.test3:=True;
end;
end;
Left :=0;
Top :=0;
Height := 445;
Width := 790;
end;
5.在窗体关闭时
case UserStrToInt(Copy(caption,Length(caption),1)) of
1:
begin
Test1:=False;
MainMDIForm.test1:=False;
end;
2:
begin
Test2:=False;
MainMDIForm.test2:=False;
end;
3:
begin
Test3:=False;
MainMDIForm.test3:=False;
end;
END;
Top
15 楼snowglave(独孤九剑)回复于 2001-05-31 14:16:00 得分 0
莫名其妙!Top
16 楼zyx8(小能)回复于 2001-05-31 14:16:00 得分 0
写错了Top
17 楼snowglave(独孤九剑)回复于 2001-05-31 14:18:00 得分 0
哦!是吗?Top
18 楼jeaking(空空)回复于 2001-05-31 14:19:00 得分 0
你所说的增加是不是当焦点移到最后一行时,自动增加一空白行?
如果是,可以在Eof时把焦点移到第一行或停到最后一行,具体程序好像是在datasource的一个叫ondatastatechange(大概是吧,时间长不用记不清了)事件里写。
关于删除的问题,我好像记得,没有删除按钮不能在dbgrid中删除吧??
如果能删除,试一试在数据集的beforedelete中执行abort,看行不行?Top
19 楼snowglave(独孤九剑)回复于 2001-05-31 14:35:00 得分 0
to jeaking:
前一个问题如你所说我会试的,对于第二个删除问题,我用了CachedUpdate属性,beforedelete恐怕不行。Top
20 楼BaldZhang(BaldZhang)回复于 2001-05-31 15:08:00 得分 0
第一个:
在BeforeDelete里写上Abort
第二个:
在BeforePost时检查数据的合法性。Top
21 楼snowglave(独孤九剑)回复于 2001-05-31 15:13:00 得分 0
用了CachedUpdate属性之后也行吗?Top
22 楼BaldZhang(BaldZhang)回复于 2001-05-31 15:16:00 得分 0
我的Delphi现在死掉了,等下我看看,应该是可以的,
用CacheUpdate时,应该是要调用ApplyUpdates来把数据
真正写入数据库的,自己再看一下帮助Top
23 楼snowglave(独孤九剑)回复于 2001-05-31 15:25:00 得分 0
不错,问题是要在执行ApplyUpdates之前,在DBGrid中编辑数据时要控制其不可增加或删除Top
24 楼BaldZhang(BaldZhang)回复于 2001-05-31 15:30:00 得分 45
那样啊,我就确定我的做法是行的通的了。
你自己试试吧,Top
25 楼snowglave(独孤九剑)回复于 2001-05-31 16:08:00 得分 0
邪了,上次试的时候怎么回事?呵呵,分照加,谢了。Top




