SqlStr := 'Insert Into Sys_t_Tables (TablesID,SAPTablesCode,TablesCode,TablesName,SortNO,Re,Status) Values(7,'T002','T002','4',3,'4','1') #13#10 insert into TABLES_MODULE_RELATION values (7,7,1)';
function TdmPubData.ExecSqlNoTrans(SqlStr: WideString;cmd: TADOCommand;
  const IsLocal: boolean;aShowMsg:Boolean): boolean;
var lstSql: TStringList;
    i,iRowCount: integer;
    OldCur:TCursor;
begin
  Result := false;
  OldCur:=Screen.Cursor;
  Screen.Cursor:=crHourGlass;
  sErrInfo:= '';
  if IsConnected(IsLocal) then
  begin
    cmd.Connection := GetConnection(IsLocal);
    lstSql := TStringList.Create;
    try
      lstSql.Text := SqlStr;
      try
        for i:=0 to lstSql.Count-1 do
        begin
          cmd.CommandText := lstSql[i];
          if length(trim(cmd.CommandText))<2 then Continue;
          cmd.Execute(iRowCount);
        end;
        Result := true;
      except
        sErrInfo := lstSql[i];   
        if aShowMsg then
          application.MessageBox(pChar(sErrInfo),'系统提示:',mb_IconInformation);
      end;
    finally
        lstSql.Free;
        Screen.Cursor:=OldCur;
    end;
  end;
end;

解决方案 »

  1.   

    lstSql只是一行呀,你设断点跟踪看看
      

  2.   

    insert xxx; 要用分号隔开
    insert yyyy;  
      

  3.   

    SQL SERVER可以不用分号吧 
      

  4.   

     我用 "#13#10 "搁开了呀,我用的是mysql数据库
      

  5.   

    你的SqlStr 加到list中仍然只有一条
      

  6.   

    没有提示什么错误信息,只是把第一条给执行了,第二条SQL没有被执行!竟然通过!
      

  7.   

     lstSql.Text := SqlStr;lstSql.Delimiter:=#13;这样还不行么?
      

  8.   

    你的sqlstr错了的,把#13#10放引号里,都被当成字符串的一部分了
    一般都是 str1 + #13#10 + str2 这样子拼凑的。你可以写个函数,以分号作为分隔符,提取出两条insert语句然后逐条执行
    但是为什么你一定要将SQL语句写死呢?char *GetToken(char *s1,char *s2) 
    {
        char *str1,*str2;
        static char str[255];    str1=strstr(s1,s2); 
        if (str1==NULL)
        {
            strcpy(str,s1);
            s1[0]='\0';
        }
        else
        {
            s1[str1-s1]='\0';  
            strcpy(str,s1);   
            strcpy(s1,str1+strlen(s2));
        }
        return str;
    }这是个C代码,可以转换成delphi,可以根据字符来分割字符串