有关DBEDIT和DBGRID的一些问题(80分)

  • 主题发起人 主题发起人 Bruce Yu
  • 开始时间 开始时间
B

Bruce Yu

Unregistered / Unconfirmed
GUEST, unregistred user!
小生刚刚学习编写数据库的应用程序,碰到一些问题,特向各位大富翁们求教:
我用的是ORACLE数据库,在其中设置了几个主从明细表,
(1)请求:在一个DBEDIT的输入框内,输入一个字段的数值
响应:在敲回车后,带出同在一个界面的几个DBEDIT的数值,当然,所对应的字段都
在一个表中。
问:如何编写程序,我想用SQL实现,输入数值后,敲回车的响应程序该如何编写?
(2)一个资料登记的维护界面,我设定了一个DBGRID,用来显示数据库中某个表的数据,
同时,我在这个界面中加入了几个DBEDIT,用来KEY IN数据进数据库的表,如何在点击
“保存”按钮的同时在DBGRID中跟踪新KEY IN的数据。
我想知道如何用SQL实现?添加进数据库(用SQL语句来写的,不采取POST)如何编写?
(3)为什么有时候DBEDIT我无法KEY IN 数值,处于无法编辑状态,不能输入新的数值?
注:我用的是DELPHI5,主要利用DATA ACCESS和DATA CONTROLS中的控件,不涉及ADO组件。
都是用DATASOURCE对应QUERY来 编写程序。希望大家能指导我这个新手,并告诉我如何才
能熟练编写DELPHI数据库应用程序,有什么好的资源可以学习?
 
(1) 这种情况建议不要使用dbedit,而直接使用edit。
使用一个query,语句类似于:
前提条件:edit1.text不为空,而且字段类型为字符型。
query1.sql := 'select fname1,fname2,fname3... from tab1 where fnamex= ' + #39
+ Edit1.Text + #39;
query1.open;
然后将取出的值给放到对应的editx中去。语句类似于:
Edit2.Text := Query1.fieldbyname('fname1').Value.AsString;
(2) 插入数据成功后将dbgrid的数据源进行refresh,如果要跟踪的话对数据源进行filter
定位。你要用SQL来实现的话,尽量不要使用数据感知控件,如dbedit等。
(3) 有一本基本的Delphi数据库编程人门的书籍你可以去参考一下,好象是邮电出版社出版
的。然后在入门后多找写实例来分析一下,并多动手,相信你可以很快得到提高的。
 
你说的这些在 字段的onchange 事迹里写 同时你要把tab键 变成 回车键!!!
 
如何更改成为回车键?
如果用 ON KEYDOWN 行不行?
“IF VK=KEY_RETURN THEN”
 
你看看这个吧
procedure Tobject_base.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_DOWN:
begin
Key := 0;
if ActiveControl<>nil then
if TWinControl(ActiveControl).TabOrder < MAXTABORDER then
SelectNext(ActiveControl, True, True);
end;
VK_UP:
begin
Key := 0;
if ActiveControl<>nil then
if TWinControl(ActiveControl).TabOrder <> 0 then
SelectNext(ActiveControl, False, True);
end;
end;
end;
begin
if key=#13 then
begin
key:=#0;
if ActiveControl <> nil then
if ActiveControl.TabOrder<MAXTABORDER then
selectnext(Activecontrol,True,True)
else
end;
end;
 
谢谢帮助,我知道按键的不同,激发不同的事件程序。
因为我需要经常操作数据库,我想知道,什么时候最好用DBEDIT,什么
时候一般用EDIT。
 
(1)加一个ListBox,将数据库的关键字加入ListBox的Items,然后添加ListBox的Click
事件,使DBEdit显示相应的字段。
 
(2)点击“保存”按钮时,刷新DBGrid对应的数据库(先close再open),然后就可以更新
DBGrid的显示了。
 
(3)应该没问题呀。
 
如果是要连到数据库的字段,多要用感知空件,比如DB开头的空件
 
谢谢大家。
 
后退
顶部