q

//我在运行以下程序时,出现了这样的错误提示:incorrenct syntax near '餐饮信息设置'
    我不知道该怎么改,请高手指点一下,谢谢!
unit permission;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, CheckLst;type
    Tpermitt = class(TForm)
    CheckListBox1: TCheckListBox;
    TreeView1: TTreeView;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  permitt: Tpermitt;
  i:integer;
  qxid:array[0..27] of integer;
implementation
uses datadm;
{$R *.dfm}
procedure Tpermitt.FormShow(Sender: TObject);
var
 mynode:Ttreenode;
 mynode1,mynode2,mynode3,mynode4:Ttreenode;
begin
   treeview1.Items.Clear;
   mynode:=Treeview1.Items.Add(Treeview1.TopItem,'东力餐饮服务有限公司');
   mynode1:=Treeview1.Items.AddChild(mynode,'经理室');
   mynode2:=Treeview1.Items.AddChild(mynode,'行政部');
   mynode3:=Treeview1.Items.AddChild(mynode,'财务处');
   mynode4:=Treeview1.Items.AddChild(mynode,'客服中心');
   with dm1.query5 do
        begin
            close;
            sql.Add('select * from userinfo');
            open;
            first;
          while not dm1.query5.Eof do
              begin
                 if dm1.query5.FieldByName('部门').Value='经理室' then
                    Treeview1.Items.AddChild(mynode1,dm1.query5.fieldbyname('姓名').AsString);
                 if dm1.query5.FieldByName('部门').Value='行政部' then
                    Treeview1.Items.AddChild(mynode2,dm1.query5.fieldbyname('姓名').AsString);
                 if dm1.query5.FieldByName('部门').Value='财务处' then
                    Treeview1.Items.AddChild(mynode3,dm1.query5.fieldbyname('姓名').AsString);
                 if dm1.query5.FieldByName('部门').Value='客服中心' then
                    Treeview1.Items.AddChild(mynode4,dm1.query5.fieldbyname('姓名').AsString);
                    dm1.query5.Next;
              end;
end;
end;
procedure Tpermitt.BitBtn2Click(Sender: TObject);
begin
 self.Close;
end;
procedure Tpermitt.BitBtn3Click(Sender: TObject);
begin
  for i:=0 to CheckListBox1.Items.Count-1 do
     begin
       CheckListBox1.Checked[i]:=true;
     end;
end;
procedure Tpermitt.BitBtn4Click(Sender: TObject);
begin
  for i:=0 to checklistbox1.Items.Count-1 do
    begin
       checklistbox1.Checked[i]:=false;
    end;    
end;
procedure Tpermitt.BitBtn1Click(Sender: TObject);
begin
  for i:=0 to checklistbox1.Items.Count-1 do
     begin
        if checklistbox1.Checked[i] then
           qxid[i]:=1
        else
           qxid[i]:=0;
     end;
     with dm1.query5 do
         begin
            sql.Clear;
            sql.Add('update qx set');
            sql.add(' 餐饮信息管理='+inttostr(qxid[0]));
            sql.add(' 餐饮信息设置='+inttostr(qxid[1]));
            sql.Add(' where 用户名=:treeid');
            parameters.ParamByName('treeid').Value:=treeview1.Selected.Text;
            ExecSQL;
         end;
end;
end.

解决方案 »

  1.   

    你的SQL应该有问题
    sql.Add('update qx set');
                sql.add(' 餐饮信息管理='+inttostr(qxid[0]));
                sql.add(' 餐饮信息设置='+inttostr(qxid[1]));
                sql.Add(' where 用户名=:treeid');
                parameters.ParamByName('treeid').Value:=treeview1.Selected.Text;
                
    --------------
    改成
    sql.Add('update qx set');
                sql.add(' 餐饮信息管理='+inttostr(qxid[0]));
                sql.add(' ,餐饮信息设置='+inttostr(qxid[1]));//这句加个逗号
                sql.Add(' where 用户名=:treeid');
                parameters.ParamByName('treeid').Value:=treeview1.Selected.Text;
                
      

  2.   

    在用update更新多个字段的时候
    字段之间好象要用‘,’隔开的
    所以要在
    sql.add(' 餐饮信息管理='+inttostr(qxid[0]));//末尾加逗号
    sql.add(' 餐饮信息设置='+inttostr(qxid[1]));//或者开始加逗号完毕