procedure TArrangeFrm.Button2Click(Sender: TObject);begin
if (EditCourseName.Text <> '') then
    begin
      query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add('where 姓名=EdtStuName.Text');
      query1.SQL.Add('insert into 专业 values(专业=:a)');
      query1.Params.ParamByName('a').Value:=EditCourseName.Text;
    end
  else
    ShowMessage('您没有选中课程!!');
end;
end.
就是给学生添加专业课程的东西,能运行,但是运行了没什么效果,可能是sql那出错了吧,谁能帮帮我?

解决方案 »

  1.   

    楼主这是delphi&sql的基本问题,应该先学习基础的东西
    procedure TArrangeFrm.Button2Click(Sender: TObject); begin 
    if (EditCourseName.Text  < >  ' ') then 
        begin 
          query1.Close; 
          query1.SQL.Clear; 
          query1.SQL.Add( 'insert into 专业(CourseName) values(:a)'); 
          query1.Params.ParamByName('a').Value:=QuotedStr(EditCourseName.Text); 
        end 
      else 
        ShowMessage( '您没有选中课程!! '); 
    end; 
    end. 
      

  2.   

    连个表名都没看到,也没执行啥Sql语句,表名是啥
      

  3.   

          哈哈  LZ的写出这样的SQL语句,执行时还没有出错,真是匪夷所思!!
      

  4.   

    晕//楼主SQL都好像没写对啊...
    还有,执行的话,加上 execsql;
      

  5.   


    procedure TArrangeFrm.Button2Click(Sender: TObject); 
    begin 
    if (EditCourseName.Text  < >  ' ') then 
        begin 
          query1.Close; 
          query1.SQL.Clear; 
          query1.SQL.Add( 'insert into 专业 (CourseName) values(:a) '); //插入coursename字段为a的记录
          query1.Params.ParamByName( 'a ').Value:=trim(EditCourseName.Text); 
          query1.execsql; //执行SQL操作    
        end 
        else
           begin
           application.messagebox( '您没有选中课程!! ','提示','mb_ok+mb_iconinformation'); 
           end; 
    end. 
      

  6.   

    谢谢楼上的,我刚接触一个月···还是出错了,显示query1:parameter'a' not found
    还有就是在姓名栏离输入姓名的情况下,输入专业,再点选课,就把这门课加入到那个姓名里面!
    Arrangefrm.Query1.SQL.Add( 'insert into 选课表(专业) where 姓名=EdtStuName.Text values(专业=:a) ');          
    where 姓名=EdtStuName.Text加的对么?
    query1:parameter'a' not found我也不知道怎么解决
      

  7.   

    要是写成ArrangeFrm.query1.SQL.Add('insert into 选课表(专业) where 姓名=EdtStuName.Text values(EditCourseName.Text)');的话,
    提示缺少values关键字!
      

  8.   

    Arrangefrm.Query1.SQL.Add(  'insert into 选课表(专业) values(:a)  '); 
    单独的insert语句没有where。
    前面的选课表(专业)中的专业是要插入的列,value()中不用加“专业=”了,只写列值就可以了。
      

  9.   

    谢谢   可是专业插入的位置一定要对样上那个学生的名字啊!姓名=EdtStuName.Text 应该加在哪?
      

  10.   

    Arrangefrm.Query1.SQL.Add(   'insert into 选课表(姓名,专业) values(' + QuotedStr(EdtStrName.Text) + ',:a)   ');
    在插入操作时,要增加一行,所以你就把这个同学的信息都再插入一次,呵呵。
      

  11.   

    不管怎么改,他总是提示提示缺少values关键字!!
      

  12.   

    procedure TArrangeFrm.Button2Click(Sender: TObject); 
    var
      sqltext:string;
    begin 
    if (EditCourseName.Text  < >  ' ') then 
        begin 
          sqltext := Format('insert into 专业(CourseName) values(%s) ',[Quotedstr(EditCourseName.text)]);
          query1.Close; 
          query1.SQL.Clear; 
          query1.SQL.Add( sqltext); //插入coursename字段为a的记录
          query1.execsql; //执行SQL操作 
           Close   
        end 
        else
           begin
           application.messagebox( '您没有选中课程!! ','提示','mb_ok+mb_iconinformation'); 
           end; 
    end.