同上
解决方案 »
- 如何让dbgrd 获得焦点
- 初次用Delphi2007,请教2问题(InfoPower2007和一个编译的问题)
- 如何书写一个整个工程都可以调用的函数
- 明天去广州,希望自己有个好运气!
- 一个关于dbchart的给分题,可我不会啊
- Midas结构,急,谢谢大家看看,来者有分;
- 有没有人做过数据库的动态报表?
- 请问我用meidaplayer控件 怎样用trackbar既可以显示当前位子 也可以拖动到任意位子?
- 各位,小弟近日在想,类这个概念是不是只有DELPHI才有,其他编程也有这个概念吗
- 向坛主、版主及各位网友道歉!
- 在delphi中如何调用别人的运用程序,及调用cmd命令!
- p133的电脑升级成塞羊4,换主版,请问原来的机箱和电源是否也需要换,
edit
delete
post()applyupdates()
如append()insert()edit
delete
post()applyupdates()
提交:adotable.post;
如果只是单表的就很简单
但如果是连接单表的GRID好象也没有什么用处
哈哈
然后建立按钮进行:
Table1.insert;//插入
Table1.edit;//编辑
Table1.delete;//删除
tABLE1.APPEND;//追加
Table1.post;//存盘
QUERY相同。只要把TABLE换成QUERY
unit ProgModule_frm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XP_Button, TFlatButtonUnit, DBCtrls, ExtCtrls, DB, ADODB, Grids,
DBGrids, StdCtrls;type
TProgModuleForm = class(TForm)
ModulesDBGrid: TDBGrid;
ModulesDataSource: TDataSource;
ModulesQuery: TADOQuery;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
FlatButton2: TFlatButton;
FlatButton3: TFlatButton;
FlatButton1: TFlatButton;
DetailQuery: TADOQuery;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
DetailQueryMENUITEM_ID: TStringField;
DetailQueryMENUITEM_NAME: TStringField;
FlatButton4: TFlatButton;
Panel2: TPanel;
ModulesQueryMENUGROUP_ID: TStringField;
ModulesQueryMENUGROUP_NAME: TStringField;
ModulesQueryAPPNAME: TStringField;
ModulesQueryREMARK: TStringField;
ModulesQuerySEQUENCE: TBCDField;
DetailQueryMENUGROUP_ID: TStringField;
DetailQueryWINDOW_NAME: TStringField;
DetailQueryREMARK: TStringField;
DetailQueryCLAUSE: TStringField;
DetailQuerySEQUENCE: TBCDField;
SelQuery: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure ModulesDBGridEnter(Sender: TObject);
procedure DBGrid2Enter(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FlatButton2Click(Sender: TObject);
procedure FlatButton1Click(Sender: TObject);
procedure FlatButton3Click(Sender: TObject);
procedure FlatButton4Click(Sender: TObject);
procedure ModulesQueryAfterDelete(DataSet: TDataSet);
procedure DetailQueryAfterEdit(DataSet: TDataSet);
procedure DetailQueryAfterInsert(DataSet: TDataSet);
procedure DetailQueryBeforePost(DataSet: TDataSet);
procedure ModulesQueryBeforePost(DataSet: TDataSet);
private
Procedure SetButton(IsEnable :Boolean);
public
{ Public declarations }
end;var
ProgModuleForm: TProgModuleForm;implementationuses DataModule_Unt, Currency_Unt;{$R *.dfm}
procedure TProgModuleForm.FormClose(Sender: TObject;
var Action: TCloseAction);
var
tips:Integer;
begin
if FlatButton1.Enabled then
begin
tips:= Application.MessageBox('是否要保存当前编辑的数据?','信息',MB_YESNOCANCEL);
case tips of
IDYES:
begin
ModulesQuery.UpdateBatch();
DetailQuery.UpdateBatch();
Action:=caFree;
end;
IDNO:
begin
DetailQuery.CancelBatch();
ModulesQuery.CancelBatch();
Action:=caFree;
end;
IDCANCEL:
begin
Action:=caNone;
end;
end
end
else
Action:=caFree; {释放这个窗口所占用的内存}
end;procedure TProgModuleForm.FormDestroy(Sender: TObject);
begin
ProgModuleForm:= nil;
end;procedure TProgModuleForm.ModulesDBGridEnter(Sender: TObject);
begin
DBNavigator1.DataSource:= ModulesDataSource;
end;procedure TProgModuleForm.DBGrid2Enter(Sender: TObject);
begin
DBNavigator1.DataSource:= DataSource2;
end;procedure TProgModuleForm.FormActivate(Sender: TObject);
begin
ModulesQuery.Open;
DetailQuery.Open;
end;procedure TProgModuleForm.FlatButton2Click(Sender: TObject);
begin
Close;
end;procedure TProgModuleForm.SetButton(IsEnable: Boolean);
begin
FlatButton1.Enabled:= IsEnable;
FlatButton3.Enabled:= IsEnable;
end;procedure TProgModuleForm.FlatButton1Click(Sender: TObject);
begin
DetailQuery.UpdateBatch();
ModulesQuery.UpdateBatch();
SetButton(False);
end;procedure TProgModuleForm.FlatButton3Click(Sender: TObject);
var
book:TBook;
begin
if Application.MessageBox('真要要放弃当前数据的修改吗?','信息',MB_YESNO)=IDYES then
begin
DetailQuery.CancelBatch();
ModulesQuery.CancelBatch();
SetButton(False);
try
book:=DetailQuery.GetBook;
DetailQuery.Close;
DetailQuery.Open;
DetailQuery.GotoBook(book);
except
Exception.Create('数据刷新错误!');
DetailQuery.Prior;
end;
ModulesDBGrid.Enabled:= True;
end;
end;procedure TProgModuleForm.FlatButton4Click(Sender: TObject);
begin
if Application.MessageBox('真要要删除掉当前模块吗?','信息',MB_YESNO)=IDYES then
begin
if DetailQuery.RecordCount >0 then
DetailQuery.Delete
else
begin
if FlatButton1.Enabled then
begin
Showmessage('请先保存或取消你的操作,再进行删除模块组操作!');
exit;
end;
ModulesQuery.Delete;
end;
SetButton(True);
end;
end;procedure TProgModuleForm.ModulesQueryAfterDelete(DataSet: TDataSet);
begin
SetButton(True);
end;procedure TProgModuleForm.DetailQueryAfterEdit(DataSet: TDataSet);
begin
SetButton(True);
end;procedure TProgModuleForm.DetailQueryAfterInsert(DataSet: TDataSet);
begin
SetButton(True);
end;procedure TProgModuleForm.DetailQueryBeforePost(DataSet: TDataSet);
begin
If DetailQuery.FieldByName('MENUGROUP_ID').AsString = '' then
begin
DetailQuery.Edit;
DetailQuery.FieldByName('MENUGROUP_ID').AsString := ModulesQuery.FieldByName('MENUGROUP_ID').AsString;
end;
if not (DataSet.State = dsEdit) then
With SelQuery do
begin
Close;
SQL.Clear;
SQL.Add('select MENUITEM_ID from MENUITEM where MENUITEM_ID= :MITEM');
Parameters.ParamByName('MITEM').Value := DetailQuery.FieldByName('MENUITEM_ID').AsString;
Open;
if not eof then
Raise Exception.Create('该模块编号已存在,请重新输入!');
close;
end;
end;procedure TProgModuleForm.ModulesQueryBeforePost(DataSet: TDataSet);
begin
if not (DataSet.State = dsEdit) then
With SelQuery do
begin
Close;
SQL.Clear;
SQL.Add('select MENUGROUP_ID from MENUGROUP where MENUGROUP_ID= :MGROUP');
Parameters.ParamByName('MGROUP').Value := ModulesQuery.FieldByName('MENUGROUP_ID').AsString;
Open;
if not eof then
Raise Exception.Create('该模块组编号已存在,请重新输入!');
close;
end;
end;
这个问题可以找本书来看看,很容易明白的
:)
你的意思估计是对dataset操作,然后可以再dbgrid上看到效果把.
上面已经很多了
但是,最好还是用table query等
找本书看看
这些是基础啊
用SQL语句啦