ADO连MSSQL2000
我把ADOTABLE 和 DATABASE全放在了数据模块中,在处理ADOTableBeforeDelete(DataSet: TDataSet)过程里加入MessageBox,但不能通过.如果把ADOTABLE放在窗体中,ADOTableBeforeDelete里的MessageBox就能通过.我是新手,不太懂,帮忙.
源码如下:
unit data;interfaceuses
  SysUtils, Classes, DB, ADODB;
type
  TDM1 = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    ADOTable2: TADOTable;
    DataSource2: TDataSource;
    zhongghdatasource: TDataSource;
    zuzhiDataSource: TDataSource;
    zhonggh: TADOTable;
    zuzhi: TADOTable;
    hangye: TADOTable;
    hangyeSource: TDataSource;
    juzhuxianshiqu: TADOTable;
    juzhuSource: TDataSource;
    procedure DataSource2DataChange(Sender: TObject; Field: TField);
    procedure DataSource2StateChange(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure DataSource1StateChange(Sender: TObject);
    procedure ADOTable1BeforeDelete(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  DM1: TDM1;implementationuses insert;{$R *.dfm}procedure TDM1.DataSource2DataChange(Sender: TObject; Field: TField);
begin
Finsert.Label25.Caption:='当前记录:'+IntToStr(DataSource2.DataSet.RecNo);
Finsert.Label42.Caption:='记录总数:'+IntToStr(DataSource2.DataSet.RecordCount);
Finsert.Label43.Caption:=DateToStr(Date);
end;procedure TDM1.DataSource2StateChange(Sender: TObject);
begin
case DataSource2.State of
    dsBrowse:Finsert.label44.Caption:='[浏览模式]';
    dsEdit:Finsert.label44.Caption:='[修改模式]';
    dsInsert:Finsert.label44.Caption:='[插入模式]';
  else Finsert.label44.Caption:='[其他模式]';
  end;
end;procedure TDM1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Finsert.Label41.Caption:='当前记录:'+IntToStr(DataSource1.DataSet.RecNo);
Finsert.Label45.Caption:='记录总数:'+IntToStr(DataSource1.DataSet.RecordCount);
Finsert.Label46.Caption:=DateToStr(Date);
end;procedure TDM1.DataSource1StateChange(Sender: TObject);
begin
case DataSource1.State of
    dsBrowse:Finsert.label47.Caption:='[浏览模式]';
    dsEdit:Finsert.label47.Caption:='[修改模式]';
    dsInsert:Finsert.label47.Caption:='[插入模式]';
  else Finsert.label47.Caption:='[其他模式]';
  end;
end;procedure TDM1.ADOTable1BeforeDelete(DataSet: TDataSet);
var
dStr:String;
begin
dStr:='确定要删除这条记录吗?';
if MessageBox(Handle,PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDNO then Abort;
// ~~~~~~~~~~//就是这里出错!
end;end.

解决方案 »

  1.   

    请注意MessageBox是包含于哪一个UNIT中,在USE中加入。
      

  2.   

    对啊,加那个啊,一定不是一个,我加了messages和windows,还是过不去,但这回停在Handle上了
      

  3.   

    你可以改用这个API函数;
    application.messagebox(PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING);
      

  4.   

    Uses
    Dialogs or QDialogs可以Application.MessageBox();
    再有第一个参数可以去掉
      

  5.   

    问题是解决,我加了form2,dialogs,messages,windows.还有用了Application.MessageBox();
    再有第一个参数去掉了.
    就是不知道为什么?30分钟后结帖.分少了点,谢谢大家了~~~~uses
      SysUtils, Classes, DB, ADODB,Forms,Dialogs,Messages,Windows;
    procedure TDM1.ADOTable1BeforeDelete(DataSet: TDataSet);
    var
    dStr:String;
    begin
    dStr:='确定要删除这条记录吗?';
    if application.MessageBox(PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDNO then Abort;
    end;
      

  6.   

    可以使用的
    Handle其实可以是0的
    if MessageBox(0,PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDNO thenhttp://lysoft.7u7.net
      

  7.   

    加上handel就出错,停在MB_YESNO后面.