用TBlob(parambyname('文件内容'))=?试一下!

解决方案 »

  1.   

    TStream *Stream;
    Table1->Edit();
    Stream=Table1PHOTO->DataSet->CreateBlobStream(Table1PHOTO,bmWrite);
    //Table1PHOTO is TFields type
    try
    {
      Graphic->SaveToStream(Stream);
    }
    catch(...)
    {
      Stream->Free();
    }
    Table1->Post();
      

  2.   

    各位,帮助我看不懂,并且提交方法也不想用TABLE1,各位能具体一点吗?
      

  3.   

    使用字段的ASSTREAM方法来存储流内的数据:
       query.close;
       query.sql.clear;
       query.sql.add(insert into tab_your set  field_your=:num);   
       query1.parambyname('fieldname').AsBlob:=streamname;
       query1.open;
    try and think!!
      

  4.   

    我已试过,asblob是STRING型,不能使用!!
      

  5.   

    我用了一种语句:TBlobField(dataunit.DataModule1.Query3.Parambyname('文件内容')).LoadFromStream(file1);
    其中file1为一变量,能通过编译,但使用时出错。怎么回事?
      

  6.   

    dataunit.DataModule1.Query3.Parambyname('文件内容')).SetData(file1.momery);
      

  7.   

    jingpingyi:你的方法能在编译中通过,但程序中出错,说不知道字段的类型。
      

  8.   

    TBlobField(dataunit.DataModule1.Query3.Parambyname('文件内容')).SetData(file1.momery); 
      

  9.   

    dataunit.DataModule1.Query3.Parambyname('文件内容').LoadFromStream(file1,ftmemo);
      

  10.   

    jingpingyi:你的语句前面加了TBlobField后编译反而出错,说MEMORY没有定义
      

  11.   

    flyby(小维龙) :你的方法也不能通过
      

  12.   

    var MemSize: Integer;
        Buffer: PChar;
        file1: TFileStream;
        Stream: TBlobStream;Stream := TBlobStream.Create(FieldByName('文件内容') as TBlobField, bmWrite)
    MemSize := file1.Size;
    Inc(MemSize
    Buffer := AllocMem(MemSize);
    try
        Stream.Seek(0, soFromBeginning); 
        file1.Read(Buffer^,MemSize);
        Stream.Write(Buffer^,MemSize);
    finally
        file1.Free;
        Stream.Free;
    end;
      

  13.   

    如果是binary型数据 用Image类型 可用 xiaohewanwan(小何) 的方法
    text 类型:
     var Value:string;
     dataset.append
     dataset.fieldbyname('fieldname').asstring:=Value;
     dataset.post;
     已在SQL Server7.0下 OK
      

  14.   

    lwm8246(lwm8246) :我的语法是采用SQL语句提交,如何做到?
      

  15.   

    //Text:
     var Value: string;
     with query do
     begin
      close;
      sql.clear;
      sql.add('Insert into your_table_Name (fieldName) ');
      sql.add('values(:@P1)');
      params[0].asstring:=Value;
      execsql;
     end;
      

  16.   

    lwm8246(lwm8246) :你的方法对于普通数据是可以,但我的数据却是一个文件呀,你先试一下。
      

  17.   

    我有例子;
     环境: NT4.0+SQL Server 7.0 delphi5.0 编译 OK
     用 Image字段 可以存放文件
     测试过 *.bmp,*.jpg,*.txt,*.doc,*.exe 等等 都可以
    有兴趣可联系 [email protected]
     
      

  18.   

    //SQL Server 的text类型只能接收Unicode字符,如果您的文件有非unicode字符
    //当然会出错,如果文件中没有非unicode字符,用下面的方法就应该不会有问题。var
      filename: string;...procedure TForm1.Button1Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then
        filename := opendialog1.FileName;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      with Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('insert into tbl_text');
        SQL.Add('values(:bh,:text)');
        ParamByName('bh').asstring := '1';
        parambyName('text').LoadFromFile(filename,ftMemo);
        ExecSQL;
      end;
    end;//对 .doc,.xls 文件会出错,因为文件中有非法字符。//建议:如果您要保存的文件类型不定,最好用 binary 类型的字段