代码之家  ›  专栏  ›  技术社区  ›  Toby Allen mercator

无法通过Delphi ADO从sql server中的文本字段中检索超过8个字节

  •  0
  • Toby Allen mercator  · 技术社区  · 14 年前

    德尔福7 SQLServer2000服务器

    代码如下。用于连接的连接字符串为。

    Provider=SQLOLEDB.1;Password=toflidium;Persist Security Info=True;User ID=sa;Initial Catalog=DocManager;Data Source=DELPHIBOX;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DELPHIBOX;Use Encryption for Data=False;Tag with column collation when possible=False
    

    测试用例的整个代码

    unit Unit1;
    
    interface
    
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, Grids, DBGrids, ADODB, DB, StdCtrls, DBCtrls;
    
    type
    TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Button1: TButton;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DataSource1: TDataSource;
    ADOTable1: TADOTable;
    DataSource2: TDataSource;
    DBGrid1: TDBGrid;
    ADOQuery1DocumentDataID: TAutoIncField;
    ADOQuery1VersionID: TIntegerField;
    ADOQuery1DocName: TStringField;
    ADOQuery1ActualDoc: TMemoField;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sql : string;
    begin
    
      sql := 'Select Top 1 * from tblDocumentData where VersionID = ' + ADOTable1.FieldByName('VersionID').asstring ;
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := sql;
    
      ADOQuery1.Open;   
    
      TBlobField(ADOQuery1.FieldByName('ActualDoc')).SaveToFile('c:\temp\temp\myfile' 
                        +  ADOTable1.FieldByName('VersionID').asstring + '.doc');
    
    end;
    
    end.
    

    这是写入dis的整个文件

    ÐÏࡱá
    

    我应该收到一份2万到5万字的文件。

    我重建了一台完整的机器,以查看我的开发人员机器上是否出现了错误,重建时也遇到了同样的问题。如果我只是建立并尝试对实时数据库,我有同样的问题,但较旧的版本(现在约4岁)的工作正常。

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Toby Allen mercator    14 年前

    我发现了问题。我必须移动机器后,以前的更新,而不是安装更新1德尔福7。

    安装了更新,它修复了问题-应该是最新的,然后我去寻找其他问题。

    希望这个答案能对其他人有所帮助。