在mshflexgrid中和text想结合实现修改数据,但修改的数据无法保存到数据库中请高手贴代码

解决方案 »

  1.   

    mshflexgrid不懂,有关text的文章参考如下:两个支持text字段内文字替换的存储过程
    csdn realgz
    (http://topic.csdn.net/u/20080505/20/d2dffbbe-6d6b-41cf-b29a-41149540eafa.html?seed=562172452)text与ntext字段的复制和合并处理示例--1. 把一个表的text数据复制到另一个表。
    --测试数据
    CREATE TABLE #a(id int,a text)
    INSERT #a SELECT 1,'AA'
    UNION ALL SELECT 2,'BB'CREATE TABLE #b(id int,b text)
    INSERT #b SELECT 1,'XX'--用#a.a替换#b.b的数据,条件是#a.id=#b.id
    UPDATE b SET b=a.a
    FROM #a a,#b b
    WHERE a.id=b.id--把#a的数据复制到#b,条件是#a.id不在#b.id中
    INSERT #b(id,b) SELECT id,a FROM #a a
    WHERE NOT EXISTS(SELECT * FROM #b WHERE id=a.id)--显示处理结果
    SELECT * FROM #b
    DROP TABLE #a,#b
    /*--结果
    id          b
    ---------------- -------
    1           AA
    2           BB
    --*/
    GO
    /*===============================================*/
    --2. 将tb表中的col1及col2列中的数据合并到col列中,并且在合并的数据前后加上列标识。
    --测试数据
    CREATE TABLE tb(col text,col1 text,col2 text)
    INSERT tb SELECT 'a' ,NULL,'c2'
    UNION ALL SELECT NULL,'b2','c2'
    UNION ALL SELECT ''  ,'b3',NULL
    GO--更新处理
    DECLARE @p binary(16),@p1 binary(16),@p2 binary(16)
    DECLARE tb CURSOR LOCAL
    FOR
    SELECT TEXTPTR(col),TEXTPTR(col1),TEXTPTR(col2) FROM tb
    OPEN tb
    FETCH tb INTO @p,@p1,@p2
    WHILE @@FETCH_STATUS=0
    BEGIN
    IF TEXTVALID('tb.col',@p)=0
    BEGIN
    UPDATE tb SET col='' WHERE CURRENT OF tb
    UPDATE tb SET @p=TEXTPTR(col) WHERE CURRENT OF tb
    END
    IF TEXTVALID('tb.col1',@p1)=1
    BEGIN
    UPDATETEXT tb.col @p NULL 0 '<col1>'
    UPDATETEXT tb.col @p NULL 0 tb.col1 @p1
    UPDATETEXT tb.col @p NULL 0 '</col1>'
    END
    IF TEXTVALID('tb.col2',@p2)=1
    BEGIN
    UPDATETEXT tb.col @p NULL 0 '<col2>'
    UPDATETEXT tb.col @p NULL 0 tb.col2 @p2
    UPDATETEXT tb.col @p NULL 0 '</col2>'
    END
    FETCH tb INTO @p,@p1,@p2
    END
    CLOSE tb
    DEALLOCATE tb
    GO--显示结果
    SELECT * FROM tb
    DROP TABLE tb
    /*--结果
    col                              col1            col2 
    -------------------------------------- ----------------------- ---------------------- 
    a<col2>c2</col2>                 NULL           c2
    <col1>b2</col1><col2>c2</col2>    b2              c2
    <col1>b3</col1>                  b3              NULL
    --*/
    /*--示例说明:
    下面的代码演示了转换pubs数据库的pub_info表中的pr_info列(text类型)为image类型
    及将转换结果再转换为text的处理。
    --*/
    USE pubs--创建一个临时表,用来转换 pub_info.pr_info 列值
    CREATE TABLE #t(id int,a image,b text)
    GO--将 pub_info.pr_info 转换到 #t.a 列中
    DECLARE @id int,@ps binary(16),@pd binary(16)
    DECLARE tb CURSOR LOCAL 
    FOR
    SELECT pub_id,TEXTPTR(pr_info) FROM pub_info
    WHERE TEXTVALID('pub_info.pr_info',TEXTPTR(pr_info))=1
    OPEN tb
    FETCH tb INTO @id,@ps
    WHILE @@FETCH_STATUS=0
    BEGIN
    INSERT #t VALUES(@id,0x,'')
    SELECT @pd=TEXTPTR(a) FROM #t
    WHERE TEXTVALID('#t.a',TEXTPTR(a))=1
    IF @@ROWCOUNT>0
    UPDATETEXT #t.a @pd 0 NULL pub_info.pr_info @ps
    FETCH tb INTO @id,@ps
    END
    CLOSE tb
    DEALLOCATE tb
    GO--将 #t.a 转换到 #t.b 列中
    DECLARE @ps binary(16),@pd binary(16)
    DECLARE tb CURSOR LOCAL 
    FOR
    SELECT TEXTPTR(a),TEXTPTR(b) FROM #t
    WHERE TEXTVALID('#t.a',TEXTPTR(a))=1
    AND TEXTVALID('#t.b',TEXTPTR(b))=1
    OPEN tb
    FETCH tb INTO @ps,@pd
    WHILE @@FETCH_STATUS=0
    BEGIN
    UPDATETEXT #t.b @pd 0 NULL #t.a @ps
    FETCH tb INTO @ps,@pd
    END
    CLOSE tb
    DEALLOCATE tb
    GO--显示转换结果
    SELECT * FROM #t
    DROP TABLE #t
      

  2.   

    mshflexgrid的每一行一列取出输入 组成sql插入到数据库 mshflexgrid.TextMatrix(row,col)