具体情况是这样的,我想添加一个函数newll实现刷新query1.可是老是报错-----unsatisfied forward or txternal declaration:'tform2.newll' 
如果我将声明中的procedure newll;改成procedure form2.newll;又会提示说
except' ='but';'found in form2   请问这是为什么啊?
再就是函数体newll中,输入query1.后也不会出现自动提示下来菜单?
具体代码如下: 
前辈请指教啊interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;type
  TForm2 = class(TForm)
    DBGrid1: TDBGrid;
    query1: TQuery;
    DataSource1: TDataSource;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure newll;///声明
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);  private
    { Private declarations }  public
    { Public declarations }
  end;var
  Form2: TForm2;implementation{$R *.dfm}
  procedure newll;//函数体
begin
form2.query1.close;
form2.query1.SQL.Clear;
form2.query1.sql.add('select [user] from [user]');
form2.query1.open;
end;
procedure TForm2.Button1Click(Sender: TObject);
var yhm,mm,sqlstr:string;
begin
yhm:=trim(edit1.Text);
mm:=trim(edit2.Text);
if length(yhm)<1 then
showmessage('the ID is empty');
if length(mm)<1 then
showmessage('the password is empty');
if (length(yhm)>0) and (length(mm)>0) then
begin
sqlstr:='select * from [user] where ([user]='''+yhm+''')';
 with tquery.Create(nil) do
 try
 databasename:='whs';
 close;
 sql.Clear;
 sql.Add(sqlstr);
 open;
 if recordcount>0 then
 showmessage('the ID has been registered pleasse choose another')
  else
  begin
  sqlstr:='insert into [user] values('''+yhm+''','''+mm+''')';
  close;
  sql.Clear;
  sql.Add(sqlstr);
  open;
  showmessage('the ID is added');
  form2.newll;//函数调用
end;
   finally
   free;
   end;
   end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
close;
end;end.

解决方案 »

  1.   

    procedure newll;//函数体
    begin
    form2.query1.close;
    form2.query1.SQL.Clear;
    form2.query1.sql.add('select [user] from [user]');
    form2.query1.open;
    end;
    改为
      procedure TForm2.newll;//函数体
    begin
    form2.query1.close;
    form2.query1.SQL.Clear;
    form2.query1.sql.add('select [user] from [user]');
    form2.query1.open;
    end;
      

  2.   

    你的Pascal的最基本的语法都不过关,该去补习了。
      

  3.   

    改了,又出现'error creating cursor handle'这是何故?
      

  4.   

    interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;type
      TForm2 = class(TForm)
        DBGrid1: TDBGrid;
        query1: TQuery;
        DataSource1: TDataSource;
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        Button2: TButton;
        Label1: TLabel;
        Label2: TLabel;
        procedure newll;///声明
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);  private
        { Private declarations }  public
        procedure newll;
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
    procedure TForm2.newll;//函数体
    begin
    query1.close;
    query1.SQL.Clear;
    query1.sql.add('select [user] from [user]');
    query1.open;
    end;
    procedure TForm2.Button1Click(Sender: TObject);
    var yhm,mm,sqlstr:string;
    begin
    yhm:=trim(edit1.Text);
    mm:=trim(edit2.Text);
    if length(yhm)<1 then
    showmessage('the ID is empty');
    if length(mm)<1 then
    showmessage('the password is empty');
    if (length(yhm)>0) and (length(mm)>0) then
    begin
    sqlstr:='select * from [user] where ([user]='''+yhm+''')';
     with tquery.Create(nil) do
     try
     databasename:='whs';
     close;
     sql.Clear;
     sql.Add(sqlstr);
     open;
     if recordcount>0 then
     showmessage('the ID has been registered pleasse choose another')
      else
      begin
      sqlstr:='insert into [user] values('''+yhm+''','''+mm+''')';
      close;
      sql.Clear;
      sql.Add(sqlstr);
      open;
      showmessage('the ID is added');
      form2.newll;//函数调用
    end;
       finally
       free;
       end;
       end;
    end;
    procedure TForm2.Button2Click(Sender: TObject);
    begin
    close;
    end;end.
      

  5.   

    那提示出现'error creating cursor handle'是什么缘故?
      

  6.   

    唉,初学者,再看:
    procedure TForm2.Button1Click(Sender: TObject);
    var yhm,mm,sqlstr:string;
    begin
    yhm:=trim(edit1.Text);
    mm:=trim(edit2.Text);
    if length(yhm)<1 then
    showmessage('the ID is empty');
    if length(mm)<1 then
    showmessage('the password is empty');
    if (length(yhm)>0) and (length(mm)>0) then
    begin
    sqlstr:='select * from [user] where ([user]='''+yhm+''')';
     with tquery.Create(nil) do
     try
     databasename:='whs';
     close;
     sql.Clear;
     sql.Add(sqlstr);
     open;
     if recordcount>0 then
     showmessage('the ID has been registered pleasse choose another')
      else
      begin
      sqlstr:='insert into [user] values('''+yhm+''','''+mm+''')';
      close;
      sql.Clear;
      sql.Add(sqlstr);
      open;
      showmessage('the ID is added');
      form2.newll;//函数调用
    end;
       finally
       free;
       end;
       end;
    end;改为
    procedure TForm2.Button1Click(Sender: TObject);
    var yhm,mm,sqlstr:string;
    begin
    yhm:=trim(edit1.Text);
    mm:=trim(edit2.Text);
    if length(yhm)<1 then
    showmessage('the ID is empty');
    if length(mm)<1 then
    showmessage('the password is empty');
    if (length(yhm)>0) and (length(mm)>0) then
    begin
    sqlstr:='select * from [user] where ([user]='''+yhm+''')';
     with tquery.Create(nil) do
     try
     databasename:='whs';
     close;
     sql.Clear;
     sql.Add(sqlstr);
     open;
     if recordcount>0 then
     showmessage('the ID has been registered pleasse choose another')
      else
      begin
      sqlstr:='insert into [user] values('''+yhm+''','''+mm+''')';
      close;
      sql.Clear;
      sql.Add(sqlstr);
      ExecSQL; //改这句
      showmessage('the ID is added');
      form2.newll;//函数调用
    end;
       finally
       free;
       end;
       end;
    end;