Tempquery.FieldByName(Fieldname).AsString
如果字段Fieldname长度为1500是否不能得到值,怎样才能得到比较长的字段中的值??显示错误为“Invalid BLOB handle in record buffer”

解决方案 »

  1.   

    你居然搞这么长的字段名,厉害
    可以用字段的位置进行过访问
    Tempquery.Fields[数据集中序号].AsString
      

  2.   

    >>应该是这个字段中的值有1500
    沒測試過, 感覺應該沒問題!
      

  3.   

    我是楼主
    TO aiirii(ari)但是不知道为什么,就是得不到值是不是string类型有长度限制???
      

  4.   

    string其实是个变相指针,相当与PCHAR,所以不会有长度问题的。
    你的数据库是ORACLE还是SQLSERVER?
      

  5.   

    我是楼主To:lonaerd(罗纳尔多) 
    我的数据库是oracle
    To:47522341(睡到8:30) 
    将数据库的字段属性设置成Text吗?
    我不知道如何设置,还要请教!
      

  6.   

    这个字段大小是Varchar2(1500)!
    还要其他设置吗?
      

  7.   

    请问你FieldName是一个什么样类型的字段?
      

  8.   

    時時Tempquery.FieldByName(Fieldname).Value
      

  9.   

    To:DongXF(孔雀东南飞) 
    试过了,也不行!
      

  10.   

    Oracle中没有TEXT型,只有CLOB和BLOB。VARCHAR(1500)是允许的,估计错误不在数据库。
      

  11.   

    我也觉得肯定不会是数据库的错误,而是delphi和数据库的匹配出现了问题有谁做过大字段的读取,请帮助我一下!
      

  12.   

    你是不是把字段属性设为blob了
      

  13.   

    To : xdxycx(何凡) 我创建数据库的时候使用的是oracle的缺省设置
    是否数据库字段的缺省设置是blob
    在哪里可以修改字段属性??
      

  14.   

    你没有用管理员工具打开ORACLE吗?装一个呀
      

  15.   

    To : lonaerd(罗纳尔多)我Oracle不是很熟,能告诉我如何操作吗?
      

  16.   

    varchar好像不支持那么多的字符吧
      

  17.   

    这个对你应有启发
    我们可以利用OleContainer来打开保存数据,特别是保存Word文件,但是大部分的情况下,用Word的话,需要生成临时文件,然后载入,这样在性能方面有很大的影响!那么有没有可能不用临时文件而把Word文档保存到数据库中呢?可以,利用流就可以了!将BLob字段中的内容取出, 在OleContainer中显示。VarOleStream : TMemoryStream;begin// OleContainer1OleStream := TMemoryStream.Create;try(Table1.FieldByName('Text') as TBlobField).SaveToStream(OleStream);OleStream.Position := 0;OleContainer1.LoadFromStream(OleStream);OleContainer1.DoVerb(1); //显示finallyOleStream.Free;end;end;
      

  18.   

    你应将此字段的类型改成BloB,因为数据太多。
    如何取看下面:
    var
      I:integer;  
      alist:Tlist;
    begin
      alist :=GetTemperatureData(FieldByName('PestSet') as TBlobField);
      For I:=0 to alist.count do
      begin
        //放到指定的变量即可 
      end;  
    //从数据库得到数据
      

  19.   

    To:saien(有问必答) 我以前没有使用过BLOB类型,如何往BLOB类型的字段中插入值?insert into aaa(test) values('testtest');//无法插入数据库
    其中表名是aaa,字段test的类型是BLOB
    sqlplus报错是SQL> insert into aaa(test) values('testtest');
    insert into aaa(test) values('testtest')
                                 *
    ERROR 位于第 1 行:
    ORA-01465: invalid hex number
      

  20.   

    用TBLOBStream来读一下试试看var
      tmp: TBlobStream;
      Str: TStringStream;
    begin
      tmp:=TSlobStream.create(Query.FieldByName('test'), bmRead{//??});
      Str.CopyFromStream{//??}(tmp, tmp.Size);
      ShowMessage(Str.DataString{//??});
    end;
      

  21.   

    Blob就要读到StringStream再转换为String了
    操作与其他一样的,我没有Oracle那个大家伙,没法做了
      

  22.   

    Oracle没用过呀,不大好办,帮忙UP,不好意思,接分来了