delphi,Access数据库Close;SQL.Clear;
SQL.Text := 'insert into AREANAME(AREANAME,AREANO,MEMO) '
        + 'values(:areaname,:areano,:memo)';Parameters.ParamByName('areaname').Value := strAreaName;
Parameters.ParamByName('areano').Value := '001';     //备用字段
Parameters.ParamByName('memo').Value := '';          //备用字段
ExecSQL;表里还有一个自增字段这里老提示是insert into语法错误,但是我觉有这个语句并没有什么问题了,请问这到底是怎么回事?

解决方案 »

  1.   

    是不是insert进去字段的数据类型不对
      

  2.   

    语法错误
    SQL.Text := 'insert into AREANAME(AREANAME,AREANO,MEMO) ' 
            + 'values(:areaname,:areano,:memo)'; 
    是不是上面两句直接没有空格 呀,就是values和他前面的'('之间没空格
      

  3.   

    有空格的,我还特意用ShowMessage看了Text的内容
      

  4.   

    Debugger Exception NotificationProject GasMeterSys.exe raised exception class EOleException with message 'INSERT INTO 语句的语法错误。'.Process stopped. Use Step or Run to continue.这是错误内容
      

  5.   

    既然是语法错误,就有两种可能
    1.语句又问题,你贴出来的语句,确实没有空格
    2.把你的字段吗改一下,第一,尽量不要和表名一样,第二,你的字段名可能和保留字冲突,memo这个字段名很可能有问题
      

  6.   

    整句话我用ShowMessage看到的是:
    insert into AREATYPE(AREANAME,AREANO,MEMOINFO) values(:areaname,:areano,:memoinfo)其中根据楼上几个朋友的建议改了表名和表结构,但是结果还是一样报语法错误
      

  7.   

    没有用过Access,但是在插入字符时,插入的值是否需要用单引号包起来?
      

  8.   

    改为
    SQL.Text:='insert into AREANAME(AREANAME,AREANO,MEMO) ' 
            + 'values('''+strAreaName+''',''001'','''')'; ExecSQL; 
    试一下~~
      

  9.   

    你写错了哦``
    insert into AREATYPE(AREANAME,AREANO,MEMOINFO) values(:areaname,:areano,:memoinfo)--写出来应该是values('','','');
    当然里面都是varchar类型,int类型写出来应该是(1,2,3)之类的。
      

  10.   

    给你个例子,自己学习一下``
    with ADOQuery1 do
    begin
    close;
    SQL.Clear;
    sql.Add('insert into grade values(:sno,:kemu,:grade)');
    parameters.ParamByName('sno').Value :=trim(edit1.text);
    parameters.ParamByName('kemu').Value :=trim(edit2.text);
    parameters.ParamByName('grade').Value :=trim(edit3.text);
    execsql;
    end;