我做了一个测试的程序,有两个控件,一个database一个query。
当把这两个控件放在Form上时一切正常,当把它们放到datamodule中时就报错。
代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with datamodule1 do begin
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from tablename');
    query1.Open;
  end;
end;
请问这是什么问题?

解决方案 »

  1.   

    你要在引用datamodule
    就是在from对应的单元文件中uses一下
      

  2.   

    如:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2;                         //这里引用Unit2,我的Unit2就是一个datamodule{$R *.dfm}end.
      

  3.   

    database和query的属性设置我都看过了,而且在前面的uses也核对过了,都没错。
    至于datamodule本身是不是有什么要设定我就不是很清楚了。不过我以前用的时候
    好像对datamodule是没什么要动的。
    报错内容:
    project project1.exe raised exception class EAccessViolation with message 'Access
    violation at address 0047316B in module 'project1.exe'Read of address 00000054'.Process stopped.Use step or run to continue.
      

  4.   

    先创建datamodule的对象,再创建Form1
      

  5.   

    你是先写好了一个例子,然后直接粘贴到datamodule里去了吧,检查datamodule里你那几个连接对不对,应该没有关系,估计是你忘了在调整了
      

  6.   

    在OnCreate事件里面調用﹐DataModule沒創建怎么肯定會報錯將DataModule放在Form之前創建就行了