在组织SQL串的时候感觉长度有限制,前几个循环都没有问题,但是后来就不行了
最后结果每次都是这样:
“CREATE TABLE SUB资产负债表.[dbo].[d:\资产负债表.xls]([报表时间] [char] (10),[报表类型] [char] (10),[资产] [float],[ 流动资产] [float],[  货币资金(元)] [float],[  短期投资(元)] [float],[  减:短期投资跌价准备(元)] [float],[  短期投资净额(元)] [float],[ ”部分代码如下:
For j = 2 To rows - 1
    createTableSql = createTableSql + "[" + Grid1.TextMatrix(0, j) + "] " + "[float]" + ","
Next j

解决方案 »

  1.   

    随后就是使用createTableSql 的值,没有什么其他操作了
      

  2.   

    还是多贴点代码吧不然就直接mid$(createTableSql ,1,len(createTableSql)-2)...........
      

  3.   

    1.createTableSql在FOR …… NEXT之前清一次:createTableSql=""
    2.NVARCHAR最大4000字符,VARCHAR最大8000字符,LZ拼出的字符串有没有超过这个长度?
      

  4.   

    连接字符串用stringbuilder。对超长的字符串能快很多。
      

  5.   

    NVARCHAR最大4000字符,VARCHAR最大8000字符,LZ拼出的字符串有没有超过这个长度?我估计楼主的定义都不到这个数字,哈哈另外,NVARCHAR也是8000,估计你的数据库没打补丁;
      

  6.   

    TO:samwzhang(分全给我)
    (1)字符串超长是很常见的事啊,尤其是通过循环得到的字符串,LZ可以在CNN.excute之前中断一下,把该串COPY下来,放到查询分析器里执行一下即知;
    (2)"NVARCHAR也是8000",不明白。假如LZ是这样实现程序查询的:在数据库端建一个存储过程如:
    CREATE PROCEDURE cus_temp@SQL NVARCHAR(4000) ASEXEC SP_EXECUTESQL @SQLGO从应用程序中传入一个@SQL ,如果你的@SQL字符串超过4000,你执行看看会是什么结果?
    ------------------------------------
    因为LZ给的资料就这么多,因此很多地方比如数据库结构、查询方式等等都是猜测。