Exam 学生成绩表
  No;       学生编号
  Code;     班别编码 
  T_No;     测验编号
  T_Name;   测验名称
  Subject;  测验科目
  Achieve;  成绩请问:我现在在写表Exam时,想先加入No,Code,T_No,T_Name,Subject的值。No是从学生基本表中获取学生编号No,而Code,T_No,T_Name,Subject都是一些常量,比如Code='2000103',T_No=1,T_Name='期中考’,Subject='语文',下面是我的写法,但是不对,请各位指点,或者给出另外不同的写法,要用ADO。谢谢,一定给分。
dm.Examadoq.Close;
dm.Examadoq.SQL.Clear;
strsql:='insert into exam(No,Code,T_No,T_Name,Subject) select No, Codetxt,Timetxt,TNametxt,Subtxt from basic';
dm.Examadoq.SQL.Add(strsql);
dm.Examadoq.ExecSQL;

解决方案 »

  1.   

    strsql:='insert into exam(no,code,t_no,t_name,subject) select no,''2000103'',1, ''期中考'',''語文'' from basic'
      

  2.   

    select No, Codetxt,Timetxt,TNametxt,Subtxt from basic insert into exam(No,Code,T_No,T_Name,Subject)
      

  3.   

    Codetxt:=edit26.Text+edit27.Text;
    Subtxt:=combobox4.text;
    Timetxt:=edit4.Text;
    TNametxt:=edit3.Text;
    dm.Examadoq.Close;
    dm.Examadoq.SQL.Clear;
    strsql:='select No,Codetxt,Timetxt,TNametxt,Subtxt from basic insert into exam(No,Code,T_No,T_Name,Subject)';
    dm.Examadoq.SQL.Add(strsql);
    dm.Examadoq.ExecSQL;
    这是我写的代码,其中的SQL语句已经按‘飞扬’所说的改了,还是不行,出现line1:incorrect syntax  near')'' 的错误。
      

  4.   

    注意:学生基本表BASIC里面没有Codetxt,Timetxt,TNametxt,Subtxt等字段,只有No字段,再请指教。Codetxt,Timetxt,TNametxt,Subtxt是设为常量,可以在程序运行时修改其值,不是固定一个值,所以不能用‘Reaky'所说的方式。
      

  5.   

    strsql:='select No,'+Codetxt+','+Timetxt+','+'TNametxt+','+Subtxt+' from basic insert into exam(No,'+Code+','+T_No+','+T_Name+','+Subject+')';
      

  6.   

    更正:
    insert into exam(No,'+Code+','+T_No+','+T_Name+','+Subject+')' strsql:='select No,'+Codetxt+','+Timetxt+','+'TNametxt+','+Subtxt+' from basic;
      

  7.   

    对不起,又错了
    strsql:=‘insert into exam(No,'+Code+','+T_No+','+T_Name+','+Subject+') select No,'+Codetxt+','+Timetxt+','+'TNametxt+','+Subtxt+' from basic;
    正常的insert 语句是这样的:
     insert into newtable (field1,field2,...) select field1,field2,...from table where ...;可以插入多行(如果select 语句返回多行的话)。
      

  8.   

    strsql:='insert into exam(No,'+Code+','+T_No+','+T_Name+','+Subject+') select No,'+Codetxt+','+Timetxt+','+'TNametxt+','+Subtxt+' from basic';
      

  9.   

    对不起,以上的写法都不对,我已经找到正确的写法。
      strsql:='insert into exam(No,Code,Term,T_No,T_Name,Subject) select No,'+''''+Codetxt+''''+','+''''+Termtxt+''''+','+edit4.text+','+''''+TNametxt+''''+','+''''+Subtxt+''''+' from disclass where code='+''''+Codetxt+''''+'';
      

  10.   

    insert into +select 如果select返回多行旧可以插入多行,但是有个前提条件,就是
    select 得到的数据的字段名必须是和insert into的表的字段名对应,这样才能一个一个对应目标字段插入,而且数据类型要相同或可以转换,比如a 表有code,name;b表有pcode,pname
    可以insert into a(code,name) select pcode as code,pname as name from b;
    如果a,b两表的字段名全相同,直接可以insert into a select * from b就把b都插入到a中了;这是对ado发送sql命令的理解,请指教!