在三层架构中,客户端登陆代码:
procedure TForm2.Button1Click(Sender: TObject);
 const
    sSql :string = 'select Password from Popedom where';
  var
    sSelect,UserPass,UserName,Power : string;
    i,j,t:integer;begin
  if (Form2.NameEdit.Text <> '') and (Form2.PassEdit.Text <> '') then
    begin
      if Form2.ComboBox1.Text = '一般用户' then
         t := 1
         else t:=0 ;
      UserName := Form2.NameEdit.Text;
      sSelect:=sSql+' UserName='''+UserName+'''';
      CheckClient.Close;
      CheckClient.CommandText := sSelect;
      CheckClient.Open;       //如果有这个记录
      if CheckClient.RecordCount=1 then
        begin
          UserPass := CheckClient.FieldByName('PassWord').asString;
          Power := CheckClient.FieldByName('Mark').AsString;
        end;
      i:= CompareStr(UserPass,Form2.PassEdit.Text);
      j:= CompareStr(inttostr(t),Power);
      if (i=0) and (j=0) then
          if t=0 then
            begin
              Form3.Show;
              Form2.Hide;
            end
            else
              begin
                Form4.Show;
                Form2.Hide;
              end
        else
          MessageDlg('密码或权限错误!', mtWarning, [mbOK], 0)
    end
  else
    MessageDlg('用户名或密码不能为空!',mtWarning,[mbOK],0)
end;表定义:
   create table Popedom(
     UserName varchar2(15) primary key,
     Password varchar2(15) not null,
       char(1));
当登陆时报错,project client.exe raised exception class eoleexception
with message'commandtext changes are not allowed'.process stopped.
use step or run to continue.
谁能告诉我错在那儿了?

解决方案 »

  1.   

    要修改服务器段的数据提供者的command属性
      

  2.   

    将ClientDataSet对应的DataSetProvider组件的Options的poAllowCommandText设为True;
      

  3.   

    将ClientDataSet对应的DataSetProvider组件的Options的poAllowCommandText设为True;
    再不行的话,来个狠的,把对应的应用服务器程序的Dataset组件,DataSetProvider组件,甚至客户端的ClientDataset组件删除,然后再设置过一遍。
    我菜,就没办法时就用菜方法,见谅啦。
      

  4.   

    将ClientDataSet对应的DataSetProvider组件的Options的poAllowCommandText设为True;,不改成True就能使用SQL语句取数据